//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!"); } }
//SELECT distinc comision.cliente,clientes.nombre,clientes.domicilio, SUM(IIF(comision.condvta='01',final,cast(0 as n(10,2)))) as contado,SUM(IIF(comision.condvta='01',cast(0 as n(10,2)),final)) as ctacte FROM comision INNER JOIN (SELECT reparto FROM reparmad WHERE fletero='{0}') as crsMov ON crsmov.reparto=comision.reparto INNER JOIN clientes ON clientes.codigo=comision.cliente GROUP BY cliente public static void CargarClientesDelFletero(Fletero flet, DateTime today) { try { flet.Clientes.Clear(); FoxDB.Instancia.Conectar(); var consulta = FoxDB.Instancia.CrearStoredProcedure("clientesfletero"); consulta.Parameters.Add(new System.Data.OleDb.OleDbParameter("@fletero", flet.Codigo)); consulta.Parameters.Add(new System.Data.OleDb.OleDbParameter("@fecha", today)); var dr = consulta.ExecuteReader(); while (dr.Read()) { var cli = new ClienteFletero(); 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 = 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)); flet.Clientes.Add(cli); } FoxDB.Instancia.Desconectar(); flet.CantidadClientes = flet.Clientes.Count; } catch (Exception ex) { throw ex; } finally { FoxDB.Instancia.Desconectar(); } }