Exemplo n.º 1
0
        public static void CargarZonasDelVendedor(Vendedor vendedor, DateTime date)
        {
            var codigoVendedor = vendedor.Codigo;
            var diaVisita      = DatetimeToDiaSemana.Convertir(date);

            try
            {
                using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
                {
                    connection.Open();
                    AccesoDB.ComandosFox(connection);
                    var query   = string.Format("SELECT zonas.codigo as zona, zonas.empresa_rel as empresa, zonas.empresa as division, zonas.nombre as nombre FROM zonas INNER JOIN cron_ped ON zonas.empresa_rel = cron_ped.empresa AND zonas.empresa = cron_ped.prov AND zonas.codigo=cron_ped.zona AND '{0}'$cron_ped.pedido WHERE zonas.activada=1 and (zonas.operator='{1}' or zonas.operator2 = '{1}') and zonas.empresa_rel = '{2}' group by zonas.codigo", diaVisita, codigoVendedor, vendedor.CodigoEmpresa);
                    var command = AccesoDB.CrearComando(connection, query, CommandType.Text);
                    using (var dr = command.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            var zona = new Zona();
                            zona.Codigo         = dr.GetString(0).Trim();
                            zona.CodigoEmpresa  = dr.GetString(1).ToString().Trim();
                            zona.CodigoDivision = dr.GetString(2).Trim();
                            zona.Nombre         = dr.GetString(3).Trim();
                            vendedor.Zonas.Add(zona);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 2
0
        public static List <Actividad> ObtenerActividades()
        {
            var lista = new List <Actividad>();

            try
            {
                using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
                {
                    var query   = "SELECT codigo, nombre FROM ramos order by nombre";
                    var command = AccesoDB.CrearComando(connection, query, CommandType.Text);
                    connection.Open();
                    AccesoDB.ComandosFox(connection);
                    using (var dr = command.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            var actividad = new Actividad();
                            actividad.Codigo   = dr.GetString(0).Trim();
                            actividad.Nombre   = dr.GetString(1).Trim();
                            actividad.Clientes = new List <Cliente>();
                            lista.Add(actividad);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(lista);
        }
Exemplo n.º 3
0
        public static bool ActualizarLatLngCliente(string codigo, PointLatLng coordenada, string calle, int nro)
        {
            var ok    = false;
            var query = string.Empty;

            try
            {
                using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
                {
                    query = string.Format(@"UPDATE clientes SET latitud =?, longitud =? where codigo = ?");
                    var lat        = Math.Round(coordenada.Lat, 12, MidpointRounding.AwayFromZero);
                    var lng        = Math.Round(coordenada.Lng, 12, MidpointRounding.AwayFromZero);
                    var parameters = new OleDbParameter[] { new OleDbParameter("@lat", lat), new OleDbParameter("@lng", lng), new OleDbParameter("@codigo", codigo) };
                    var command    = AccesoDB.CrearComando(connection, query, CommandType.Text, parameters);
                    var res        = command.ExecuteNonQuery();
                    if (res > 0)
                    {
                        ok = true;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(ok);
        }
Exemplo n.º 4
0
        public static List <Zona> ObtenerZonas()
        {
            var zonas = new List <Zona>();

            try
            {
                using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
                {
                    var query   = @"SELECT codigo, empresa_rel, empresa, nombre FROM zonas WHERE activada = 1 AND (operator <> ' ' OR operator2 <> ' ') order by codigo";
                    var command = AccesoDB.CrearComando(connection, query, CommandType.Text);
                    connection.Open();
                    AccesoDB.ComandosFox(connection);
                    using (var dr = command.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            var zona = new Zona();
                            zona.Codigo         = dr.GetString(0).Trim();
                            zona.CodigoEmpresa  = dr.GetString(1).ToString().Trim();
                            zona.CodigoDivision = dr.GetString(2).Trim();
                            zona.Nombre         = dr.GetString(3).Trim();
                            zonas.Add(zona);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(zonas);
        }
Exemplo n.º 5
0
        public static List <PointLatLng> ObtenerVerticesZona(string zona, string empresa, string division)
        {
            var lista = new List <PointLatLng>();

            try
            {
                using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
                {
                    var query   = string.Format("SELECT latitud, longitud FROM zonas_vertices where zona='{0}' and empresa='{1}' and subempresa='{2}'", zona, empresa, division);
                    var command = AccesoDB.CrearComando(connection, query, CommandType.Text);
                    connection.Open();
                    AccesoDB.ComandosFox(connection);
                    using (var dr = command.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            var lat     = Convert.ToDouble(dr.GetValue(0), CultureInfo.CurrentCulture);
                            var lng     = Convert.ToDouble(dr.GetValue(1), CultureInfo.CurrentCulture);
                            var vertice = new PointLatLng(lat, lng);
                            lista.Add(vertice);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(lista);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Sirve pero lo comento para no usarlo
        /// </summary>
        /// <param name="zona"></param>
        //public static List<Zona> ObtenerZonasPorEmpresa(string codigoEmpresa)
        //{
        //    return ControladorZonas.ObtenerZonas().Where(x => x.CodigoEmpresa == codigoEmpresa).ToList();
        //}

        public static void CargarClientes(Zona zona, ModoClientesRuteo modoVerClientes = ModoClientesRuteo.Todos)
        {
            try
            {
                zona.Clientes.Clear();
                using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
                {
                    var query = string.Empty;

                    switch (modoVerClientes)
                    {
                    case ModoClientesRuteo.ConRecorrido:
                        query = string.Format("SELECT c.codigo, c.nombre, c.street, c.number, c.latitud, c.longitud, c.observ, cz.recorrido, r.nombre, c.tipo_tarjeta = '03' as roja FROM clientes c INNER JOIN ramos r ON c.ramo=r.codigo INNER JOIN config_zona cz ON cz.cliente=c.codigo WHERE cz.zona='{0}' and cz.empresa='{1}' and cz.subempresa='{2}' and cz.baja=0 and c.inactivo=0 and c.potencial=0 and c.legales=0 and c.suspendido=0 and cz.recorrido>0 ", zona.Codigo, zona.CodigoEmpresa, zona.CodigoDivision);
                        break;

                    case ModoClientesRuteo.SinRecorrido:
                        query = string.Format("SELECT c.codigo, c.nombre, c.street, c.number, c.latitud, c.longitud, c.observ, cz.recorrido, r.nombre, c.tipo_tarjeta = '03' as roja FROM clientes c INNER JOIN ramos r ON c.ramo=r.codigo INNER JOIN config_zona cz ON cz.cliente=c.codigo WHERE cz.zona='{0}' and cz.empresa='{1}' and cz.subempresa='{2}' and cz.baja=0 and c.inactivo=0 and c.potencial=0 and c.legales=0 and c.suspendido=0 and cz.recorrido=0 ", zona.Codigo, zona.CodigoEmpresa, zona.CodigoDivision);
                        break;

                    case ModoClientesRuteo.Ninguno:
                        query = string.Format("SELECT c.codigo, c.nombre, c.street, c.number, c.latitud, c.longitud, c.observ, cz.recorrido, r.nombre, c.tipo_tarjeta = '03' as roja FROM clientes c INNER JOIN ramos r ON c.ramo=r.codigo INNER JOIN config_zona cz ON cz.cliente=c.codigo WHERE cz.zona='{0}' and cz.empresa='{1}' and cz.subempresa='{2}' and cz.baja=0 and c.inactivo=0 and c.potencial=0 and c.legales=0 and c.suspendido=0 and cz.recorrido<0 ", zona.Codigo, zona.CodigoEmpresa, zona.CodigoDivision);
                        break;

                    case ModoClientesRuteo.Todos:
                    default:
                        query = string.Format("SELECT c.codigo, c.nombre, c.street, c.number, c.latitud, c.longitud, c.observ, cz.recorrido, r.nombre, c.tipo_tarjeta = '03' as roja FROM clientes c INNER JOIN ramos r ON c.ramo=r.codigo INNER JOIN config_zona cz ON cz.cliente=c.codigo WHERE cz.zona='{0}' and cz.empresa='{1}' and cz.subempresa='{2}' and cz.baja=0 and c.inactivo=0 and c.potencial=0 and c.legales=0 and c.suspendido=0 ", zona.Codigo, zona.CodigoEmpresa, zona.CodigoDivision);
                        break;
                    }

                    query += "order by cz.recorrido";
                    var command = AccesoDB.CrearComando(connection, query, CommandType.Text);
                    connection.Open();
                    AccesoDB.ComandosFox(connection);
                    using (var dr = command.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            var cli = new Cliente();
                            cli.Codigo = dr.GetString(0);
                            cli.Nombre = dr.GetString(1).Trim();
                            cli.Calle  = dr.GetString(2).Trim();
                            cli.Numero = dr.GetValue(3).ToString();
                            var Latitud  = Convert.ToDouble(dr.GetValue(4), CultureInfo.CurrentCulture);
                            var Longitud = Convert.ToDouble(dr.GetValue(5), CultureInfo.CurrentCulture);
                            cli.Coordenada     = new PointLatLng(Latitud, Longitud);
                            cli.Observacion    = dr.GetString(6).Trim();
                            cli.OrdenRecorrido = Convert.ToInt32(dr.GetValue(7));
                            cli.Actividad      = dr.GetString(8).Trim();
                            cli.Roja           = dr.GetBoolean(9);
                            zona.Clientes.Add(cli);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        //protected override void OnDoWork(DoWorkEventArgs e)
        //{
        //    try
        //    {
        //        if (Fletero.Clientes.Count == 0)
        //        {
        //            var clientes = ControladoraWebApi.ObtenerClientes(Fletero.Codigo).Result;
        //            foreach (var cli in clientes)
        //            {
        //                if (!Fletero.Clientes.Any(c => c.Codigo.Equals(cli.Codigo)))
        //                {
        //                    Fletero.Clientes.Add(cli);
        //                }
        //            }
        //        }
        //        Fletero.CantidadClientes = Fletero.Clientes.DistinctBy(x => x.Codigo).Count();
        //        e.Result = Fletero;
        //    }
        //    catch (Exception ex)
        //    {
        //        throw ex;
        //    }
        //    finally
        //    {
        //        ReportProgress(100, "Done!");
        //    }
        //}

        protected override void OnDoWork(DoWorkEventArgs e)
        {
            try
            {
                //Fletero.Clientes.Clear();
                if (Fletero.Clientes.Count == 0)
                {
                    using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
                    {
                        var parameters = new OleDbParameter[] { new OleDbParameter("@fletero", Fletero.Codigo), new OleDbParameter("@fecha", fecha.Date) };
                        var sp         = AccesoDB.CrearComando(connection, "clientesfletero", CommandType.StoredProcedure, parameters);
                        connection.Open();
                        AccesoDB.ComandosFox(connection);
                        using (var dr = sp.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                string codigo = dr.GetString(0).Trim();
                                if (!Fletero.Clientes.Any(c => c.Codigo.Equals(codigo)))
                                {
                                    var cli = new ClienteFletero();
                                    cli.Codigo = codigo;
                                    cli.Nombre = dr.GetString(1).Trim();
                                    cli.Calle  = dr.GetString(2).Trim();
                                    cli.Numero = dr.GetValue(3).ToString();
                                    var Latitud  = Convert.ToDouble(dr.GetValue(4), CultureInfo.CurrentCulture);
                                    var Longitud = Convert.ToDouble(dr.GetValue(5), CultureInfo.CurrentCulture);
                                    cli.Coordenada     = new PointLatLng(Latitud, Longitud);
                                    cli.Observacion    = dr.GetString(6).Trim();
                                    cli.OrdenRecorrido = 0;
                                    cli.Actividad      = dr.GetString(7).Trim();
                                    cli.Roja           = dr.GetBoolean(8);
                                    cli.Contado        = Convert.ToDecimal(dr.GetValue(9));
                                    cli.CtaCte         = Convert.ToDecimal(dr.GetValue(10));
                                    Fletero.Clientes.Add(cli);
                                }
                            }
                        }
                    }
                }
                Fletero.CantidadClientes = Fletero.Clientes.DistinctBy(x => x.Codigo).Count();
                e.Result = Fletero;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                ReportProgress(100, "Done!");
            }
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
 public static void ActualizarCoordenadaDomicilio(Vendedor vendedor)
 {
     try
     {
         using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
         {
             var query      = string.Format(@"UPDATE operator SET latitud = ?, longitud=? WHERE codigo=?");
             var parameters = new OleDbParameter[] { new OleDbParameter("@lat", vendedor.CoordenadaDomicilio.Lat), new OleDbParameter("@lng", vendedor.CoordenadaDomicilio.Lng), new OleDbParameter("@cod", vendedor.Codigo) };
             var command    = AccesoDB.CrearComando(connection, query, CommandType.Text, parameters);
             connection.Open();
             command.ExecuteNonQuery();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 10
0
        private void CargarDatosFletero(ref Fletero flet)
        {
            //var flet = new Fletero();

            using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
            {
                var query    = string.Format("SELECT nombre,domicilio FROM proveedo WHERE fletero=1 AND habilitado=1 and codigo='{0}'", flet.Codigo);
                var consulta = AccesoDB.CrearComando(connection, query, CommandType.Text);
                connection.Open();
                AccesoDB.ComandosFox(connection);
                var dr = consulta.ExecuteReader();
                if (dr.Read())
                {
                    flet.Nombre    = dr.GetString(0).Trim();
                    flet.Domicilio = dr.GetString(1).Trim();
                }
            }
            //return flet;
        }
Exemplo n.º 11
0
        public static List <Vendedor> ObtenerUltimaPosicionVendedores()
        {
            List <Vendedor> res = new List <Vendedor>();

            try
            {
                using (var connection = new SqlConnection(AccesoDB.SqlPreventa))
                {
                    var command = AccesoDB.CrearComando(connection, "spObtenerUltimaPosicionVendedor", CommandType.StoredProcedure, new SqlParameter[] { new SqlParameter("@fecha", DateTime.Now.ToString("dd-MM-yyyy")) });
                    connection.Open();
                    using (var dr = command.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            Func <object, dynamic, object> nonull = (p, def) => p == null ? def : p;
                            var elemento = new Vendedor()
                            {
                                Codigo           = dr["usuario"].ToString(),
                                Estado           = (Estado)nonull(dr["estado"], Estado.OK),
                                CodigoEmpresa    = dr["empresa"].ToString(),
                                Fecha            = dr["fecha"].ToString(),
                                CoordenadaActual = new PointLatLng(
                                    double.Parse(dr["latitud"].ToString()),
                                    double.Parse(dr["longitud"].ToString())),
                                //Visitados = (int)nonull(item.Field<object>("visitados"), 0),
                                //Compradores = (int)nonull(item.Field<object>("compradores"), 0),
                                FondoDeCelda = dr["empresa"].ToString() == "10" ? @"S:\GEOVENTAS\alta.jpg" : @"S:\GEOVENTAS\hiller.jpg"
                            };
                            res.Add(elemento);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(res);
        }
Exemplo n.º 12
0
        public static Vendedor ObtenerVendedor(string codigo)
        {
            var vendedor = new Vendedor();

            try
            {
                using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
                {
                    var consulta = "select nombre,empresa,prov,calle,numero,latitud,longitud,foto from operator where codigo='" + codigo + "' and cargo=1 and mobile=1";
                    var command  = AccesoDB.CrearComando(connection, consulta, CommandType.Text);
                    connection.Open();
                    AccesoDB.ComandosFox(connection);
                    using (var dr = command.ExecuteReader())
                    {
                        if (dr.Read())
                        {
                            vendedor.Codigo         = codigo;
                            vendedor.Nombre         = dr.GetString(0).Trim();
                            vendedor.CodigoEmpresa  = dr.GetString(1).Trim();
                            vendedor.CodigoDivision = dr.GetString(2).Trim();
                            vendedor.Calle          = dr.GetString(3).Trim();
                            vendedor.Numero         = dr.GetString(4).Trim();
                            var Latitud  = Convert.ToDouble(dr.GetValue(5), CultureInfo.CurrentCulture);
                            var Longitud = Convert.ToDouble(dr.GetValue(6), CultureInfo.CurrentCulture);
                            vendedor.CoordenadaDomicilio = new PointLatLng(Latitud, Longitud);
                            vendedor.Foto = dr.GetString(7);
                            //vendedor.ZonasAsignadas = ControladorZonas.ObtenerZonasDelVendedor(vendedor.Codigo, DatetimeToDiaSemana.Convertir(DateTime.Today));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(vendedor);
        }
Exemplo n.º 13
0
        public static List <Cliente> ObtenerDatosClientes(List <string> clientesGeo)
        {
            var clientes = new List <Cliente>();

            foreach (var cli in clientesGeo)
            {
                try
                {
                    using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
                    {
                        var query   = "select codigo, street, number, latitud, longitud, localidad from clientes where codigo='" + cli + "'";
                        var command = AccesoDB.CrearComando(connection, query, CommandType.Text);
                        connection.Open();
                        using (var dr = command.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                var cliente = new Cliente();
                                cliente.Codigo = dr.GetString(0).Trim();
                                cliente.Calle  = dr.GetString(1).Trim();
                                cliente.Numero = Convert.ToString(dr.GetValue(2));
                                var lat = Convert.ToDouble(dr.GetValue(3), CultureInfo.CurrentCulture);
                                var lng = Convert.ToDouble(dr.GetValue(4), CultureInfo.CurrentCulture);
                                cliente.Coordenada = new PointLatLng(lat, lng);
                                cliente.Localidad  = dr.GetString(5).Trim();
                                clientes.Add(cliente);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            return(clientes);
        }
Exemplo n.º 14
0
        public static List <string> ObtenerCodigosVendedores(string empresa = null)
        {
            var listaCodigosVendedores = new List <string>();

            try
            {
                using (var connection = new SqlConnection(AccesoDB.SqlPreventa))
                {
                    SqlParameter[] parameter = new SqlParameter[1];
                    var            q         = "select usuario from vendedores where borrado=0";
                    if (empresa != null)
                    {
                        q           += @" and empresa=@pEmpresa";
                        parameter[0] = new SqlParameter("@pEmpresa", empresa);
                    }
                    else
                    {
                        parameter = null;
                    }
                    var command = AccesoDB.CrearComando(connection, q, CommandType.Text, parameter);
                    connection.Open();
                    using (var dr = command.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            listaCodigosVendedores.Add(dr.GetString(0));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error al obtener vendedores. " + ex.Message + "\n\nCtrlVend_ObtenerCodigosVendedores");
            }
            return(listaCodigosVendedores);
        }
Exemplo n.º 15
0
        public static List <Cliente> ProcesarConsulta(string consulta)
        {
            var lista = new List <Cliente>();

            try
            {
                using (var connection = new OleDbConnection(AccesoDB.FoxPreventaReal))
                {
                    var command = AccesoDB.CrearComando(connection, consulta, CommandType.Text);
                    connection.Open();
                    AccesoDB.ComandosFox(connection);
                    using (var dr = command.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            var cliente = new Cliente();

                            cliente.Codigo = dr.GetString(0).Trim();
                            cliente.Calle  = dr.GetString(1).Trim();
                            cliente.Numero = Convert.ToString(dr.GetValue(2));
                            var lat = Convert.ToDouble(dr.GetValue(3), CultureInfo.CurrentCulture);
                            var lng = Convert.ToDouble(dr.GetValue(4), CultureInfo.CurrentCulture);
                            cliente.Coordenada = new PointLatLng(lat, lng);
                            cliente.Localidad  = dr.GetString(5).Trim();
                            lista.Add(cliente);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(lista);
        }
Exemplo n.º 16
0
        public static void CargarPosiciones(Vendedor vendedor, DateTime fechaDesde, DateTime fechaHasta)
        {
            try
            {
                using (var connection = new SqlConnection(AccesoDB.SqlPreventa))
                {
                    SqlParameter[] parameters = { new SqlParameter("@pUsuario", vendedor.Codigo), new SqlParameter("@pFechaDesde", fechaDesde), new SqlParameter("@pFechaHasta", fechaHasta) };
                    var            query      = "select * from posiciongps where usuario = @pUsuario and fecha >= @pFechaDesde and fecha < @pFechaHasta";
                    var            command    = AccesoDB.CrearComando(connection, query, CommandType.Text, parameters);

                    connection.Open();
                    using (var dr = command.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            if (dr["usuario"].ToString() != null)
                            {
                                var pos = new Posicion();
                                pos.Cliente = dr["cliente"].ToString();
                                var Lat = double.Parse(dr["latitud"].ToString());
                                var Lng = double.Parse(dr["longitud"].ToString());

                                if (Lat != 0 && Lng != 0)
                                {
                                    ultimaCoordenadaConocida.Lat = Lat;
                                    ultimaCoordenadaConocida.Lng = Lng;
                                }
                                else
                                if (Lat == 0)
                                {
                                    Console.WriteLine("aha!");
                                }

                                //pos.Coordenada = new PointLatLng()
                                //{
                                pos.Latitud  = ultimaCoordenadaConocida.Lat;
                                pos.Longitud = ultimaCoordenadaConocida.Lng;
                                //};

                                if (dr["estado"] != null)
                                {
                                    pos.Estado = (Estado)dr["estado"];
                                }
                                else
                                {
                                    pos.Estado = Estado.OK;
                                }
                                pos.Fecha = Convert.ToDateTime(dr["fecha"]);
                                if (dr["motivonocompra"] != null)
                                {
                                    pos.MotivoNoCompra = (MotivoNoCompra)dr["motivonocompra"];
                                }
                                else
                                {
                                    pos.MotivoNoCompra = MotivoNoCompra.Compra;
                                }

                                pos.BultosCompra = int.Parse((nonull(dr["bultos"], 0).ToString()));
                                pos.PesosCompra  = Decimal.Parse(nonull(dr["pesos"], 0).ToString());

                                vendedor.Posiciones.Add(pos);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error al cargar posiciones. " + ex.Message + "\n\nCtrlVend_CargarPosiciones");
            }

            //ServiceSoapClient serviceMobile = new ServiceSoapClient();
            //var dt = serviceMobile.ObtenerPosicionesDelPreventista(vendedor.Codigo, fechaDesde, fechaHasta);
            ////var ultimaCoordenadaConocida = new PointLatLng() { Lat = -38.002601, Lng = -57.601849 };
            //foreach (DataRow item in dt.AsEnumerable().Where(p => p.Field<string>("usuario") != ""))
            //{
            //    var pos = new Posicion();

            //    pos.Cliente = item.Field<object>("cliente").ToString();

            //    var Lat = double.Parse(item.Field<object>("latitud").ToString());
            //    var Lng = double.Parse(item.Field<object>("longitud").ToString());

            //    if (Lat != 0 && Lng != 0)
            //    {
            //        ultimaCoordenadaConocida.Lat = Lat;
            //        ultimaCoordenadaConocida.Lng = Lng;
            //    }
            //    else
            //        if (Lat == 0)
            //        Console.WriteLine("aha!");

            //    //pos.Coordenada = new PointLatLng()
            //    //{
            //    pos.Latitud = ultimaCoordenadaConocida.Lat;
            //    pos.Longitud = ultimaCoordenadaConocida.Lng;
            //    //};

            //    if (item.Field<object>("estado") != null)
            //        pos.Estado = (Estado)item.Field<object>("estado");
            //    else
            //        pos.Estado = Estado.OK;
            //    pos.Fecha = item.Field<DateTime>("fecha");
            //    if (item.Field<object>("motivonocompra") != null)
            //        pos.MotivoNoCompra = (MotivoNoCompra)item.Field<object>("motivonocompra");
            //    else
            //        pos.MotivoNoCompra = MotivoNoCompra.Compra;

            //    pos.BultosCompra = int.Parse((nonull(item.Field<object>("bultos"), 0).ToString()));
            //    pos.PesosCompra = Decimal.Parse(nonull(item.Field<object>("pesos"), 0).ToString());

            //    vendedor.Posiciones.Add(pos);
            //}

            var clientesVisitados = vendedor.Posiciones.DistinctBy(p => p.Cliente);

            vendedor.Visitados = clientesVisitados.Count(p => p.Cliente != "");
            var clientesCompradores = vendedor.Posiciones.Where(p => p.PesosCompra > 0 && p.Cliente != "").GroupBy(p => p.Cliente);

            vendedor.Compradores = clientesCompradores.Count();
            //vendedor.Compradores =
        }