Ejemplo n.º 1
0
        public string PostPreventa(string cliente, int vendedor, [FromBody] ListaPreventas listaPreventas)
        {
            var preventa = new Preventa()
            {
                CodigoCliente = cliente.Trim(),
                VendedorId    = vendedor,
                Fecha         = DateTime.Today,
            };

            db.Preventas.Add(preventa);
            db.SaveChanges();

            var pedidos = listaPreventas.Listado; //array con productos

            foreach (PreventaDetalle pedido in pedidos)
            {
                var preventaDetalle = new PreventaDetalle()
                {
                    PreventaId     = preventa.Id,
                    VendedorId     = vendedor,
                    CodigoProducto = pedido.CodigoProducto,
                    Cantidad       = pedido.Cantidad,
                    Precio         = pedido.Precio,
                };
                var producto = db.Productos.Find(preventaDetalle.CodigoProducto);
                producto.Existencia = producto.Existencia - int.Parse(preventaDetalle.Cantidad.ToString());

                db.Entry(producto).State = System.Data.Entity.EntityState.Modified;
                db.PreventaDetalles.Add(preventaDetalle);
            }
            db.SaveChanges();
            return(preventa.Id.ToString());
        }
Ejemplo n.º 2
0
        public ActionResult Details(string rutas)
        {
            List <Preventa> pedidos     = new List <Preventa>();
            var             nombreRutas = new List <string>();
            var             listaRutas  = rutas.Split(',');

            for (int i = 0; i < listaRutas.Length - 1; i++)
            {
                var rt = int.Parse(listaRutas[i]);
                nombreRutas.Add(db.Rutas.Find(rt).Nombre);
                pedidos.AddRange(db.Preventas.Where(p => p.Cliente.Ruta == rt).ToList());
            }

            var lista = new List <PreventaDetalle>();

            foreach (var pedido in pedidos)
            {
                foreach (var producto in pedido.PreventaDetalles)
                {
                    lista.Add(producto);
                }
            }

            var listaFinal = lista.GroupBy(p => p.CodigoProducto)
                             .Select(group => new
            {
                CodigoProducto = group.Key,
                Cantidad       = group.Sum(p => p.Cantidad),
                Nombre         = ObtenerNombreProducto(group.Key),
                Total          = group.Sum(p => p.Cantidad * p.Precio)
            })
                             .OrderBy(x => x.CodigoProducto);

            ViewBag.Total = 0;
            var ls = new List <PreventaDetalle>();

            foreach (var line in listaFinal)
            {
                var p = new PreventaDetalle()
                {
                    CodigoProducto = line.CodigoProducto,
                    Cantidad       = line.Cantidad,
                    Producto       = new Producto()
                    {
                        Codigo = line.CodigoProducto.Value, Nombre = line.Nombre
                    },
                    Precio = line.Total,
                };
                ViewBag.Total += line.Total;
                ls.Add(p);
            }

            ViewBag.Rutas       = rutas;
            ViewBag.NombreRutas = nombreRutas;

            return(View(ls));
        }