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; } }
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); }
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); }
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); }
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); }
/// <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!"); } }
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 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; } }
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; }
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); }
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); }
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); }
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); }
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); }
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 = }