public ActionResult ConfirmarDevolucion(DevolucionAgregarViewModel devolucionVM) { if (ModelState.IsValid) { if (ValidarCantidades(devolucionVM.Items)) { decimal montoARestar = 0; foreach (var item in devolucionVM.Items) { if (item.CantidadADevolver > 0) { montoARestar += item.CantidadADevolver * item.PrecioDeVenta; //Resto la CantidadADevolver al registro correspondiente VentaItem VentaItem = _ventaItemsServicios.GetOne(item.VentaItemID); VentaItem.Cantidad -= item.CantidadADevolver; _ventaItemsServicios.Update(VentaItem); //Creo un nuevo registro con la CantidadADevolver y Devuelto = true VentaItem.Cantidad = item.CantidadADevolver; VentaItem.Devuelto = true; _ventaItemsServicios.Add(VentaItem); //Si afecta el stock aumento el stock y agrego un movimiento de stock del tipo "devolucion" if (item.VuelveAlStock) { StockMovimiento StockMovimiento = new StockMovimiento(); StockMovimiento.Fecha = DateTime.Now; StockMovimiento.Cantidad = item.CantidadADevolver; StockMovimiento.TipoMovimientoStockID = 3; //Es la devolucion StockMovimiento.ArticuloID = item.ArticuloID; var usuario = (Usuario)System.Web.HttpContext.Current.Session["UsuarioActual"]; StockMovimiento.UsuarioID = usuario.Id; _stockMovimientosServicios.Agregar(StockMovimiento, (int)System.Web.HttpContext.Current.Session["SucursalActual"]); } } } //Actualiza el monto total de la venta //_ventaServicios.ActualizarMontoDeVenta(devolucionVM.VentaID, montoARestar); ViewBag.Informacion = "Devolución registrada con éxito"; devolucionVM.Items.Clear(); devolucionVM.VentaID = 0; return(View("Agregar", devolucionVM)); } else { ViewBag.Error = "Las cantidades a devolver no pueden ser mayor a las cantidades vendidas."; } } else { ViewBag.Error = "No se pudo generar la devolución, vuelva a intentarlo."; } return(View("Agregar", devolucionVM)); }