public ActionResult Create() { VentaEditViewModel ventaVm = new VentaEditViewModel { Clientes = CombosHelper.GetClientes() }; List <DetalleVentaTmp> detallesTmp = _dbContext .DetalleVentasTmp.Include(dvt => dvt.Producto) .ToList(); ventaVm.DetallesVenta = Mapper .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detallesTmp); //return View(ventaVm); return(View("Create2", ventaVm)); }
public ActionResult Up(int id) { var detalleTmp = _dbContext.DetalleVentasTmp .SingleOrDefault(dvt => dvt.DetalleVentaTmpId == id); var producto = _dbContext.Productos .SingleOrDefault(p => p.ProductoId == detalleTmp.ProductoId); VentaEditViewModel ventaVm = new VentaEditViewModel { Clientes = CombosHelper.GetClientes() }; if (producto.UnidadesEnExistencia < detalleTmp.Cantidad + 1) { var detalles = _dbContext.DetalleVentasTmp .Include(dvt => dvt.Producto) .ToList(); ventaVm.DetallesVenta = Mapper .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles); ModelState.AddModelError(string.Empty, "Stock insuficiente"); return(RedirectToAction("Create", ventaVm)); } try { detalleTmp.Cantidad++; _dbContext.Entry(detalleTmp).State = EntityState.Modified; _dbContext.SaveChanges(); var detalles = _dbContext.DetalleVentasTmp .Include(dvt => dvt.Producto) .ToList(); ventaVm.DetallesVenta = Mapper .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles); return(RedirectToAction("Create")); } catch (Exception ex) { ModelState.AddModelError(string.Empty, "Error al intentar guardar un item de vta"); var detalles = _dbContext.DetalleVentasTmp .Include(dvt => dvt.Producto) .ToList(); ventaVm.DetallesVenta = Mapper .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles); return(RedirectToAction("Create")); } }
public ActionResult Down(int id) { var detalleTmp = _dbContext.DetalleVentasTmp .SingleOrDefault(dvt => dvt.DetalleVentaTmpId == id); VentaEditViewModel ventaVm = new VentaEditViewModel { Clientes = CombosHelper.GetClientes() }; if (detalleTmp.Cantidad - 1 < 0) { var detalles = _dbContext.DetalleVentasTmp .Include(dvt => dvt.Producto) .ToList(); ventaVm.DetallesVenta = Mapper .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles); ModelState.AddModelError(string.Empty, "La cantidad ya está en 0"); return(RedirectToAction("Create", ventaVm)); } try { detalleTmp.Cantidad--; _dbContext.Entry(detalleTmp).State = EntityState.Modified; _dbContext.SaveChanges(); var detalles = _dbContext.DetalleVentasTmp .Include(dvt => dvt.Producto) .ToList(); ventaVm.DetallesVenta = Mapper .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles); return(RedirectToAction("Create")); } catch (Exception ex) { var detalles = _dbContext.DetalleVentasTmp .Include(dvt => dvt.Producto) .ToList(); ventaVm.DetallesVenta = Mapper .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detalles); ModelState.AddModelError(string.Empty, "Error al intentar guardar un item de vta"); return(RedirectToAction("Create")); } }
public ActionResult Create(VentaEditViewModel ventaVm) { if (!ModelState.IsValid) { ventaVm.Clientes = CombosHelper.GetClientes(); List <DetalleVentaTmp> detallesTmp = _dbContext .DetalleVentasTmp.Include(dvt => dvt.Producto) .ToList(); ventaVm.DetallesVenta = Mapper .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detallesTmp); //return View(ventaVm); return(View("Create2", ventaVm)); } var cantidadItems = _dbContext.DetalleVentasTmp.Count(dvt => dvt.Cantidad > 0); if (cantidadItems == 0) { ModelState.AddModelError(string.Empty, "Debe contener al menos un item o items con cantidades superiores a 0"); ventaVm.Clientes = CombosHelper.GetClientes(); List <DetalleVentaTmp> detallesTmp = _dbContext .DetalleVentasTmp.Include(dvt => dvt.Producto) .ToList(); ventaVm.DetallesVenta = Mapper .Map <List <DetalleVentaTmp>, List <DetalleVentaListViewModel> >(detallesTmp); //return View(ventaVm); return(View("Create2", ventaVm)); } LimpiarListaDeItemsTemporales(); Venta venta = Mapper.Map <VentaEditViewModel, Venta>(ventaVm); using (var tran = _dbContext.Database.BeginTransaction()) { try { venta.EstadoId = CombosHelper.GetEstado("Facturado"); _dbContext.Ventas.Add(venta); _dbContext.SaveChanges(); var detalles = _dbContext.DetalleVentasTmp.ToList(); foreach (var detalleVentaTmp in detalles) { //Creo el detalle venta DetalleVenta detalle = Mapper .Map <DetalleVentaTmp, DetalleVenta>(detalleVentaTmp); detalle.VentaId = venta.VentaId; //le asigno el nro de venta _dbContext.DetalleVentas.Add(detalle); //guardo el detalle //Busco el producto para modificar su stock var productoInDb = _dbContext .Productos.SingleOrDefault(p => p.ProductoId == detalle.ProductoId); productoInDb.UnidadesEnExistencia -= detalle.Cantidad; _dbContext.Entry(productoInDb).State = EntityState.Modified; //cambio el estado de la entidad _dbContext.DetalleVentasTmp.Remove(detalleVentaTmp); //borro el detalle temporal } _dbContext.SaveChanges(); tran.Commit(); //TempData["Msg"] = "Venta guardada"; //return RedirectToAction("Index"); ViewBag.VentaId = venta.VentaId; return(View("SuccessfullySave")); } catch (Exception e) { ModelState.AddModelError(string.Empty, "Error al intentar guardar la venta"); //return View(ventaVm); return(View("Create2", ventaVm)); } } }