Example #1
0
        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));
        }