private void ConfigurarFiltros() { ArticulosTreeView.Nodes.Clear(); CedForecastDB.Bejerman.Articulos articulos = new CedForecastDB.Bejerman.Articulos(Aplicacion.Sesion); List<CedForecastEntidades.Bejerman.Articulos> listaArticulos = articulos.LeerLista(); for (int i = 0; i < listaArticulos.Count; i++) { TreeNode nd = new TreeNode(listaArticulos[i].Art_CodGen+"-"+listaArticulos[i].Art_DescGen); nd.Tag = listaArticulos[i].Art_CodGen; ArticulosTreeView.Nodes.Add(nd); } ClientesTreeView.Nodes.Clear(); CedForecastDB.Bejerman.Clientes clientes = new CedForecastDB.Bejerman.Clientes(Aplicacion.Sesion); List<CedForecastEntidades.Bejerman.Clientes> listaClientes = clientes.LeerLista(); for (int i = 0; i < listaClientes.Count; i++) { TreeNode nd = new TreeNode(listaClientes[i].Cli_Cod + "-" + listaClientes[i].Cli_RazSoc); nd.Tag = listaClientes[i].Cli_Cod; ClientesTreeView.Nodes.Add(nd); } VendedoresTreeView.Nodes.Clear(); CedForecastDB.Bejerman.Vendedor vendedores = new CedForecastDB.Bejerman.Vendedor(Aplicacion.Sesion); List<CedForecastEntidades.Bejerman.Vendedor> listaVendedores = vendedores.LeerLista(); for (int i = 0; i < listaVendedores.Count; i++) { TreeNode nd = new TreeNode(listaVendedores[i].Ven_Cod + "-" + listaVendedores[i].Ven_Desc); nd.Tag = listaVendedores[i].Ven_Cod; VendedoresTreeView.Nodes.Add(nd); } }
private void ConfigurarFiltros() { ArticulosTreeView.Nodes.Clear(); CedForecastDB.FamiliaArticulo familias = new CedForecastDB.FamiliaArticulo(Aplicacion.Sesion); List<CedForecastEntidades.FamiliaArticulo> listaFamilias = familias.LeerLista(); for (int i = 0; i < listaFamilias.Count; i++) { TreeNode ndFamilia = new TreeNode(listaFamilias[i].Descr); ndFamilia.Tag = String.Empty; for (int j = 0; j < listaFamilias[i].Articulos.Count; j++) { TreeNode ndArticulo = new TreeNode(listaFamilias[i].Articulos[j].Id + "-" + listaFamilias[i].Articulos[j].Descr); ndArticulo.Tag = listaFamilias[i].Articulos[j].Id; ndFamilia.Nodes.Add(ndArticulo); } ArticulosTreeView.Nodes.Add(ndFamilia); } //Agrego Articulos sin Familia CedForecastDB.ArticuloInfoAdicional db = new CedForecastDB.ArticuloInfoAdicional(Aplicacion.Sesion); List<CedForecastEntidades.Articulo> listaArticulosSinFamilia = db.LeerArticulosSinFamilia(); if (listaArticulosSinFamilia.Count > 0) { TreeNode ndSinFamilia = new TreeNode("<<<Desconocida>>>"); ndSinFamilia.Tag = String.Empty; for (int j = 0; j < listaArticulosSinFamilia.Count; j++) { TreeNode ndArticuloSinFamilia = new TreeNode(listaArticulosSinFamilia[j].Id + "-" + listaArticulosSinFamilia[j].Descr); ndArticuloSinFamilia.Tag = listaArticulosSinFamilia[j].Id; ndSinFamilia.Nodes.Add(ndArticuloSinFamilia); } ArticulosTreeView.Nodes.Add(ndSinFamilia); } ClientesTreeView.Nodes.Clear(); CedForecastDB.Bejerman.Zona zonas = new CedForecastDB.Bejerman.Zona(Aplicacion.Sesion); List<CedForecastEntidades.Bejerman.Zona> listaZonas = zonas.LeerLista(); for (int i = 0; i < listaZonas.Count; i++) { TreeNode ndZona = new TreeNode(listaZonas[i].Zon_Desc); ndZona.Tag = String.Empty; for (int j = 0; j < listaZonas[i].Clientes.Count; j++) { TreeNode ndCliente = new TreeNode(listaZonas[i].Clientes[j].Cli_Cod + "-" + listaZonas[i].Clientes[j].Cli_RazSoc); ndCliente.Tag = listaZonas[i].Clientes[j].Cli_Cod; ndZona.Nodes.Add(ndCliente); } ClientesTreeView.Nodes.Add(ndZona); } VendedoresTreeView.Nodes.Clear(); CedForecastDB.Bejerman.Vendedor vendedores = new CedForecastDB.Bejerman.Vendedor(Aplicacion.Sesion); List<CedForecastEntidades.Bejerman.Vendedor> listaVendedores = vendedores.LeerLista(); for (int i = 0; i < listaVendedores.Count; i++) { TreeNode nd = new TreeNode(listaVendedores[i].Ven_Cod + "-" + listaVendedores[i].Ven_Desc); nd.Tag = listaVendedores[i].Ven_Cod; VendedoresTreeView.Nodes.Add(nd); } }
public static List<CedForecastEntidades.RFoPA> Lista(CedForecastEntidades.RFoPA Forecast, string TipoReporte, string ListaArticulos, string ListaClientes, string ListaVendedores, CedEntidades.Sesion Sesion, out List<CedForecastEntidades.Advertencia> Advertencias) { Advertencias = new List<CedForecastEntidades.Advertencia>(); CedForecastDB.RFoPA forecast = new CedForecastDB.RFoPA(Sesion); List<CedForecastEntidades.RFoPA> lista = forecast.Lista(Forecast, TipoReporte, ListaArticulos, ListaClientes, ListaVendedores); List<CedForecastEntidades.Bejerman.Articulos> articulos = new CedForecastDB.Bejerman.Articulos(Sesion).LeerLista(); List<CedForecastEntidades.Bejerman.Vendedor> vendedores = new CedForecastDB.Bejerman.Vendedor(Sesion).LeerLista(); List<CedForecastEntidades.Bejerman.Clientes> clientes = new CedForecastDB.Bejerman.Clientes(Sesion).LeerLista(); for (int r = 0; r < lista.Count; r++) { CedForecastEntidades.Bejerman.Articulos articulo = articulos.Find(delegate(CedForecastEntidades.Bejerman.Articulos c) { return c.Art_CodGen == lista[r].Articulo.Art_CodGen; }); if (articulo != null) { lista[r].Articulo.Art_DescGen = articulo.Art_DescGen; lista[r].Articulo.Artda2_cod = articulo.Artda2_cod; } else { lista[r].Articulo.Art_DescGen = "<<<Desconocida>>>"; lista[r].Articulo.Artda2_cod = ""; Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-01", "Descripción no encontrada para el artículo " + Convert.ToString(lista[r].Articulo.Art_CodGen), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia)); } } for (int r = 0; r < lista.Count; r++) { CedForecastEntidades.Bejerman.Vendedor vendedor = vendedores.Find(delegate(CedForecastEntidades.Bejerman.Vendedor c) { return c.Ven_Cod == lista[r].Vendedor.Ven_Cod; }); if (vendedor != null) { lista[r].Vendedor.Ven_Desc = vendedor.Ven_Desc; } else { lista[r].Vendedor.Ven_Desc = "<<<Desconocida>>>"; Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-02", "Descripción no encontrada para el vendedor " + Convert.ToString(lista[r].Vendedor.Ven_Cod), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia)); } } for (int r = 0; r < lista.Count; r++) { CedForecastEntidades.Bejerman.Clientes cliente = clientes.Find(delegate(CedForecastEntidades.Bejerman.Clientes c) { return c.Cli_Cod == lista[r].IdCliente; }); if (cliente != null) { lista[r].Cliente.Cli_RazSoc = cliente.Cli_RazSoc; } else { lista[r].Cliente.Cli_RazSoc = "<<<Desconocida>>>"; Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-03", "Descripción no encontrada para el vendedor " + Convert.ToString(lista[r].IdCliente), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia)); } } return lista; }
public void EnviarNovedades() { try { WS.Sincronizacion ws = new WS.Sincronizacion(); ws.Url = cedForecastWSRUL; DateTime fechaUltimaSincronizacion = ws.FechaUltimaSincronizacionCuentas(); CedForecastDB.Bejerman.Vendedor datos = new CedForecastDB.Bejerman.Vendedor(sesion); List<CedForecastEntidades.Bejerman.Vendedor> lista = datos.LeerNovedades(fechaUltimaSincronizacion); contador = 0; contadorTope = lista.Count; for (contador = 0; contador < contadorTope; contador++) { WS.Cuenta elemento = new WS.Cuenta(); elemento.Id = lista[contador].Ven_Cod; elemento.Nombre = lista[contador].Ven_Desc; elemento.Telefono = lista[contador].Ven_Tel; elemento.Email = lista[contador].Ven_email; elemento.Division = new CedForecastRN.WS.Division(); elemento.Division.Id = lista[contador].Ven_Fax; elemento.Password = lista[contador].Ven_Password; elemento.Pregunta = "1+39 ? (en letras minúsculas)"; elemento.Respuesta = "cuarenta"; elemento.TipoCuenta = new CedForecastRN.WS.TipoCuenta(); elemento.TipoCuenta.Id = "OperForecast"; elemento.EstadoCuenta = new CedForecastRN.WS.EstadoCuenta(); if (lista[contador].Ven_Activo == "S") { elemento.EstadoCuenta.Id = "Vigente"; } else { elemento.EstadoCuenta.Id = "Baja"; } elemento.PaginaDefault = new CedForecastRN.WS.PaginaDefault(); elemento.PaginaDefault.Id = "Forecast"; elemento.FechaAlta = DateTime.Now; elemento.CantidadEnviosMail = 0; elemento.FechaUltimoReenvioMail = DateTime.Now; elemento.EmailSMS = String.Empty; elemento.RecibeAvisoAltaCuenta = false; elemento.FechaUltModif = lista[contador].Ven_FecMod; ws.EnviarCuenta(elemento); } } catch (Exception Ex) { errores.Add(Ex); } }
public static DataTable ResumenArgentinaXZonas(string PeriodoDesde, string PeriodoHasta, string TipoReporte, string ListaArticulos, string ListaClientes, string ListaVendedores, bool Valorizado, CedEntidades.Sesion Sesion, out List<CedForecastEntidades.Advertencia> Advertencias) { Advertencias = new List<CedForecastEntidades.Advertencia>(); //Validacion de parámetros if (ListaArticulos == String.Empty) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorNoInfo("Articulo(s)"); } if (ListaClientes == String.Empty) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorNoInfo("Cliente(s)"); } //Leer datos Forecast CedForecastDB.Forecast db = new CedForecastDB.Forecast(Sesion); DataSet ds = db.LeerDatosParaResumenArgentinaXZonas(PeriodoDesde, PeriodoHasta, TipoReporte, ListaArticulos, ListaClientes, ListaVendedores); DataTable dtZona; DataTable dtVendedor; switch (TipoReporte) { case "Zona-Familia-Articulo": dtZona = ds.Tables[0]; break; case "Vendedor-Familia-Articulo": dtVendedor = ds.Tables[0]; break; } DataTable dtFamilia = ds.Tables[1]; DataTable dtArticulos = ds.Tables[2]; DataTable dtDatos = ds.Tables[3]; //Leer datos Bejerman List<CedForecastEntidades.Bejerman.Zona> zonas = new CedForecastDB.Bejerman.Zona(Sesion).LeerLista(); List<CedForecastEntidades.Bejerman.Vendedor> vendedores = new CedForecastDB.Bejerman.Vendedor(Sesion).LeerLista(); List<CedForecastEntidades.Bejerman.Articulos> articulos = new CedForecastDB.Bejerman.Articulos(Sesion).LeerListaConPrecios(); List<CedForecastEntidades.ArticuloInfoAdicional> familiaXArticulos = new CedForecastDB.ArticuloInfoAdicional(Sesion).LeerLista(); //Crear crosstab DataTable dt = new DataTable(); dt.Columns.Add(ClonarColumna(dtDatos.Columns[0])); //Empresa dt.Columns.Add(ClonarColumna(dtDatos.Columns[1])); //Zona o Vendedor dt.Columns.Add(ClonarColumna(dtDatos.Columns["Familia"])); dt.Columns.Add(ClonarColumna(dtDatos.Columns["Articulo"])); string idPeriodo = ""; DateTime periodoDesde = Convert.ToDateTime("01/" + PeriodoDesde.Substring(4, 2) + "/" + PeriodoDesde.Substring(0, 4)); DateTime periodoHasta = Convert.ToDateTime("01/" + PeriodoHasta.Substring(4, 2) + "/" + PeriodoHasta.Substring(0, 4)); int meses = periodoHasta.Month - periodoDesde.Month + 1; int años = periodoHasta.Year - periodoDesde.Year; meses += años * 12; idPeriodo = periodoDesde.ToString("yyyyMM"); for (int i = 1; i <= meses; i++) { dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cantidad"], "Plan-" + idPeriodo, "Plan-" + idPeriodo)); dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cantidad"], "Real-" + idPeriodo, "Real-" + idPeriodo)); idPeriodo = periodoDesde.AddMonths(i).ToString("yyyyMM"); } dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cantidad"], "Total Plan", "Total Plan")); dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cantidad"], "Total Real", "Total Real")); dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cantidad"], "Desvio Plan", "Desvio Plan")); //Llenar crosstab string claveAnterior = String.Empty; //Buscar Ventas CedForecastDB.Bejerman.Ventas dbVentas = new CedForecastDB.Bejerman.Ventas(Sesion); List<CedForecastEntidades.Bejerman.Ventas> ventas = dbVentas.LeerParaResumenArgentinaXZonas(TipoReporte, PeriodoDesde, PeriodoHasta, ListaArticulos, ListaClientes, ListaVendedores); decimal precio = 0; for (int i = 0; i < ventas.Count; i++) { string familia = ""; CedForecastEntidades.ArticuloInfoAdicional articuloInfoAdicional = familiaXArticulos.Find(delegate(CedForecastEntidades.ArticuloInfoAdicional c) { return c.IdArticulo == Convert.ToString(ventas[i].Sdvart_CodGen); }); if (articuloInfoAdicional != null) { familia = articuloInfoAdicional.IdFamiliaArticulo; } DataRow[] drv; switch (TipoReporte) { case "Zona-Familia-Articulo": drv = dtDatos.Select("Zona = '" + ventas[i].Zona + "' and Articulo = '" + ventas[i].Sdvart_CodGen + "' and Periodo = '" + ventas[i].Periodo + "'"); if (drv.Length == 0) { dtDatos.Rows.Add("Empresa", ventas[i].Zona, familia, ventas[i].Sdvart_CodGen, ventas[i].Sdvart_CodGen, ventas[i].Periodo, 0); } break; case "Vendedor-Familia-Articulo": drv = dtDatos.Select("Vendedor = '" + ventas[i].Vendedor + "' and Articulo = '" + ventas[i].Sdvart_CodGen + "' and Periodo = '" + ventas[i].Periodo + "'"); if (drv.Length == 0) { dtDatos.Rows.Add("Empresa", ventas[i].Vendedor, familia, ventas[i].Sdvart_CodGen, ventas[i].Sdvart_CodGen, ventas[i].Periodo, 0); } break; } } //Ordenar datos switch (TipoReporte) { case "Zona-Familia-Articulo": dtDatos.DefaultView.Sort = "Zona ASC, Familia ASC, Articulo ASC"; break; case "Vendedor-Familia-Articulo": dtDatos.DefaultView.Sort = "Vendedor ASC, Familia ASC, Articulo ASC"; break; } for (int i = 0; i < dtDatos.DefaultView.Count; i++) { string claveActual = Convert.ToString(dtDatos.DefaultView[i][1]) + Convert.ToString(dtDatos.DefaultView[i]["Familia"]) + Convert.ToString(dtDatos.DefaultView[i]["Articulo"]); if (claveAnterior != claveActual) { DataRow dr = dt.NewRow(); dr["Empresa"] = "Empresa"; CedForecastEntidades.ArticuloInfoAdicional familiaXArticulo = familiaXArticulos.Find(delegate(CedForecastEntidades.ArticuloInfoAdicional c) { return c.IdArticulo == Convert.ToString(dtDatos.DefaultView[i]["Articulo"]); }); if (familiaXArticulo == null) { dr["Familia"] = "<<<Desconocida>>>"; Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-01", "Artículo " + Convert.ToString(dtDatos.DefaultView[i]["Articulo"]) + " sin familia definida", CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia)); } else { dr["Familia"] = familiaXArticulo.DescrFamiliaArticulo; } CedForecastEntidades.Bejerman.Articulos articulo = articulos.Find(delegate(CedForecastEntidades.Bejerman.Articulos c) { return c.Art_CodGen == Convert.ToString(dtDatos.DefaultView[i]["Articulo"]); }); if (articulo == null) { dr["Articulo"] = Convert.ToString(dtDatos.DefaultView[i]["Articulo"]) + "-<<<Desconocido>>>"; Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-02", "Descripción no encontrada para el artículo " + Convert.ToString(dtDatos.DefaultView[i]["Articulo"]), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia)); precio = 0; } else { dr["Articulo"] = Convert.ToString(dtDatos.DefaultView[i]["Articulo"]) + "-" + articulo.Art_DescGen; precio = articulo.Lpr_Precio; } if (precio == 0) { Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-03", "Precio no encontrado para el artículo " + Convert.ToString(dtDatos.DefaultView[i]["Articulo"]), CedForecastEntidades.Advertencia.TipoSeveridad.Error)); } switch (TipoReporte) { case "Zona-Familia-Articulo": CedForecastEntidades.Bejerman.Zona zona = zonas.Find(delegate(CedForecastEntidades.Bejerman.Zona c) { return c.Zon_Cod == Convert.ToString(dtDatos.DefaultView[i]["Zona"]); }); if (zona == null) { dr["Zona"] = Convert.ToString(dtDatos.DefaultView[i]["Zona"]) + "-<<<Desconocido>>>"; Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-04", "Descripción no encontrada para la zona " + Convert.ToString(dtDatos.DefaultView[i]["Zona"]), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia)); } else { dr["Zona"] = Convert.ToString(dtDatos.DefaultView[i]["Zona"]) + "-" + zona.Zon_Desc; } break; case "Vendedor-Familia-Articulo": CedForecastEntidades.Bejerman.Vendedor vendedor = vendedores.Find(delegate(CedForecastEntidades.Bejerman.Vendedor c) { return c.Ven_Cod == Convert.ToString(dtDatos.DefaultView[i]["Vendedor"]); }); if (vendedor == null) { dr["Vendedor"] = Convert.ToString(dtDatos.DefaultView[i]["Vendedor"]) + "-<<<Desconocido>>>"; Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-04", "Descripción no encontrada para el vendedor " + Convert.ToString(dtDatos.DefaultView[i]["Vendedor"]), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia)); } else { dr["Vendedor"] = Convert.ToString(dtDatos.DefaultView[i]["Vendedor"]) + "-" + vendedor.Ven_Desc; } break; } if (!Valorizado) { precio = 1; } else { if (articulo == null) { precio = 0; } else { precio = articulo.Lpr_Precio; } } dr["Total Plan"] = 0; dr["Total Real"] = 0; dt.Rows.Add(dr); claveAnterior = claveActual; } decimal valor = Convert.ToDecimal(dtDatos.DefaultView[i]["Cantidad"]) * precio; dt.Rows[dt.Rows.Count - 1]["Plan-" + dtDatos.DefaultView[i]["Periodo"].ToString()] = valor; //Completo ventas CedForecastEntidades.Bejerman.Ventas venta = new CedForecastEntidades.Bejerman.Ventas(); switch (TipoReporte) { case "Zona-Familia-Articulo": venta = ventas.Find((delegate(CedForecastEntidades.Bejerman.Ventas e) { return e.Zona == dtDatos.DefaultView[i]["Zona"].ToString() && e.Sdvart_CodGen == dtDatos.DefaultView[i]["Articulo"].ToString() && e.Periodo == dtDatos.DefaultView[i]["Periodo"].ToString(); })); break; case "Vendedor-Familia-Articulo": venta = ventas.Find((delegate(CedForecastEntidades.Bejerman.Ventas e) { return e.Vendedor == dtDatos.DefaultView[i]["Vendedor"].ToString() && e.Sdvart_CodGen == dtDatos.DefaultView[i]["Articulo"].ToString() && e.Periodo == dtDatos.DefaultView[i]["Periodo"].ToString(); })); break; } decimal valorReal = 0; if (venta != null) { if (Valorizado) { valorReal = venta.Sdv_ImpTot; } else { valorReal = venta.Sdv_CantUM1; } dt.Rows[dt.Rows.Count - 1]["Real-" + dtDatos.DefaultView[i]["Periodo"].ToString()] = valorReal; } //Sumar a Total dt.Rows[dt.Rows.Count - 1]["Total Plan"] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1]["Total Plan"]) + valor; dt.Rows[dt.Rows.Count - 1]["Total Real"] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1]["Total Real"]) + valorReal; dt.Rows[dt.Rows.Count - 1]["Desvio Plan"] = 0; if (Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1]["Total Plan"]) > 0) { dt.Rows[dt.Rows.Count - 1]["Desvio Plan"] = (Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1]["Total Real"]) / Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1]["Total Plan"]) - 1) * 100; } dt.AcceptChanges(); } return dt; }
public static DataTable CrossTabArticulosClientes(string IdPeriodoDesde, string IdPeriodoHasta, string TipoReporte, string ListaArticulos, string ListaClientes, string ListaVendedores, bool Valorizado, CedEntidades.Sesion Sesion, out List<CedForecastEntidades.Advertencia> Advertencias) { Advertencias = new List<CedForecastEntidades.Advertencia>(); //Validacion de parámetros if (ListaArticulos == String.Empty) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorNoInfo("Articulo(s)"); } if (ListaClientes == String.Empty) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorNoInfo("Cliente(s)"); } switch (TipoReporte) { case "Artículos-Vendedores": case "Vendedores-Artículos": if (ListaVendedores == String.Empty) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Validaciones.ValorNoInfo("Vendedor(es)"); } break; } //Leer datos Forecast CedForecastDB.Forecast db = new CedForecastDB.Forecast(Sesion); DataSet ds = db.LeerDatosParaCrossTabArticulosClientes(IdPeriodoDesde, IdPeriodoHasta, TipoReporte, ListaArticulos, ListaClientes, ListaVendedores); DataTable dtArticulos = ds.Tables[0]; DataTable dtVendedores = ds.Tables[1]; DataTable dtClientes = ds.Tables[2]; DataTable dtDatos = ds.Tables[3]; //Leer datos Bejerman List<CedForecastEntidades.Bejerman.Articulos> articulos = new CedForecastDB.Bejerman.Articulos(Sesion).LeerListaConPrecios(dtArticulos); List<CedForecastEntidades.Bejerman.Vendedor> vendedores = new CedForecastDB.Bejerman.Vendedor(Sesion).LeerLista(dtVendedores); List<CedForecastEntidades.Bejerman.Clientes> clientes = new CedForecastDB.Bejerman.Clientes(Sesion).LeerLista(dtClientes); List<CedForecastEntidades.ArticuloInfoAdicional> familiaXArticulos = new CedForecastDB.ArticuloInfoAdicional(Sesion).LeerLista(); //Crear crosstab DataTable dt = new DataTable(); bool incluyeVendedor = false; switch (TipoReporte) { case "Artículos-Vendedores": dt.Columns.Add(ClonarColumna(dtDatos.Columns["Articulo"], "Familia", "Familia")); dt.Columns.Add(ClonarColumna(dtDatos.Columns["Articulo"])); dt.Columns.Add(ClonarColumna(dtDatos.Columns["Vendedor"])); incluyeVendedor = true; break; case "Vendedores-Artículos": dt.Columns.Add(ClonarColumna(dtDatos.Columns["Vendedor"])); dt.Columns.Add(ClonarColumna(dtDatos.Columns["Articulo"], "Familia", "Familia")); dt.Columns.Add(ClonarColumna(dtDatos.Columns["Articulo"])); incluyeVendedor = true; break; case "Sólo Artículos": dt.Columns.Add(ClonarColumna(dtDatos.Columns["Articulo"], "Familia", "Familia")); dt.Columns.Add(ClonarColumna(dtDatos.Columns["Articulo"])); break; } dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cantidad"], "Total", "Total")); for (int i = 0; i < dtClientes.Rows.Count; i++) { string nombreColumna = Convert.ToString(dtClientes.Rows[i]["Cliente"]); string tituloColumna = nombreColumna; CedForecastEntidades.Bejerman.Clientes cliente = clientes.Find(delegate(CedForecastEntidades.Bejerman.Clientes c) { return c.Cli_Cod == nombreColumna; }); if (cliente != null) { tituloColumna += "-" + cliente.Cli_RazSoc; } dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cantidad"], nombreColumna, " " + tituloColumna)); } //Llenar crosstab string claveAnterior = String.Empty; decimal precio = -1; for (int i = 0; i < dtDatos.Rows.Count; i++) { string claveActual=Convert.ToString(dtDatos.Rows[i]["Articulo"]); if (incluyeVendedor) { claveActual += Convert.ToString(dtDatos.Rows[i]["Vendedor"]); } if (claveAnterior != claveActual) { if (precio == 0) { Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-03", "Precio no encontrado para el artículo " + Convert.ToString(dt.Rows[dt.Rows.Count - 1]["Articulo"]), CedForecastEntidades.Advertencia.TipoSeveridad.Error)); } DataRow dr = dt.NewRow(); CedForecastEntidades.ArticuloInfoAdicional articuloConFamilia = familiaXArticulos.Find(delegate(CedForecastEntidades.ArticuloInfoAdicional c) { return c.IdArticulo == Convert.ToString(dtDatos.Rows[i]["Articulo"]); }); if (articuloConFamilia == null) { dr["Familia"] = "<<<Desconocida>>>"; Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-01", "Artículo " + Convert.ToString(dtDatos.Rows[i]["Articulo"]) + " sin familia definida", CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia)); } else { dr["Familia"] = articuloConFamilia.DescrFamiliaArticulo; } CedForecastEntidades.Bejerman.Articulos articulo = articulos.Find(delegate(CedForecastEntidades.Bejerman.Articulos c) { return c.Art_CodGen==Convert.ToString(dtDatos.Rows[i]["Articulo"]); }); if (articulo == null) { dr["Articulo"] = Convert.ToString(dtDatos.Rows[i]["Articulo"]) + "-<<<Desconocido>>>"; Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-02", "Descripción no encontrada para el artículo " + Convert.ToString(dtDatos.Rows[i]["Articulo"]), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia)); precio = 0; } else { dr["Articulo"] = Convert.ToString(dtDatos.Rows[i]["Articulo"]) + "-" + articulo.Art_DescGen + " ("+articulo.Artcla_Cod+")"; precio = articulo.Lpr_Precio; } if (!Valorizado) { precio = 1; } else { if (articulo == null) { precio = 0; } else { precio = articulo.Lpr_Precio; } } if (incluyeVendedor) { CedForecastEntidades.Bejerman.Vendedor vendedor = vendedores.Find(delegate(CedForecastEntidades.Bejerman.Vendedor c) { return c.Ven_Cod == Convert.ToString(dtDatos.Rows[i]["Vendedor"]); }); if (vendedor == null) { dr["Vendedor"] = Convert.ToString(dtDatos.Rows[i]["Vendedor"]) + "-<<<Desconocido>>>"; } else { dr["Vendedor"] = Convert.ToString(dtDatos.Rows[i]["Vendedor"]) + "-" + vendedor.Ven_Desc; } } dr["Total"] = 0; dt.Rows.Add(dr); claveAnterior = claveActual; } decimal valor = Convert.ToDecimal(dtDatos.Rows[i]["Cantidad"]) * precio; dt.Rows[dt.Rows.Count - 1][Convert.ToString(dtDatos.Rows[i]["Cliente"])] = valor; dt.Rows[dt.Rows.Count - 1]["Total"] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1]["Total"]) + valor; dt.AcceptChanges(); } return dt; }
private void ConfigurarFiltros() { ArticulosTreeView.Nodes.Clear(); CedForecastDB.FamiliaArticulo familias = new CedForecastDB.FamiliaArticulo(Aplicacion.Sesion); List<CedForecastEntidades.FamiliaArticulo> listaFamilias = familias.LeerLista(); for (int i = 0; i < listaFamilias.Count; i++) { TreeNode ndFamilia = new TreeNode(listaFamilias[i].Descr); ndFamilia.Tag = String.Empty; for (int j = 0; j < listaFamilias[i].Articulos.Count; j++) { TreeNode ndArticulo = new TreeNode(listaFamilias[i].Articulos[j].Id + "-" + listaFamilias[i].Articulos[j].Descr); ndArticulo.Tag = listaFamilias[i].Articulos[j].Id; ndFamilia.Nodes.Add(ndArticulo); } ArticulosTreeView.Nodes.Add(ndFamilia); } //Agrego Articulos sin Familia CedForecastDB.ArticuloInfoAdicional db = new CedForecastDB.ArticuloInfoAdicional(Aplicacion.Sesion); List<CedForecastEntidades.Articulo> listaArticulosSinFamilia = db.LeerArticulosSinFamilia(); if (listaArticulosSinFamilia.Count > 0) { TreeNode ndSinFamilia = new TreeNode("<<<Desconocida>>>"); ndSinFamilia.Tag = String.Empty; for (int j = 0; j < listaArticulosSinFamilia.Count; j++) { TreeNode ndArticuloSinFamilia = new TreeNode(listaArticulosSinFamilia[j].Id + "-" + listaArticulosSinFamilia[j].Descr); ndArticuloSinFamilia.Tag = listaArticulosSinFamilia[j].Id; ndSinFamilia.Nodes.Add(ndArticuloSinFamilia); } ArticulosTreeView.Nodes.Add(ndSinFamilia); } ClientesTreeView.Nodes.Clear(); CedForecastDB.Bejerman.Zona zonas = new CedForecastDB.Bejerman.Zona(Aplicacion.Sesion); List<CedForecastEntidades.Bejerman.Zona> listaZonas = zonas.LeerLista(); for (int i = 0; i < listaZonas.Count; i++) { TreeNode ndZona = new TreeNode(listaZonas[i].Zon_Desc); ndZona.Tag = String.Empty; for (int j = 0; j < listaZonas[i].Clientes.Count; j++) { TreeNode ndCliente = new TreeNode(listaZonas[i].Clientes[j].Cli_Cod + "-" + listaZonas[i].Clientes[j].Cli_RazSoc); ndCliente.Tag = listaZonas[i].Clientes[j].Cli_Cod; ndZona.Nodes.Add(ndCliente); } ClientesTreeView.Nodes.Add(ndZona); } //Agrego Clientes sin Zona CedForecastDB.Bejerman.Clientes dbClientes = new CedForecastDB.Bejerman.Clientes(Aplicacion.Sesion); List<CedForecastEntidades.Bejerman.Clientes> listaClientesSinZona = dbClientes.LeerClientesSinZona(); if (listaClientesSinZona.Count > 0) { TreeNode ndSinZona = new TreeNode("<<<Desconocida>>>"); ndSinZona.Tag = String.Empty; for (int j = 0; j < listaClientesSinZona.Count; j++) { TreeNode ndClienteSinZona = new TreeNode(listaClientesSinZona[j].Cli_Cod + "-" + listaClientesSinZona[j].Cli_RazSoc); ndClienteSinZona.Tag = listaClientesSinZona[j].Cli_Cod; ndSinZona.Nodes.Add(ndClienteSinZona); } ClientesTreeView.Nodes.Add(ndSinZona); } VendedoresTreeView.Nodes.Clear(); CedForecastDB.Bejerman.Vendedor vendedores = new CedForecastDB.Bejerman.Vendedor(Aplicacion.Sesion); List<CedForecastEntidades.Bejerman.Vendedor> listaVendedores = vendedores.LeerLista(); for (int i = 0; i < listaVendedores.Count; i++) { TreeNode nd = new TreeNode(listaVendedores[i].Ven_Cod + "-" + listaVendedores[i].Ven_Desc); nd.Tag = listaVendedores[i].Ven_Cod; VendedoresTreeView.Nodes.Add(nd); } PeriodoDesdeCalendarCombo.Value = DateTime.Today; PeriodoRangoDesdeCalendarCombo.Value = DateTime.Today; PeriodoRangoHastaCalendarCombo.Value = DateTime.Today; try { string ProyectadoMesInicio = System.Configuration.ConfigurationManager.AppSettings["ProyectadoMesInicio"]; if (DateTime.Today.Month < Convert.ToInt32(ProyectadoMesInicio)) { PeriodoDesdeCalendarCombo.Value = Convert.ToDateTime("01/" + ProyectadoMesInicio + "/" + DateTime.Today.AddYears(-1).Year); } else { PeriodoDesdeCalendarCombo.Value = Convert.ToDateTime("01/" + ProyectadoMesInicio + "/" + DateTime.Today.Year); } } catch { MessageBox.Show("Problemas para obtener el mes inicial del ejercicio ecónomico.", "ATENCIÓN", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }