public static List <Vendedor> ObtenerVendedoresPorFecha(DateTime fecha) { if (fecha == null) { fecha = DateTime.Today; } var vendedoresPresentes = new List <string>(); try { using (var connection = new SqlConnection(AccesoDB.SqlPreventa)) { SqlParameter[] parameters = { new SqlParameter("@pFechaDesde", fecha), new SqlParameter("@pFechaHasta", fecha.AddDays(1)) }; var query = @"select p.usuario from posiciongps p inner join vendedores v on p.usuario = v.usuario where fecha >= @pFechaDesde and fecha < @pFechaHasta and v.borrado = 0 group by p.usuario"; var command = AccesoDB.CrearComando(connection, query, CommandType.Text, parameters); connection.Open(); using (var dr = command.ExecuteReader()) { while (dr.Read()) { vendedoresPresentes.Add(dr.GetString(0)); } } } } catch (Exception ex) { throw new Exception("Error al obtener vendedores. " + ex.Message + "\n\nCtrlVend_ObtenerVendedoresPorFecha"); } var vendedores = new List <Vendedor>(); foreach (var codigo in vendedoresPresentes) { var vendedor = ControladorVendedores.ObtenerVendedor(codigo); ControladorZonas.CargarZonasDelVendedor(vendedor, fecha); vendedores.Add(vendedor); } return(vendedores); }
public static void CalcularBultosYPesos(Vendedor vendedor, DateTime fechaDesde, DateTime fechaHasta) { vendedor.Posiciones.Clear(); ControladorVendedores.CargarPosiciones(vendedor, fechaDesde, fechaHasta); var listaDeClientesVisitados = vendedor.Posiciones.Where(p => p.Cliente != "" && p.Estado == Estado.CHECKOUT_CLIENTE).ToList(); //tomo todos los checkouts donde tengo almacenados los pesos y los bultos var listaCodigosRevisados = new List <string>(); //almaceno aqui los codigos de los clientes que voy revisando. ocurre que hay veces que se registran mas de una vez el mismo cliente, con cantidades distintas de pesos y bultos. debo tomar siempre el último registro de estos. var listaFinalCheckouts = new List <Posicion>(); foreach (var item in listaDeClientesVisitados) { var cliente = item.Cliente; if (!listaCodigosRevisados.Contains(cliente)) //verifico que no haya analizado a este cliente aun { listaCodigosRevisados.Add(cliente); //procedo a agregarlo para saltear la proxima ocurrencia en la lista var todosLosRegistrosDeEsteCliente = listaDeClientesVisitados.Where(p => p.Cliente == cliente).ToList(); listaFinalCheckouts.Add(todosLosRegistrosDeEsteCliente.OrderByDescending(t => t.Fecha).FirstOrDefault()); } //listaDeClientesVisitados.RemoveAll(p => p.Cliente == cliente); } vendedor.Pesos = listaFinalCheckouts.Sum(p => p.PesosCompra); vendedor.Bultos = listaFinalCheckouts.Sum(p => p.BultosCompra); }