public List<CedForecastWebEntidades.Venta> ConsultarTotales(string PeriodoDsd, string PeriodoHst) { System.Text.StringBuilder a = new StringBuilder(); a.Append("Select Rtrim(Ltrim(IdArticulo)) as IdArticulo, IdCliente, Sum(Cantidad) as Cantidad from Venta where IdPeriodo >= '" + PeriodoDsd + "' and IdPeriodo < '" + PeriodoHst + "' group by IdArticulo, IdCliente"); DataTable dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr); List<CedForecastWebEntidades.Venta> lista = new List<CedForecastWebEntidades.Venta>(); if (dt.Rows.Count != 0) { for (int i = 0; i < dt.Rows.Count; i++) { CedForecastWebEntidades.Venta venta = new CedForecastWebEntidades.Venta(); CopiarVentaTotal(dt.Rows[i], venta); lista.Add(venta); } } return lista; }
public List<CedForecastWebEntidades.RFoPA> Lista(CedForecastWebEntidades.RFoPA Forecast) { cantidadFilas = 0; System.Text.StringBuilder a = new StringBuilder(); a.Append("select Forecast.IdTipoPlanilla, Forecast.IdCuenta, Forecast.IdCliente, Forecast.IdPeriodo, Forecast.IdArticulo, Articulo.DescrArticulo, Articulo.IdGrupoArticulo, Cliente.DescrCliente, GrupoArticulo.DescrGrupoArticulo, Division.IdDivision, Division.DescrDivision, FamiliaArticulo.IdFamiliaArticulo, FamiliaArticulo.DescrFamiliaArticulo, Forecast.Cantidad "); a.Append("from Forecast inner join Articulo on Forecast.IdArticulo=Articulo.IdArticulo "); a.Append("inner join Cliente on Forecast.IdCliente=Cliente.IdCliente "); a.Append("inner join GrupoArticulo on Articulo.IdGrupoArticulo=GrupoArticulo.IdGrupoArticulo "); a.Append("inner join Division on GrupoArticulo.IdDivision=Division.IdDivision "); a.Append("left outer join FamiliaArticuloXArticulo on Forecast.IdArticulo=FamiliaArticuloXArticulo.IdArticulo "); a.Append("left outer join FamiliaArticulo on FamiliaArticuloXArticulo.IdFamiliaArticulo=FamiliaArticulo.IdFamiliaArticulo "); a.Append("where Forecast.IdTipoPlanilla='" + Forecast.IdTipoPlanilla + "' "); if (Forecast.IdCuenta != null && Forecast.IdCuenta != "") { a.Append("and Forecast.IdCuenta='" + Forecast.IdCuenta + "' "); } if (Forecast.IdCliente != null && Forecast.IdCliente != "") { a.Append("and Forecast.IdCliente='" + Forecast.IdCliente + "' "); } if (Forecast.Articulo.FamiliaArticulo.Id != null && Forecast.Articulo.FamiliaArticulo.Id != "") { a.Append("and FamiliaArticulo.IdFamiliaArticulo='" + Forecast.Articulo.FamiliaArticulo.Id + "' "); } string periodo = ""; periodo = UltimoMesForecast(Forecast.IdPeriodo); if (Forecast.IdTipoPlanilla == "Proyectado" && Forecast.IdPeriodo.Substring(0, 4) == periodo.Substring(0, 4)) { periodo = Forecast.IdPeriodo.Substring(0, 4) + "99"; } a.Append("and IdPeriodo >= '" + Forecast.IdPeriodo + "' "); a.Append("and IdPeriodo <= '" + periodo + "' "); a.Append("order by Forecast.IdArticulo asc, Forecast.IdCliente asc, IdPeriodo asc"); DataTable dt = new DataTable(); dt = (DataTable)Ejecutar(a.ToString(), TipoRetorno.TB, Transaccion.NoAcepta, sesion.CnnStr); List<CedForecastWebEntidades.RFoPA> lista = new List<CedForecastWebEntidades.RFoPA>(); if (dt.Rows.Count != 0) { CedForecastWebEntidades.RFoPA forecast = new CedForecastWebEntidades.RFoPA(); string idArticulo = dt.Rows[0]["IdArticulo"].ToString() + dt.Rows[0]["IdCliente"].ToString(); CopiarCab(dt.Rows[0], forecast, Forecast.IdPeriodo); //Lista de ventas para Rolling Forecast List<CedForecastWebEntidades.Venta> ventaLista = new List<CedForecastWebEntidades.Venta>(); List<CedForecastWebEntidades.RFoPA> totalProyectadoLista = new List<CedForecastWebEntidades.RFoPA>(); int cantidadMesesParaDevio = 0; if (Forecast.IdTipoPlanilla == "RollingForecast") { Venta ventaRN = new Venta(sesion); ventaLista = ventaRN.ConsultarTotales(PrimerMes(Forecast.IdPeriodo), Forecast.IdPeriodo); CedForecastWebEntidades.Venta venta = new CedForecastWebEntidades.Venta(); venta = ventaLista.Find((delegate(CedForecastWebEntidades.Venta e) { return e.IdCliente == dt.Rows[0]["IdCliente"].ToString() && e.IdArticulo == dt.Rows[0]["IdArticulo"].ToString(); })); if (venta != null) { forecast.Ventas = venta.Cantidad; } //Lista de totales proyectados por articulo totalProyectadoLista = TotalProyectado(Forecast); //Buscar total proyectado CedForecastWebEntidades.RFoPA totalProyectado = new CedForecastWebEntidades.RFoPA(); totalProyectado = totalProyectadoLista.Find((delegate(CedForecastWebEntidades.RFoPA e) { return e.IdCliente == dt.Rows[0]["IdCliente"].ToString() && e.Articulo.Id == dt.Rows[0]["IdArticulo"].ToString(); })); if (totalProyectado != null) { forecast.Proyectado = totalProyectado.Proyectado; } //Buscar primer mes de ejercicio economico. string ProyectadoMesInicio = System.Configuration.ConfigurationManager.AppSettings["ProyectadoMesInicio"]; DateTime FechaInicio = DateTime.Today; if (Convert.ToInt32(Forecast.IdPeriodo.Substring(4, 2)) < Convert.ToInt32(ProyectadoMesInicio)) { FechaInicio = Convert.ToDateTime("01/" + ProyectadoMesInicio + "/" + Convert.ToDateTime("01/" + Forecast.IdPeriodo.Substring(4, 2) + "/" + Forecast.IdPeriodo.Substring(0, 4)).AddYears(-1).Year); } else { FechaInicio = Convert.ToDateTime("01/" + ProyectadoMesInicio + "/" + Forecast.IdPeriodo.Substring(0, 4)); } //Diferencia entre el año-mes del ejercicio económico y año-mes inicial del Rolling cantidadMesesParaDevio = MesAProcesar(Forecast.IdPeriodo, FechaInicio.ToString("yyyyMM")); cantidadMesesParaDevio = cantidadMesesParaDevio - 1; forecast.CantidadMesesParaDesvio = cantidadMesesParaDevio; } for (int i = 0; i < dt.Rows.Count; i++) { string periodoInicial = Forecast.IdPeriodo; int mes = 0; if (Forecast.IdTipoPlanilla == "Proyectado" && (dt.Rows[i]["IdPeriodo"].ToString().Substring(4, 2) == "13" || dt.Rows[i]["IdPeriodo"].ToString().Substring(4, 2) == "14")) { mes = Convert.ToInt32(dt.Rows[i]["IdPeriodo"].ToString().Substring(4, 2)); } else { mes = MesAProcesar(dt.Rows[i]["IdPeriodo"].ToString(), periodoInicial); } if (idArticulo != dt.Rows[i]["IdArticulo"].ToString() + dt.Rows[i]["IdCliente"].ToString()) { idArticulo = dt.Rows[i]["IdArticulo"].ToString() + dt.Rows[i]["IdCliente"].ToString(); lista.Add(forecast); forecast = new CedForecastWebEntidades.RFoPA(); forecast.CantidadMesesParaDesvio = cantidadMesesParaDevio; CopiarCab(dt.Rows[i], forecast, Forecast.IdPeriodo); if (Forecast.IdTipoPlanilla == "RollingForecast") { //Buscar ventas reales CedForecastWebEntidades.Venta venta = new CedForecastWebEntidades.Venta(); venta = ventaLista.Find((delegate(CedForecastWebEntidades.Venta e) { return e.IdCliente == dt.Rows[i]["IdCliente"].ToString() && e.IdArticulo == dt.Rows[i]["IdArticulo"].ToString(); })); if (venta != null) { forecast.Ventas = venta.Cantidad; } //Buscar total proyectado CedForecastWebEntidades.RFoPA totalProyectado = new CedForecastWebEntidades.RFoPA(); totalProyectado = totalProyectadoLista.Find((delegate(CedForecastWebEntidades.RFoPA e) { return e.IdCliente == dt.Rows[i]["IdCliente"].ToString() && e.Articulo.Id == dt.Rows[i]["IdArticulo"].ToString(); })); if (totalProyectado != null) { forecast.Proyectado = totalProyectado.Proyectado; } } } CopiarDet(dt.Rows[i], forecast, mes); } lista.Add(forecast); } cantidadFilas = lista.Count; return lista; }
protected void detalleGridView_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName.Equals("AddDetalle")) { try { if (ClienteDropDownList.SelectedItem.Value.Equals(string.Empty)) { throw new Exception("Debe seleccionar un cliente antes de ingresar un detalle"); } CultureInfo cedeiraCultura = new System.Globalization.CultureInfo(System.Configuration.ConfigurationManager.AppSettings["Cultura"]); string auxIdArticulo = ((DropDownList)detalleGridView.FooterRow.FindControl("ddlIdArticulo")).SelectedValue; CedForecastWebEntidades.RFoPA forecast = ((List<CedForecastWebEntidades.RFoPA>)ViewState["lineas"]).Find((delegate(CedForecastWebEntidades.RFoPA e1) { return e1.Articulo.Id == auxIdArticulo; })); if (forecast != null && forecast.Articulo.Id == auxIdArticulo) { throw new Exception("Articulo ya ingresado."); } CedForecastWebEntidades.RFoPA l = new CedForecastWebEntidades.RFoPA(); l.IdCuenta = ((CedForecastWebEntidades.Sesion)Session["Sesion"]).Cuenta.Id; l.Articulo.GrupoArticulo.Division.Id = DivisionDropDownList.SelectedValue; l.Cliente.Id = ClienteDropDownList.SelectedValue; l.IdPeriodo = PeriodoTextBox.Text; l.IdTipoPlanilla = "RollingForecast"; if (!auxIdArticulo.Equals(string.Empty)) { l.Articulo = new CedForecastWebEntidades.Articulo(); l.Articulo.Id = auxIdArticulo; List<CedForecastWebEntidades.Articulo> ArticuloLista = new List<CedForecastWebEntidades.Articulo>(); string listaArticulosADescartar = ListaArticulosADescartar(""); ArticuloLista = CedForecastWebRN.Articulo.Lista(true, (CedForecastWebEntidades.Sesion)Session["Sesion"], FamiliaArticuloDropDownList.SelectedValue, listaArticulosADescartar); CedForecastWebEntidades.Articulo articulo = new CedForecastWebEntidades.Articulo(); articulo = ArticuloLista.Find((delegate(CedForecastWebEntidades.Articulo e1) { return e1.Id == auxIdArticulo; })); l.Articulo.Descr = articulo.Descr; } else { throw new Exception("Seleccione un artículo"); } List<CedForecastWebEntidades.Venta> ventaLista = new List<CedForecastWebEntidades.Venta>(); ventaLista = CedForecastWebRN.Venta.ConsultarTotales(PrimerMes(l.IdPeriodo), l.IdPeriodo, (CedForecastWebEntidades.Sesion)Session["Sesion"]); CedForecastWebEntidades.Venta venta = new CedForecastWebEntidades.Venta(); venta = ventaLista.Find((delegate(CedForecastWebEntidades.Venta e1) { return e1.IdCliente == l.IdCliente && e1.IdArticulo == l.Articulo.Id; })); if (venta != null) { l.Ventas = venta.Cantidad; } List<CedForecastWebEntidades.RFoPA> totalProyectadoLista = new List<CedForecastWebEntidades.RFoPA>(); totalProyectadoLista = CedForecastWebRN.RFoPA.TotalProyectado(l, (CedForecastWebEntidades.Sesion)Session["Sesion"]); CedForecastWebEntidades.RFoPA totalProyectado = new CedForecastWebEntidades.RFoPA(); totalProyectado = totalProyectadoLista.Find((delegate(CedForecastWebEntidades.RFoPA e1) { return e1.IdCliente == l.IdCliente && e1.Articulo.Id == l.Articulo.Id; })); if (totalProyectado != null) { l.Proyectado = totalProyectado.Proyectado; } int sumaCantidades = 0; for (int i = 1; i < 13; i++) { sumaCantidades += Convert.ToInt32(((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad" + i.ToString())).Text); } if (sumaCantidades == 0) { throw new Exception("Debe informar por lo menos un dato para el articulo seleccionado."); } string auxCantidad1 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad1")).Text; if (!auxCantidad1.Contains(",")) { l.Cantidad1 = Convert.ToDecimal(auxCantidad1, cedeiraCultura); } else { throw new Exception("Detalle no agregado porque el separador de decimales debe ser el punto"); } string auxCantidad2 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad2")).Text; if (!auxCantidad2.Contains(",")) { l.Cantidad2 = Convert.ToDecimal(auxCantidad2, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } string auxCantidad3 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad3")).Text; if (!auxCantidad3.Contains(",")) { l.Cantidad3 = Convert.ToDecimal(auxCantidad3, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } string auxCantidad4 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad4")).Text; if (!auxCantidad4.Contains(",")) { l.Cantidad4 = Convert.ToDecimal(auxCantidad4, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } string auxCantidad5 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad5")).Text; if (!auxCantidad5.Contains(",")) { l.Cantidad5 = Convert.ToDecimal(auxCantidad5, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } string auxCantidad6 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad6")).Text; if (!auxCantidad6.Contains(",")) { l.Cantidad6 = Convert.ToDecimal(auxCantidad6, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } string auxCantidad7 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad7")).Text; if (!auxCantidad7.Contains(",")) { l.Cantidad7 = Convert.ToDecimal(auxCantidad7, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } string auxCantidad8 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad8")).Text; if (!auxCantidad8.Contains(",")) { l.Cantidad8 = Convert.ToDecimal(auxCantidad8, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } string auxCantidad9 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad9")).Text; if (!auxCantidad9.Contains(",")) { l.Cantidad9 = Convert.ToDecimal(auxCantidad9, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } string auxCantidad10 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad10")).Text; if (!auxCantidad10.Contains(",")) { l.Cantidad10 = Convert.ToDecimal(auxCantidad10, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } string auxCantidad11 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad11")).Text; if (!auxCantidad11.Contains(",")) { l.Cantidad11 = Convert.ToDecimal(auxCantidad11, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } string auxCantidad12 = ((TextBox)detalleGridView.FooterRow.FindControl("txtCantidad12")).Text; if (!auxCantidad12.Contains(",")) { l.Cantidad12 = Convert.ToDecimal(auxCantidad12, cedeiraCultura); } else { throw new Exception("Detalle no actualizado porque el separador de decimales debe ser el punto"); } //Agrego la nueva linea ((List<CedForecastWebEntidades.RFoPA>)ViewState["lineas"]).Add(l); //Me fijo si elimino la fila automática List<CedForecastWebEntidades.RFoPA> lineas = ((List<CedForecastWebEntidades.RFoPA>)ViewState["lineas"]); CedForecastWebEntidades.RFoPA lineaInicial = lineas[0]; if (lineaInicial.IdCuenta == null) { ((List<CedForecastWebEntidades.RFoPA>)ViewState["lineas"]).Remove(lineaInicial); } detalleGridView.DataSource = ViewState["lineas"]; detalleGridView.DataBind(); BindearGrillayDropDownLists(((List<CedForecastWebEntidades.RFoPA>)ViewState["lineas"]), ""); } catch (Exception ex) { ScriptManager.RegisterClientScriptBlock(this, GetType(), "Message", "<SCRIPT LANGUAGE='javascript'>alert('" + ex.Message.ToString().Replace("'", "") + "');</SCRIPT>", false); } } }