// GET: ControlesExistencias/Edit/5 public IActionResult Edit(int?id) { if (id == null) { return(NotFound()); } var control = _context.ControlesDeExistenciasVenta .Include(c => c.Turno.Dependiente) .Include(c => c.Turno.Bar) .Include(c => c.Detalles).ThenInclude(c => c.Producto) .SingleOrDefault(c => c.Id == id); if (control == null) { return(NotFound()); } var existenciaAnterior = _context.Set <ControlExistenciaVenta>() .Include(c => c.Turno) .Any(d => d.Turno.BarId == control.Turno.BarId && d.Id != control.Id && d.Fecha < control.Fecha) ? _context.Set <ControlExistenciaVenta>() .Include(c => c.Turno) .Include(c => c.Detalles) .Where(d => d.Turno.BarId == control.Turno.BarId && d.Id != control.Id && d.Fecha < control.Fecha) .OrderBy(d => d.Fecha) .Last().Detalles .Select(d => new DetalleExistenciaVM { ProductoId = d.ProductoId, Cantidad = d.Cantidad }) .ToList() : new List <DetalleExistenciaVM>(); var productos = _context.Set <Producto>() .Where(p => _context.Set <StandardVenta>() .Any(s => s.ProductoId == p.Id && s.BarId == control.Turno.BarId) || (existenciaAnterior.Any(e => e.ProductoId == p.Id) ? existenciaAnterior.SingleOrDefault(e => e.ProductoId == p.Id).Cantidad : 0) > 0) .Select(p => new DetalleExistenciaVM { ProductoId = p.Id, Producto = p.Nombre, Unidad = p.Unidad.Nombre, Cantidad = _context.Set <DetalleControlExistenciaVenta>().Any(d => d.ControlId == control.Id && d.ProductoId == p.Id) ? _context.Set <DetalleControlExistenciaVenta>().SingleOrDefault(d => d.ControlId == control.Id && d.ProductoId == p.Id).Cantidad : 0, CantidadAnterior = existenciaAnterior.Any(e => e.ProductoId == p.Id) ? existenciaAnterior.SingleOrDefault(e => e.ProductoId == p.Id).Cantidad : 0, }); var data = new ControlExistenciaVM { Id = control.Id, TurnoId = control.TurnoId, Bar = control.Turno.Bar.Nombre, Dependiente = control.Turno.Dependiente.NombreCompleto, Fecha = control.Fecha, Detalles = productos.ToList() }; return(View("PorTurno", data)); }
public IActionResult PorTurno(int id, ControlExistenciaVM controlExistencia) { var control = _context.Set <ControlExistenciaVenta>() .SingleOrDefault(c => c.Id == controlExistencia.Id); if (control == null) { return(NotFound()); } if (ModelState.IsValid) { try { foreach (var item in controlExistencia.Detalles) { var producto = _context.Set <Producto>().Find(item.ProductoId); if (_context.Set <DetalleControlExistenciaVenta>().Any(d => d.ControlId == control.Id && d.ProductoId == item.ProductoId)) { var detalle = _context.Set <DetalleControlExistenciaVenta>().SingleOrDefault(d => d.ControlId == control.Id && d.ProductoId == item.ProductoId); detalle.Cantidad = item.Cantidad; detalle.Costo = producto.Costo; detalle.Precio = producto.Precio; _context.Update(detalle); } else { _context.Add(new DetalleControlExistenciaVenta { ControlId = control.Id, ProductoId = item.ProductoId, Cantidad = item.Cantidad, Costo = producto.Costo, Precio = producto.Precio }); } } _context.SaveChanges(); TempData["exito"] = "La acción se ha realizado correctamente"; } catch (DbUpdateConcurrencyException) { if (!ControlExistenciaExists(controlExistencia.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Detalles), new { Id = control.Id })); } TempData["error"] = "Error en realizar esta acción"; return(View(controlExistencia)); }