コード例 #1
0
ファイル: RFoPA.cs プロジェクト: pjeconde/CedForecast
 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;
 }
コード例 #2
0
ファイル: Reporte.cs プロジェクト: pjeconde/CedForecast
 public static DataTable Financiero(string IdPeriodo, string TipoReporte, string ListaClientes, CedEntidades.Sesion Sesion, out List<CedForecastEntidades.Advertencia> Advertencias)
 {
     Advertencias = new List<CedForecastEntidades.Advertencia>();
     //Validacion de parámetros
     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.LeerDatosParaFinanciero(IdPeriodo, TipoReporte, ListaClientes);
     DataTable dtZona;
     switch (TipoReporte)
     {
         case "Zona-Cliente":
             dtZona = ds.Tables[0];
             break;
     }
     DataTable dtClientes = ds.Tables[1];
     DataTable dtDatos = ds.Tables[2];
     //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();
     
     //Crear crosstab
     DataTable dt = new DataTable();
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["Zona"]));     //Zona
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cliente"]));
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["TipoDato"]));
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["Descr"]));
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["FecVto"]));
     DateTime fechaInicio = Convert.ToDateTime("01/" + IdPeriodo.Substring(4, 2) + "/" + IdPeriodo.Substring(0, 4));
     DateTime periodoColumna = fechaInicio;
     for (int i = 0; i < 12; i++)
     {
         dt.Columns.Add(ClonarColumna(dtDatos.Columns["Saldo"], " " + periodoColumna.ToString("MM-yyyy"), " " + periodoColumna.ToString("MM-yyyy")));
         periodoColumna = periodoColumna.AddMonths(1);
     }
     dt.Columns.Add(ClonarColumna(dtDatos.Columns["Saldo"], "Total Saldo", "Total Saldo"));
     
     //Llenar crosstab
     string claveAnterior = String.Empty;
     for (int i = 0; i < dtDatos.Rows.Count; i++)
     {
         //string claveActual = Convert.ToString(dtDatos.Rows[i]["Zona"]) + Convert.ToString(dtDatos.Rows[i]["Cliente"]);
         //if (claveAnterior != claveActual)
         //{
             //Zona
             DataRow dr = dt.NewRow();
             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-01", "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"]) + "-<<<Desconocido>>>";
                 Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-02", "Descripción no encontrada para el cliente " + Convert.ToString(dtDatos.Rows[i]["Cliente"]), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia));
             }
             else
             {
                 dr["Cliente"] = Convert.ToString(dtDatos.Rows[i]["Cliente"]) + "-" + cliente.Cli_RazSoc;
             }
             dr["FecVto"] = Convert.ToString(dtDatos.Rows[i]["FecVto"]);
             dr["TipoDato"] = Convert.ToString(dtDatos.Rows[i]["TipoDato"]);
             dr["Descr"] = Convert.ToString(dtDatos.Rows[i]["Descr"]);
             dt.Rows.Add(dr);
             //claveAnterior = claveActual;
         //}
         decimal valor = Convert.ToDecimal(dtDatos.Rows[i]["Saldo"]);
         string periodo = Convert.ToDateTime(dtDatos.Rows[i]["FecVto"]).ToString("MM-yyyy");
         if (Convert.ToInt32(Convert.ToDateTime(dtDatos.Rows[i]["FecVto"]).ToString("yyyyMM")) < Convert.ToInt32(fechaInicio.ToString("yyyyMM")))
         {
             if (dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.ToString("MM-yyyy")].ToString() == "")
             {
                 dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.ToString("MM-yyyy")] = "0";
             }
             dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.ToString("MM-yyyy")] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.ToString("MM-yyyy")]) + valor;
         }
         else if (Convert.ToInt32(Convert.ToDateTime(dtDatos.Rows[i]["FecVto"]).ToString("yyyyMM")) > Convert.ToInt32(fechaInicio.AddMonths(11).ToString("yyyyMM")))
         {
             if (dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.AddMonths(11).ToString("MM-yyyy")].ToString() == "")
             {
                 dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.AddMonths(11).ToString("MM-yyyy")] = "0";
             }
             dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.AddMonths(11).ToString("MM-yyyy")] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.AddMonths(11).ToString("MM-yyyy")]) + valor;
         }
         else
         {
             if (dt.Rows[dt.Rows.Count - 1][" " + periodo].ToString() == "")
             {
                 dt.Rows[dt.Rows.Count - 1][" " + periodo] = "0";
             }
             dt.Rows[dt.Rows.Count - 1][" " + periodo] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1][" " + periodo]) + valor;
         }
         if (dt.Rows[dt.Rows.Count - 1]["Total Saldo"].ToString() == "")
         {
             dt.Rows[dt.Rows.Count - 1]["Total Saldo"] = "0";
         }
         dt.Rows[dt.Rows.Count - 1]["Total Saldo"] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1]["Total Saldo"]) + valor;
         dt.AcceptChanges();
     }
     return dt;
 }
コード例 #3
0
ファイル: Reporte.cs プロジェクト: pjeconde/CedForecast
 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;
 }
コード例 #4
0
ファイル: Reporte.cs プロジェクト: pjeconde/CedForecast
        public static DataSet FinancieroDs(string IdPeriodo, string TipoReporte, string ListaClientes, CedEntidades.Sesion Sesion, out List<CedForecastEntidades.Advertencia> Advertencias)
        {
            Advertencias = new List<CedForecastEntidades.Advertencia>();
            //Validacion de parámetros
            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.LeerDatosParaFinancieroDs(IdPeriodo, TipoReporte, ListaClientes);
            DataTable dtZona = new DataTable();
            switch (TipoReporte)
            {
                case "Zona-Cliente":
                    dtZona = ds.Tables[0].Copy();
                    break;
            }
            DataTable dtClientes = ds.Tables[1].Copy();
            DataTable dtDatos = ds.Tables[2].Copy();
            DataTable dtDatosT = ds.Tables[3].Copy();

            //Creamos el DataSet con modificaciones de campos para la Grilla.
            ds = new DataSet();
            ds.Tables.Add(dtZona);
            ds.Tables[0].TableName = "Finan1";
            ds.Tables.Add(dtClientes);
            ds.Tables[1].TableName = "Finan2";
            
            //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();

            DataTable dt = new DataTable();
            dt.Columns.Add(ClonarColumna(dtDatos.Columns["Zona"]));     //Zona
            dt.Columns.Add(ClonarColumna(dtDatos.Columns["Cliente"]));
            dt.Columns.Add(ClonarColumna(dtDatos.Columns["TipoDato"]));
            dt.Columns.Add(ClonarColumna(dtDatos.Columns["Descripcion"]));
            dt.Columns.Add(ClonarColumna(dtDatos.Columns["FecVto"]));
            DateTime fechaInicio = Convert.ToDateTime("01/" + IdPeriodo.Substring(4, 2) + "/" + IdPeriodo.Substring(0, 4));
            DateTime periodoColumna = fechaInicio;
            for (int i = 0; i < 12; i++)
            {
                dt.Columns.Add(ClonarColumna(dtDatos.Columns["Saldo"], " " + periodoColumna.ToString("MM-yyyy"), " " + periodoColumna.ToString("MM-yyyy")));
                periodoColumna = periodoColumna.AddMonths(1);
            }
            dt.Columns.Add(ClonarColumna(dtDatos.Columns["Saldo"], "Total Saldo", "Total Saldo"));

            //Llenar crosstab
            string claveAnterior = String.Empty;
            for (int i = 0; i < dtDatos.Rows.Count; i++)
            {
                //Zona
                DataRow dr = dt.NewRow();
                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-01", "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"]) + "-<<<Desconocido>>>";
                    Advertencias.Add(new CedForecastEntidades.Advertencia("CTabAC-02", "Descripción no encontrada para el cliente " + Convert.ToString(dtDatos.Rows[i]["Cliente"]), CedForecastEntidades.Advertencia.TipoSeveridad.Advertencia));
                }
                else
                {
                    dr["Cliente"] = Convert.ToString(dtDatos.Rows[i]["Cliente"]); // + "-" + cliente.Cli_RazSoc;
                }
                dr["FecVto"] = Convert.ToString(dtDatos.Rows[i]["FecVto"]);
                dr["TipoDato"] = Convert.ToString(dtDatos.Rows[i]["TipoDato"]);
                dr["Descripcion"] = Convert.ToString(dtDatos.Rows[i]["Descripcion"]);
                dt.Rows.Add(dr);

                decimal valor = Convert.ToDecimal(dtDatos.Rows[i]["Saldo"]);
                string periodo = Convert.ToDateTime(dtDatos.Rows[i]["FecVto"]).ToString("MM-yyyy");
                if (Convert.ToInt32(Convert.ToDateTime(dtDatos.Rows[i]["FecVto"]).ToString("yyyyMM")) < Convert.ToInt32(fechaInicio.ToString("yyyyMM")))
                {
                    if (dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.ToString("MM-yyyy")].ToString() == "")
                    {
                        dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.ToString("MM-yyyy")] = "0";
                    }
                    dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.ToString("MM-yyyy")] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.ToString("MM-yyyy")]) + valor;
                }
                else if (Convert.ToInt32(Convert.ToDateTime(dtDatos.Rows[i]["FecVto"]).ToString("yyyyMM")) > Convert.ToInt32(fechaInicio.AddMonths(11).ToString("yyyyMM")))
                {
                    if (dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.AddMonths(11).ToString("MM-yyyy")].ToString() == "")
                    {
                        dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.AddMonths(11).ToString("MM-yyyy")] = "0";
                    }
                    dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.AddMonths(11).ToString("MM-yyyy")] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1][" " + fechaInicio.AddMonths(11).ToString("MM-yyyy")]) + valor;
                }
                else 
                {
                    if (dt.Rows[dt.Rows.Count - 1][" " + periodo].ToString() == "")
                    {
                        dt.Rows[dt.Rows.Count - 1][" " + periodo] = "0";
                    }
                    dt.Rows[dt.Rows.Count - 1][" " + periodo] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1][" " + periodo]) + valor;
                }
                if (dt.Rows[dt.Rows.Count - 1]["Total Saldo"].ToString() == "")
                {
                    dt.Rows[dt.Rows.Count - 1]["Total Saldo"] = "0";
                }
                dt.Rows[dt.Rows.Count - 1]["Total Saldo"] = Convert.ToDecimal(dt.Rows[dt.Rows.Count - 1]["Total Saldo"]) + valor;
                dt.AcceptChanges();
            }
            ds.Tables.Add(dt);
            ds.Tables[2].TableName = "Finan3";

            //Agregar un fila por Zona / Cliente para informar el Forecast
            DateTime fechaHasta = fechaInicio.AddMonths(12).AddDays(-1);
            DataTable dtForecast = LeerDatosForecastParaFinancieroDS(fechaInicio.ToString("yyyyMM"), fechaHasta.ToString("yyyyMM"), ListaClientes, Advertencias, Sesion);
            
            //Buscar Cliente, para agregar los datos del forecast para el TipoDato = 'CtaCte'.
            for (int i = 0; i < dtForecast.Rows.Count; i++)
            {
                DataRow[] drFind = dt.Select("Zona = '" + dtForecast.Rows[i]["Zona"] + "' and Cliente = '" + dtForecast.Rows[i]["Cliente"] + "' and TipoDato = '" + "CtaCte" + "' and Descripcion = '" + "Forecast" + "'");
                if (drFind.Length == 0)
                {
                    DataRow nuevoRegistro = dt.NewRow();   
                    nuevoRegistro["Zona"] = dtForecast.Rows[i]["Zona"];
                    nuevoRegistro["Cliente"] = dtForecast.Rows[i]["Cliente"];
                    nuevoRegistro["TipoDato"] = "CtaCte";
                    nuevoRegistro["Descripcion"] = "Forecast";
                    string periodo = dtForecast.Rows[i]["Periodo"].ToString().Substring(4, 2) + "-" + dtForecast.Rows[i]["Periodo"].ToString().Substring(0, 4);
                    nuevoRegistro[" " + periodo] = dtForecast.Rows[i]["Valor"];
                    dt.Rows.Add(nuevoRegistro);
                    //Buscar si existe la zona
                    DataRow[] drFindFinan1 = ds.Tables[0].Select("Zona = '" + dtForecast.Rows[i]["Zona"] + "'");
                    if (drFindFinan1.Length == 0)
                    {
                        DataRow nuevoRegistroFinan1 = ds.Tables[0].NewRow();
                        nuevoRegistroFinan1["Zona"] = dtForecast.Rows[i]["Zona"].ToString();
                        ds.Tables[0].Rows.Add(nuevoRegistroFinan1);
                    }
                    //Buscar si existe el zona / cliente
                    DataRow[] drFindFinan2 = ds.Tables[1].Select("Zona = '" + dtForecast.Rows[i]["Zona"] + "' and Cliente = '" + dtForecast.Rows[i]["Cliente"] + "'");
                    if (drFindFinan2.Length == 0)
                    {
                        DataRow nuevoRegistroFinan2 = ds.Tables[1].NewRow();
                        nuevoRegistroFinan2["Zona"] = dtForecast.Rows[i]["Zona"].ToString();
                        nuevoRegistroFinan2["Cliente"] = dtForecast.Rows[i]["Cliente"].ToString();
                        nuevoRegistroFinan2["Nombre"] = dtForecast.Rows[i]["Nombre"].ToString();
                        ds.Tables[1].Rows.Add(nuevoRegistroFinan2);
                    }
                }
                else if (drFind.Length == 1)
                {
                    drFind[0]["Zona"] = dtForecast.Rows[i]["Zona"];
                    drFind[0]["Cliente"] = dtForecast.Rows[i]["Cliente"];
                    drFind[0]["TipoDato"] = "CtaCte";
                    drFind[0]["Descripcion"] = "Forecast";
                    string periodo = dtForecast.Rows[i]["Periodo"].ToString().Substring(4, 2) + "-" + dtForecast.Rows[i]["Periodo"].ToString().Substring(0, 4);
                    if (drFind[0][" " + periodo].ToString() != "")
                    {
                        drFind[0][" " + periodo] = Convert.ToDecimal(drFind[0][" " + periodo]) + Convert.ToDecimal(dtForecast.Rows[i]["Valor"]);
                    }
                    else
                    {
                        drFind[0][" " + periodo] = Convert.ToDecimal(dtForecast.Rows[i]["Valor"]);
                    }
                    dt.AcceptChanges();
                }
            }
            DataTable dtCopy = ds.Tables[1].Copy();
            DataRow[] drows = dtCopy.Select("", "CLIENTE ASC");
            ds.Tables[1].Clear();
            for (int i = 0; i < drows.Length; i++)
            {
                DataRow drow = ds.Tables[1].NewRow();
                drow[0] = drows[i][0].ToString();
                drow[1] = drows[i][1].ToString();
                drow[2] = drows[i][2].ToString();
                ds.Tables[1].Rows.Add(drow);
            }

            ds.Tables.Add(dtDatosT);
            ds.Tables[3].TableName = "Finan4";

            ds.Relations.Add("Finan1_Finan2", ds.Tables["Finan1"].Columns["Zona"], ds.Tables["Finan2"].Columns["Zona"]);
            ds.Relations.Add("Finan2_Finan3", ds.Tables["Finan2"].Columns["Cliente"], ds.Tables["Finan3"].Columns["Cliente"]);
            ds.Relations.Add("Finan2_Finan4", ds.Tables["Finan2"].Columns["Cliente"], ds.Tables["Finan4"].Columns["Cliente"]);
            return ds;
        }
コード例 #5
0
ファイル: Reporte.cs プロジェクト: pjeconde/CedForecast
 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;
 }