Exemplo n.º 1
0
        protected void CargarGrid(Int32 idAgenteEconomico, int mes)
        {
            DateTime fechaInicio;
            DateTime fechaFin;


            List <InventarioServicio_T.Inventario> inventarios;
            List <Venta> ventas;


            DataTable datos;
            DataRow   fila;


            FormsIdentity             id     = (FormsIdentity)Context.User.Identity;
            FormsAuthenticationTicket ticket = id.Ticket;
            string data = ticket.UserData;

            Utils.Usuario user = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize <Utils.Usuario>(data);


            // fechaFin = new DateTime(2012, 06, 30);// DateTime.Now;

            //   fechaFin = new DateTime(ano, mes, DateTime.DaysInMonth(ano,mes));

            ano = Convert.ToInt32(DropDownListAno.Text);


            if (mes != DateTime.Now.Month)
            {
                fechaFin = new DateTime(ano, mes, DateTime.DaysInMonth(ano, mes));
            }
            else
            {
                fechaFin = new DateTime(ano, mes, DateTime.Now.Day);
            }



            fechaInicio = new DateTime(fechaFin.Year, fechaFin.Month, 1);

            VentaServicio_T.VentaContratoClient           vent   = new VentaContratoClient();
            InventarioServicio_T.InventarioContratoClient invent = new InventarioContratoClient();

            inventarios = invent.ObtenerListadoPorFechaActivo(user.IdAgenteEconomicoAgenteTipo, fechaInicio, fechaFin, true);
            ventas      = vent.ObtenerListadoPorFechaActivo(user.IdAgenteEconomicoAgenteTipo, fechaInicio.AddDays(-1), fechaFin.AddDays(-1)); //Le restamos uno a cada fecha de inventario porque asi la guardamos en ventas
            //test

            CapacidadAlmacenamientoServicio_T.CapacidadAlmacenamientoContratoClient capa = new CapacidadAlmacenamientoContratoClient();
            ProductoServicio_T.ProductoContratoClient pro = new ProductoContratoClient();

            var capacidades = capa.ObtenerListadoPorAgenteEconomico(idAgenteEconomico);
            var productos   = pro.ObtenerListadoPorAgenteEconomicoActivo(idAgenteEconomico);


            datos = new DataTable();
            datos.Columns.Add("IdInventario", typeof(Int32));
            datos.Columns.Add("IdVenta", typeof(Int32));
            datos.Columns.Add("Fecha", typeof(DateTime));
            datos.Columns.Add("HoraCorte");

            foreach (var p in productos)
            {
                var productoPresentacionTipo = p.ProductoPresentacionTipos.Where(pp => pp.IdPresentacionTipo == 4).FirstOrDefault();
                if (productoPresentacionTipo != null)
                {
                    datos.Columns.Add("Inv_" + productoPresentacionTipo.IdProductoxPresentacion.ToString()); //Galón Chekar como guarda el id de productopresentacion (si es galon o litro)
                    datos.Columns.Add("Ven_" + productoPresentacionTipo.IdProductoxPresentacion.ToString()); //Galón Chekar como guarda el id de productopresentacion (si es galon o litro)
                    datos.Columns.Add("Cap_" + productoPresentacionTipo.IdProducto.ToString());              //Galón
                }
            }

            foreach (var inv in inventarios)
            {
                fila = datos.NewRow();
                fila["IdInventario"] = inv.IdInventario;
                fila["IdVenta"]      = 0;
                fila["Fecha"]        = inv.Fecha;
                //  fila["HoraCorte"] = inv.HoraCorte;

                TimeSpan span = TimeSpan.Parse(inv.HoraCorte.ToString());


                fila["HoraCorte"] = DateTime.Today.Add(span).ToString("hh:mm:ss tt");


                foreach (var det in inv.InventarioDetalle)
                {
                    if (datos.Columns.Contains("Inv_" + det.IdProductoxPresentacion.ToString()))//GB
                    {
                        fila["Inv_" + det.IdProductoxPresentacion.ToString()] = det.InventarioTotal.ToString("#,##0.00");
                    }
                }
                //Buscando en tabla ventas
                var agenteVenta = (from t in ventas
                                   where t.IdAgenteEconomicoAgenteTipo == inv.IdAgenteEconomicoAgenteTipo && t.Fecha == inv.Fecha.AddDays(-1)
                                   select t).FirstOrDefault();
                if (agenteVenta != null)
                {
                    fila["IdVenta"] = agenteVenta.IdVenta;
                    foreach (var det in agenteVenta.VentaDetalles)
                    {
                        if (datos.Columns.Contains("Ven_" + det.IdProductoxPresentacion.ToString()))//GB
                        {
                            fila["Ven_" + det.IdProductoxPresentacion.ToString()] = det.Volumen.ToString("#,##0.00");
                        }
                    }
                }
                else
                {
                    fila["IdVenta"] = 0;
                }


                //Capacidades Almacenamiento


                foreach (var p in productos)
                {
                    var productoPresentacionTipo = p.ProductoPresentacionTipos.Where(pp => pp.IdPresentacionTipo == 4).FirstOrDefault();
                    if (productoPresentacionTipo != null)
                    {
                        if (inv.IdInventario != 0 || inv.IdInventario == 0)
                        {
                            var agenteCapacidades = (from t in capacidades
                                                     where t.IdProducto == productoPresentacionTipo.IdProducto &&
                                                     t.Activo == true
                                                     select t).ToList();
                            if (agenteCapacidades != null)
                            {
                                var total = 0;
                                foreach (var cap in agenteCapacidades)
                                {
                                    total = total + cap.CapacidadAlmacenamientoTanque;
                                }
                                if (datos.Columns.Contains("Cap_" + productoPresentacionTipo.IdProducto.ToString()))//GB
                                {
                                    fila["Cap_" + productoPresentacionTipo.IdProducto.ToString()] = total.ToString("#,##0");
                                }
                            }
                        }
                        else
                        {
                            foreach (var det in inv.InventarioDetalle)
                            {
                                if (det.IdProductoxPresentacion == productoPresentacionTipo.IdProductoxPresentacion)
                                {
                                    if (datos.Columns.Contains("Cap_" + productoPresentacionTipo.IdProducto.ToString()))//GB
                                    {
                                        fila["Cap_" + productoPresentacionTipo.IdProducto.ToString()] = det.CapacidadInstalada.ToString("#,##0");
                                    }
                                }
                            }
                        }
                    }
                }

                datos.Rows.Add(fila);
            }


            while (GrdInventario.Columns.Count >= 5)
            {
                GrdInventario.Columns.Remove(GrdInventario.Columns[GrdInventario.Columns.Count - 1]);
            }

            GridViewColumn column;

            foreach (var p in productos)
            {
                var productoPresentacionTipo = p.ProductoPresentacionTipos.Where(pp => pp.IdPresentacionTipo == 4).FirstOrDefault();
                if (productoPresentacionTipo != null)
                {
                    column = new GridViewBandColumn();
                    (column as GridViewBandColumn).Columns.Add(new GridViewDataTextColumn {
                        FieldName = "Cap_" + productoPresentacionTipo.IdProducto.ToString(), Caption = "Capacidad (Gls)"
                    });
                    (column as GridViewBandColumn).Columns[(column as GridViewBandColumn).Columns.Count - 1].HeaderStyle.Wrap          = DevExpress.Utils.DefaultBoolean.True;
                    (column as GridViewBandColumn).Columns[(column as GridViewBandColumn).Columns.Count - 1].CellStyle.HorizontalAlign = HorizontalAlign.Right;


                    (column as GridViewBandColumn).Columns.Add(new GridViewDataTextColumn {
                        FieldName = "Inv_" + productoPresentacionTipo.IdProductoxPresentacion.ToString(), Caption = "Inventario Actual (Gls)"
                    });
                    (column as GridViewBandColumn).Columns[(column as GridViewBandColumn).Columns.Count - 1].HeaderStyle.Wrap          = DevExpress.Utils.DefaultBoolean.True;
                    (column as GridViewBandColumn).Columns[(column as GridViewBandColumn).Columns.Count - 1].CellStyle.HorizontalAlign = HorizontalAlign.Right;

                    (column as GridViewBandColumn).Columns.Add(new GridViewDataTextColumn {
                        FieldName = "Ven_" + productoPresentacionTipo.IdProductoxPresentacion.ToString(), Caption = "Ventas del Días Anterior (Lts)"
                    });
                    (column as GridViewBandColumn).Columns[(column as GridViewBandColumn).Columns.Count - 1].HeaderStyle.Wrap          = DevExpress.Utils.DefaultBoolean.True;
                    (column as GridViewBandColumn).Columns[(column as GridViewBandColumn).Columns.Count - 1].CellStyle.HorizontalAlign = HorizontalAlign.Right;

                    column.Caption = p.NombreComercial;


                    column.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                    GrdInventario.Columns.Add(column);
                }
            }


            GrdInventario.DataSource = datos;
            GrdInventario.DataBind();

            GrdInventario.Columns["Fecha"].Width     = 80;
            GrdInventario.Columns["HoraCorte"].Width = 90;

            if (inventarios.Where(inv => inv.IdInventario == 0).Count() != 0)
            {
                LblAlerta.Text = String.Format("Tiene {0} día(s) de inventario sin reportar. Por favor, actualice su información.", inventarios.Where(inv => inv.IdInventario == 0).Count());
                Image1.Visible = true;
            }
            else
            {
                LblAlerta.Text = "";
                Image1.Visible = false;
            }

            LblAlerta.Visible = true;
            //     Image1.Visible = true;
        }