Esempio n. 1
0
        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);
            }

            PeriodoDesdeCalendarCombo.Value = DateTime.Today;
        }
        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);
            }
        }
 private void EjecutarSeleccionUiButton_Click(object sender, EventArgs e)
 {
     try
     {
         Cursor = Cursors.WaitCursor;
         List<CedForecastEntidades.Articulo> lista = new CedForecastDB.ArticuloInfoAdicional(Aplicacion.Sesion).LeerListaXFamilia(Cedeira.UI.Fun.ListaTreeView(FamiliaArticuloTreeView));
         BrowserGridEX.DataSource = lista;
         PersonalizarGrilla();
         TabBrowserUiTabPage.TabVisible = true;
         BrowserUiTab.SelectedTab = TabBrowserUiTabPage;
         volverATabBrowser = true;
     }
     catch (Exception ex)
     {
         Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManager.Publish(ex);
     }
     finally
     {
         Cursor = Cursors.Default;
     }
 }
Esempio n. 4
0
 public void Enviar()
 {
     try
     {
         WS.Sincronizacion ws = new WS.Sincronizacion();
         ws.Url = cedForecastWSRUL;
         ws.EliminarFamiliasArticuloXArticulo();
         ws.EliminarFamiliasArticulo();
         //FamiliaArticulo
         CedForecastDB.FamiliaArticulo datos = new CedForecastDB.FamiliaArticulo(sesion);
         List<CedForecastEntidades.FamiliaArticulo> lista = datos.LeerLista();
         contador = 0;
         contadorTope = lista.Count;
         for (contador = 0; contador < contadorTope; contador++)
         {
             WS.FamiliaArticulo elemento = new WS.FamiliaArticulo();
             elemento.Id = lista[contador].Id;
             elemento.Descr = lista[contador].Descr;
             ws.EnviarFamiliaArticulo(elemento);
         }
         //FamiliaArticuloXArticulo
         CedForecastDB.ArticuloInfoAdicional datosArticulo = new CedForecastDB.ArticuloInfoAdicional(sesion);
         List<CedForecastEntidades.ArticuloInfoAdicional> listaArticulo = datosArticulo.LeerLista();
         contador = 0;
         contadorTope = listaArticulo.Count;
         for (contador = 0; contador < contadorTope; contador++)
         {
             WS.FamiliaArticuloXArticulo elemento = new WS.FamiliaArticuloXArticulo();
             elemento.Id = listaArticulo[contador].IdArticulo;
             elemento.Familia = new WS.FamiliaArticulo();
             elemento.Familia.Id = listaArticulo[contador].IdFamiliaArticulo;
             elemento.Familia.Descr = listaArticulo[contador].DescrFamiliaArticulo;
             ws.EnviarFamiliaArticuloXArticulo(elemento);
         }
     }
     catch (Exception Ex)
     {
         errores.Add(Ex);
     }
 }
Esempio n. 5
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;
        }
Esempio n. 6
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;
 }
        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);
            }
        }