예제 #1
0
        public ActionResult Listado()
        {
            var productos = new List <ProductoConcretoViewModel>();

            foreach (var prod in _db.Set <ProductoConcreto>().Where(p => p.Producto.Activo).ToList())
            {
                var prodConcreto = new ProductoConcretoViewModel()
                {
                    Producto = prod
                };
                if (_db.Set <ExistenciaCentroDeCosto>().Any(e => e.ProductoId == prod.Id))
                {
                    prodConcreto.Existencias =
                        _db.Set <ExistenciaCentroDeCosto>()
                        .Include(e => e.CentroDeCosto)
                        .Where(e => e.ProductoId == prod.Id)
                        .Select(e => new ExistenciaViewModel()
                    {
                        Lugar    = e.CentroDeCosto.Nombre,
                        Cantidad = e.Cantidad
                    }).ToList();
                }
                if (_db.Set <ExistenciaAlmacen>().Any(e => e.ProductoId == prod.Id))
                {
                    var existencias = _db.Set <ExistenciaAlmacen>()
                                      .Include(e => e.Almacen)
                                      .Where(e => e.ProductoId == prod.Id)
                                      .Select(e => new ExistenciaViewModel()
                    {
                        Lugar    = e.Almacen.Descripcion,
                        Cantidad = e.ExistenciaEnAlmacen
                    }).ToList();
                    foreach (var ex in existencias)
                    {
                        prodConcreto.Existencias.Add(ex);
                    }
                }
                productos.Add(prodConcreto);
            }
            return(View(productos));
        }
예제 #2
0
        public ActionResult Historial(int?id)
        {
            var producto         = _db.Set <ProductoConcreto>().Find(id);
            var entradasAlmacen  = _db.Set <EntradaAlmacen>().Where(e => e.ProductoId == id);
            var salidasDeAlmacen = _db.Set <DetalleSalidaAlmacen>().Where(d => d.Producto.ProductoId == id);
            var mermasDeAlmacen  = _db.Set <SalidaPorMerma>().Where(d => d.ExistenciaAlmacen.Producto.ProductoId == id);
            var movimientos      = _db.Set <MovimientoDeProducto>().Include(m => m.Tipo).Include(m => m.Usuario).Include(m => m.Producto).Where(m => m.ProductoId == id).ToList();

            var resumenMov = new List <DetalleMovimientoProductoViewModel>();

            resumenMov.AddRange(salidasDeAlmacen.Select(s => new DetalleMovimientoProductoViewModel()
            {
                Fecha            = s.Vale.DiaContable.Fecha,
                Cantidad         = s.Cantidad,
                Usuario          = s.Vale.Usuario.UserName,
                Lugar            = "Almacen",
                TipoDeMovimiento = "Salida de almacen",
                Unidad           = s.Producto.Producto.UnidadDeMedida.Siglas,
                Detalle          = "entrada a " + s.Vale.CentroDeCosto.Nombre
            }));

            resumenMov.AddRange(entradasAlmacen.Select(e => new DetalleMovimientoProductoViewModel()
            {
                Fecha            = e.DiaContable.Fecha,
                Cantidad         = e.Cantidad,
                Usuario          = e.Usuario.UserName,
                Lugar            = "Almacen",
                TipoDeMovimiento = "Entrada",
                Unidad           = e.Producto.UnidadDeMedida.Siglas,
                Detalle          = ""
            }));

            resumenMov.AddRange(movimientos.Select(s => new DetalleMovimientoProductoViewModel()
            {
                Fecha            = s.Fecha,
                Cantidad         = s.Cantidad,
                Usuario          = s.Usuario.UserName,
                Lugar            = s.CentroDeCosto.Nombre,
                TipoDeMovimiento = s.Tipo.Descripcion == TipoDeMovimientoConstantes.SalidaAProduccion?"Venta":s.Tipo.Descripcion,
                Unidad           = s.Producto.UnidadDeMedida.Siglas,
                Detalle          = ""
            }));

            resumenMov.AddRange(mermasDeAlmacen.Select(s => new DetalleMovimientoProductoViewModel()
            {
                Fecha            = s.Fecha,
                Cantidad         = s.Cantidad,
                Usuario          = s.Usuario.UserName,
                Lugar            = "Almacen",
                TipoDeMovimiento = "Merma",
                Unidad           = s.UnidadDeMedida.Siglas,
                Detalle          = ""
            }));

            var existencia = _db.Set <ExistenciaCentroDeCosto>().Where(e => e.ProductoId == id).Select(e => new ExistenciaViewModel()
            {
                Lugar = e.CentroDeCosto.Nombre, Cantidad = e.Cantidad
            }).ToList();

            existencia.Add(new ExistenciaViewModel()
            {
                Lugar = "Almacen", Cantidad = _db.Set <ExistenciaAlmacen>().Any(a => a.ProductoId == id)? _db.Set <ExistenciaAlmacen>().Where(a => a.ProductoId == id).Sum(a => a.ExistenciaEnAlmacen):0
            });

            var viewModel = new ProductoConcretoViewModel()
            {
                Producto    = producto,
                Movimientos = resumenMov,
                Existencias = existencia
            };

            return(View(viewModel));
        }