// GET: ControlesExistencias/Edit/5 public IActionResult Edit(int?id) { if (id == null) { return(NotFound()); } var control = _context.ControlesDeExistencias .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 = _existenciaService.ExistenciaAnterior(control.Turno.BarId, control.Id, control.Fecha); var productos = _context.Set <Producto>() .Where(p => _context.Set <Standard>() .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 <DetalleControlExistencia>().Any(d => d.ControlId == control.Id && d.ProductoId == p.Id) ? _context.Set <DetalleControlExistencia>().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 Nuevo([Bind("DependienteId,BarId")] Turno turno) { if (turno.BarId > 0 && turno.DependienteId > 0) { turno.Activo = true; turno.FechaInicio = DateTime.Now; _context.Add(turno); var control = new ControlExistencia { Turno = turno, Fecha = DateTime.Now, Activo = true, }; var existenciasAnteriores = _existenciaService.ExistenciaAnterior(turno.BarId, 0, DateTime.Now); control.Detalles = existenciasAnteriores.Select(e => new DetalleControlExistencia { ProductoId = e.ProductoId, Cantidad = e.Cantidad, Costo = _context.Set <Producto>().Find(e.ProductoId).Costo }).ToList(); _context.Add(control); var controlVenta = new ControlExistenciaVenta { Turno = turno, Fecha = DateTime.Now, Activo = true, }; var existenciasVentaAnteriores = _existenciaService.ExistenciaVentaAnterior(turno.BarId, 0, DateTime.Now); controlVenta.Detalles = existenciasVentaAnteriores.Select(e => new DetalleControlExistenciaVenta { ProductoId = e.ProductoId, Cantidad = e.Cantidad, Costo = _context.Set <Producto>().Find(e.ProductoId).Costo, Precio = _context.Set <Producto>().Find(e.ProductoId).Precio }).ToList(); _context.Add(controlVenta); _context.SaveChanges(); TempData["exito"] = "La acción se ha realizado correctamente"; return(RedirectToAction("Index", "Home")); } ViewData["BarId"] = new SelectList(_context.Bares, "Id", "Nombre", turno.BarId); TempData["error"] = "Error en realizar esta acción"; return(View(turno)); }