예제 #1
0
 private void LeerArticulos(CedForecastEntidades.FamiliaArticulo FamiliaArticulo)
 {
     DataTable dt = new DataTable();
     System.Text.StringBuilder a = new StringBuilder();
     a.Append("select IdArticulo from ArticuloInfoAdicional where IdFamiliaArticulo='" + FamiliaArticulo.Id + "' order by IdArticulo");
     dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
     FamiliaArticulo.Articulos.Clear();
     if (dt.Rows.Count != 0)
     {
         List<CedForecastEntidades.Bejerman.Articulos> articulos = new CedForecastDB.Bejerman.Articulos(sesion).LeerLista();
         for (int i = 0; i < dt.Rows.Count; i++)
         {
             CedForecastEntidades.Articulo elemento = new CedForecastEntidades.Articulo();
             elemento.Id = Convert.ToString(dt.Rows[i]["IdArticulo"]);
             CedForecastEntidades.Bejerman.Articulos articulo = articulos.Find(delegate(CedForecastEntidades.Bejerman.Articulos c) { return c.Art_CodGen == Convert.ToString(dt.Rows[i]["IdArticulo"]); });
             if (articulo == null)
             {
                 elemento.Descr = "<<<Desconocido>>>";
             }
             else
             {
                 elemento.Descr = articulo.Art_DescGen;
             }
             elemento.Familia = FamiliaArticulo;
             FamiliaArticulo.Articulos.Add(elemento);
         }
     }
 }
예제 #2
0
 public List<CedForecastEntidades.ArticuloInfoAdicional> LeerLista()
 {
     DataTable dt = new DataTable();
     System.Text.StringBuilder a = new StringBuilder();
     a.Append("select ArticuloInfoAdicional.IdArticulo, ArticuloInfoAdicional.IdFamiliaArticulo, FamiliaArticulo.DescrFamiliaArticulo, ArticuloInfoAdicional.IdArticuloOrigen, ArticuloInfoAdicional.IdRENAR, ArticuloInfoAdicional.DescrRENAR, ArticuloInfoAdicional.IdSENASA, ArticuloInfoAdicional.IdPresentacion, ArticuloInfoAdicional.CantidadXPresentacion, ArticuloInfoAdicional.CantidadXContenedor, ArticuloInfoAdicional.UnidadMedida, ArticuloInfoAdicional.Precio, ArticuloInfoAdicional.IdMoneda, ArticuloInfoAdicional.FechaVigenciaPrecio, ArticuloInfoAdicional.CoeficienteGastosNacionalizacion, ArticuloInfoAdicional.CantidadStockSeguridad, ArticuloInfoAdicional.PlazoAvisoStockSeguridad, ArticuloInfoAdicional.Comentario ");
     a.Append("from ArticuloInfoAdicional, FamiliaArticulo ");
     a.Append("where ArticuloInfoAdicional.IdFamiliaArticulo=FamiliaArticulo.IdFamiliaArticulo collate database_default ");
     a.Append("order by IdArticulo ");
     dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
     List<CedForecastEntidades.ArticuloInfoAdicional> lista = new List<CedForecastEntidades.ArticuloInfoAdicional>();
     if (dt.Rows.Count != 0)
     {
         List<CedForecastEntidades.Bejerman.Articulos> articulosBejerman = new CedForecastDB.Bejerman.Articulos(sesion).LeerLista();
         for (int i = 0; i < dt.Rows.Count; i++)
         {
             CedForecastEntidades.ArticuloInfoAdicional elemento = new CedForecastEntidades.ArticuloInfoAdicional();
             Copiar(dt.Rows[i], elemento);
             CedForecastEntidades.Bejerman.Articulos articuloBejerman = articulosBejerman.Find(delegate(CedForecastEntidades.Bejerman.Articulos c) { return c.Art_CodGen == Convert.ToString(dt.Rows[i]["IdArticulo"]); });
             if (articuloBejerman == null)
             {
                 elemento.DescrArticulo = "<<<Desconocido>>>";
             }
             else
             {
                 elemento.DescrArticulo = articuloBejerman.Art_DescGen;
             }
             lista.Add(elemento);
         }
     }
     return lista;
 }
예제 #3
0
 public void EnviarNovedades()
 {
     try
     {
         WS.Sincronizacion ws = new WS.Sincronizacion();
         ws.Url = cedForecastWSRUL;
         DateTime fechaUltimaSincronizacion = ws.FechaUltimaSincronizacionArticulos();
         CedForecastDB.Bejerman.Articulos datos = new CedForecastDB.Bejerman.Articulos(sesion);
         List<CedForecastEntidades.Bejerman.Articulos> lista = datos.LeerNovedades(fechaUltimaSincronizacion);
         contador = 0;
         contadorTope = lista.Count;
         for (contador = 0; contador < contadorTope; contador++)
         {
             WS.Articulo elemento = new WS.Articulo();
             elemento.Id = lista[contador].Art_CodGen;
             elemento.Descr = lista[contador].Art_DescGen;
             elemento.PesoBruto = lista[contador].Art_PesoBruto;
             elemento.UnidadMedida = lista[contador].Artcla_Cod;
             elemento.GrupoArticulo = new CedForecastRN.WS.GrupoArticulo();
             elemento.GrupoArticulo.IdGrupoArticulo = lista[contador].Artda2_cod;
             elemento.Habilitado = true;
             elemento.FechaUltModif = lista[contador].Art_FecMod;
             ws.EnviarArticulo(elemento);
         }
     }
     catch (Exception Ex)
     {
         errores.Add(Ex);
     }
 }
예제 #4
0
 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);
     }
 }
예제 #5
0
 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;
 }
 private void LlenarCombos(string Evento)
 {
     List<CedForecastEntidades.Bejerman.Articulos> articulos;
     if (Evento == "Alta")
     {
         articulos = new CedForecastDB.Bejerman.Articulos(Aplicacion.Sesion).LeerLista(new CedForecastDB.ArticuloInfoAdicional(Aplicacion.Sesion).ListaIdArticulos());
     }
     else
     {
         articulos = new CedForecastDB.Bejerman.Articulos(Aplicacion.Sesion).Leer(articuloInfoAdicional.IdArticulo);
     }
     IdArticuloUiComboBox.DataSource = articulos;
     IdArticuloUiComboBox.ValueMember = "Art_CodGen";
     IdArticuloUiComboBox.DisplayMember = "Art_CodDescGen";
     LlenarComboFamilias();
     LlenarComboMonedas();
     LlenarComboUnidadesMedida();
 }
예제 #7
0
 public void Leer(CedForecastEntidades.ArticuloInfoAdicional ArticuloInfoAdicional)
 {
     DataTable dt = new DataTable();
     System.Text.StringBuilder a = new StringBuilder();
     a.Append("select ArticuloInfoAdicional.IdArticulo, ArticuloInfoAdicional.IdFamiliaArticulo, FamiliaArticulo.DescrFamiliaArticulo, ArticuloInfoAdicional.IdArticuloOrigen, ArticuloInfoAdicional.IdRENAR, ArticuloInfoAdicional.DescrRENAR, ArticuloInfoAdicional.IdSENASA, ArticuloInfoAdicional.IdPresentacion, ArticuloInfoAdicional.CantidadXPresentacion, ArticuloInfoAdicional.CantidadXContenedor, ArticuloInfoAdicional.UnidadMedida, ArticuloInfoAdicional.Precio, ArticuloInfoAdicional.IdMoneda, ArticuloInfoAdicional.FechaVigenciaPrecio, ArticuloInfoAdicional.CoeficienteGastosNacionalizacion, ArticuloInfoAdicional.CantidadStockSeguridad, ArticuloInfoAdicional.PlazoAvisoStockSeguridad, ArticuloInfoAdicional.Comentario ");
     a.Append("from ArticuloInfoAdicional, FamiliaArticulo ");
     a.Append("where ArticuloInfoAdicional.IdFamiliaArticulo=FamiliaArticulo.IdFamiliaArticulo ");
     a.Append("and ArticuloInfoAdicional.IdArticulo='" + ArticuloInfoAdicional.IdArticulo + "' ");
     dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
     if (dt.Rows.Count == 1)
     {
         List<CedForecastEntidades.Bejerman.Articulos> articulosBejerman = new CedForecastDB.Bejerman.Articulos(sesion).LeerLista();
         Copiar(dt.Rows[0], ArticuloInfoAdicional);
         CedForecastEntidades.Bejerman.Articulos articuloBejerman = articulosBejerman.Find(delegate(CedForecastEntidades.Bejerman.Articulos c) { return c.Art_CodGen == Convert.ToString(dt.Rows[0]["IdArticulo"]); });
         if (articuloBejerman == null)
         {
             ArticuloInfoAdicional.DescrArticulo = "<<<Desconocido>>>";
         }
         else
         {
             ArticuloInfoAdicional.DescrArticulo = articuloBejerman.Art_DescGen;
         }
     }
 }
예제 #8
0
        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;
        }
예제 #9
0
 private static DataTable LeerDatosForecastParaFinancieroDS(string PeriodoDesde, string PeriodoHasta, string ListaClientes, List<CedForecastEntidades.Advertencia> Advertencias, CedEntidades.Sesion Sesion)
 {
     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.LeerDatosForecastParaFinancieroDS(PeriodoDesde, PeriodoHasta, ListaClientes);
     DataTable dtDatos = ds.Tables[0];
     //Leer datos Bejerman
     List<CedForecastEntidades.Bejerman.Zona> zonas = new CedForecastDB.Bejerman.Zona(Sesion).LeerLista();
     List<CedForecastEntidades.Bejerman.Clientes> clientes = new CedForecastDB.Bejerman.Clientes(Sesion).LeerLista();
     List<CedForecastEntidades.Bejerman.Articulos> articulos = new CedForecastDB.Bejerman.Articulos(Sesion).LeerListaConPrecios();
     //Crear datos de forecast para FinancieroDS
     DataTable dt = new DataTable();
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["Zona"])); 
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cliente"]));
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["Nombre"])); 
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["CondVta"])); 
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["Articulo"]));
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["Periodo"]));
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cantidad"], "Valor", "Valor"));
     for (int i = 0; i < dtDatos.Rows.Count; i++)
     {
         decimal precio = 0;
         //Ajustar Periodo en funcion a la condicion de pago.
         //POR AHORA CONDICION DE PAGO FIJA (90 dias = 3 meses).
         DateTime fechaAux = Convert.ToDateTime("01/" + dtDatos.Rows[i]["Periodo"].ToString().Substring(4, 2) + "/" + dtDatos.Rows[i]["Periodo"].ToString().Substring(0, 4));
         string nuevoPeriodo = fechaAux.AddMonths(3).ToString("yyyyMM");
         //
         if (Convert.ToInt32(nuevoPeriodo) <= Convert.ToInt32(PeriodoHasta))
         {
             DataRow dr = dt.NewRow();
             dr["Periodo"] = nuevoPeriodo;
             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-Forecast-01", "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;
                 precio = articulo.Lpr_Precio;
             }
             if (precio == 0)
             {
                 Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-Forecast-02", "Precio no encontrado para el artículo " + Convert.ToString(dtDatos.Rows[i]["Articulo"]), CedForecastEntidades.Advertencia.TipoSeveridad.Error));
             }
             //Zona
             CedForecastEntidades.Bejerman.Zona zona = zonas.Find(delegate(CedForecastEntidades.Bejerman.Zona c) { return c.Zon_Cod == Convert.ToString(dtDatos.Rows[i]["Zona"]); });
             if (zona == null)
             {
                 dr["Zona"] = Convert.ToString(dtDatos.Rows[i]["Zona"]) + "-<<<Desconocido>>>";
                 Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-Forecast-03", "Descripción no encontrada para la zona " + Convert.ToString(dtDatos.Rows[i]["Zona"]), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia));
             }
             else
             {
                 dr["Zona"] = Convert.ToString(dtDatos.Rows[i]["Zona"]); // +"-" + zona.Zon_Desc;
             }
             //Cliente
             CedForecastEntidades.Bejerman.Clientes cliente = clientes.Find(delegate(CedForecastEntidades.Bejerman.Clientes c) { return c.Cli_Cod == Convert.ToString(dtDatos.Rows[i]["Cliente"]); });
             if (cliente == null)
             {
                 dr["Cliente"] = Convert.ToString(dtDatos.Rows[i]["Cliente"]);
                 dr["Nombre"] = "<<<Desconocido>>>";
                 Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-Forecast-04", "Descripción no encontrada para el cliente " + Convert.ToString(dtDatos.Rows[i]["Cliente"]) + "-" + dr["Nombre"].ToString(), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia));
             }
             else
             {
                 dr["Cliente"] = Convert.ToString(dtDatos.Rows[i]["Cliente"]); // + "-" + cliente.Cli_RazSoc;
                 dr["Nombre"] = Convert.ToString(dtDatos.Rows[i]["Nombre"]);
             }
             if (articulo == null)
             {
                 precio = 0;
             }
             else
             {
                 precio = articulo.Lpr_Precio;
             }
             decimal valor = Convert.ToDecimal(dtDatos.Rows[i]["Cantidad"]) * precio;
             dr["Valor"] = valor;
             dt.Rows.Add(dr);
         }
     }
     return dt;
 }
예제 #10
0
 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;
 }
예제 #11
0
 public List<CedForecastEntidades.Articulo> LeerListaXFamilia(string ListaFamilias)
 {
     List<CedForecastEntidades.Articulo> lista = new List<CedForecastEntidades.Articulo>();
     if (ListaFamilias != String.Empty)
     {
         DataTable dt = new DataTable();
         System.Text.StringBuilder a = new StringBuilder();
         a.Append("select ArticuloInfoAdicional.IdArticulo, ArticuloInfoAdicional.IdFamiliaArticulo, FamiliaArticulo.DescrFamiliaArticulo ");
         a.Append("from ArticuloInfoAdicional, FamiliaArticulo ");
         a.Append("where ArticuloInfoAdicional.IdFamiliaArticulo=FamiliaArticulo.IdFamiliaArticulo collate database_default ");
         a.Append("and ArticuloInfoAdicional.IdFamiliaArticulo in (" + ListaFamilias.ToString() + ") ");
         a.Append("order by FamiliaArticulo.DescrFamiliaArticulo, ArticuloInfoAdicional.IdArticulo ");
         dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
         if (dt.Rows.Count != 0)
         {
             List<CedForecastEntidades.Bejerman.Articulos> articulos = new CedForecastDB.Bejerman.Articulos(sesion).LeerLista();
             for (int i = 0; i < dt.Rows.Count; i++)
             {
                 CedForecastEntidades.Articulo elemento = new CedForecastEntidades.Articulo();
                 elemento.Id = Convert.ToString(dt.Rows[i]["IdArticulo"]);
                 CedForecastEntidades.Bejerman.Articulos articulo = articulos.Find(delegate(CedForecastEntidades.Bejerman.Articulos c) { return c.Art_CodGen == Convert.ToString(dt.Rows[i]["IdArticulo"]); });
                 if (articulo == null)
                 {
                     elemento.Descr = "<<<Desconocido>>>";
                 }
                 else
                 {
                     elemento.Descr = articulo.Art_DescGen;
                 }
                 elemento.Familia = new CedForecastEntidades.FamiliaArticulo();
                 elemento.Familia.Id = Convert.ToString(dt.Rows[i]["IdFamiliaArticulo"]);
                 elemento.Familia.Descr = Convert.ToString(dt.Rows[i]["DescrFamiliaArticulo"]);
                 lista.Add(elemento);
             }
         }
     }
     return lista;
 }
예제 #12
0
 public List<CedForecastEntidades.Articulo> LeerArticulosSinFamilia()
 {
     List<CedForecastEntidades.Articulo> lista = new List<CedForecastEntidades.Articulo>();
     System.Text.StringBuilder a = new StringBuilder();
     a.Append("select distinct(IdArticulo) as Articulo from Forecast where IdArticulo collate database_default not in (select IdArticulo from ArticuloInfoAdicional) ");
     DataTable dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr);
     List<CedForecastEntidades.Bejerman.Articulos> articulos = new CedForecastDB.Bejerman.Articulos(sesion).LeerListaConPrecios(dt);
     for (int i = 0; i < dt.Rows.Count; i++)
     {
         CedForecastEntidades.Articulo elemento = new CedForecastEntidades.Articulo();
         elemento.Id = Convert.ToString(dt.Rows[i]["Articulo"]);
         CedForecastEntidades.Bejerman.Articulos articulo = articulos.Find(delegate(CedForecastEntidades.Bejerman.Articulos c) { return c.Art_CodGen == Convert.ToString(dt.Rows[i]["Articulo"]); });
         if (articulo == null)
         {
             elemento.Descr = Convert.ToString("<<<Desconocido>>>");
         }
         else
         {
             elemento.Descr = Convert.ToString(articulo.Art_DescGen);
         }
         lista.Add(elemento);
     }
     return lista;
 }