public SystemValidationModel Confirmar(OrdenPagoComprasAddViewModel viewModel)
        {
            var ordenPago = GetById(viewModel.Id);

            ordenPago.Estado = Constants.OrdenPagoCompraEstado.Pagado;
            ordenPago.Cambio = viewModel.PagoCompra.Cambio;
            var comprasIds = ordenPago.OrdenPagoDetalle.Select(x => x.CompraId).ToList();
            var compras    = _context.Set <Compra>().Where(x => comprasIds.Contains(x.Id) && x.Active).ToList();

            foreach (var compra in compras)
            {
                compra.Estado = Constants.EstadoCompra.Pagado;
                _context.Entry(compra).State = EntityState.Modified;
            }
            var proveedor = _context.Set <Proveedor>().FirstOrDefault(x => x.Id == viewModel.Proveedor.ProveedorId);

            proveedor.Saldo -= viewModel.MontoTotal;
            _context.Entry(proveedor).State = EntityState.Modified;
            var success    = _context.SaveChanges() > 0;
            var validation = new SystemValidationModel()
            {
                Id      = ordenPago.Id,
                Message = success ? "Se ha confirmado correctamente la orden de pago" : "No se pudo confirmar la orden de pago",
                Success = success
            };

            return(validation);
        }
        public SystemValidationModel Save(OrdenPagoComprasAddViewModel viewModel)
        {
            var ordenPago = Mapper.Map <OrdenPagoCompra>(viewModel);

            ordenPago.Estado = Constants.OrdenPagoCompraEstado.Pendiente;
            var comprasIds = viewModel.OrdenPagoDetalle.Select(x => x.CompraId).ToList();
            var compras    = _context.Set <Compra>().Where(x => comprasIds.Contains(x.Id)).ToList();

            _context.Entry(ordenPago).State = EntityState.Added;
            foreach (var compra in compras)
            {
                compra.Estado = Constants.EstadoCompra.PendientedePago;
                _context.Entry(compra).State = EntityState.Modified;
            }

            foreach (var detalle in ordenPago.OrdenPagoDetalle)
            {
                _context.Entry(detalle).State = EntityState.Added;
            }
            var success    = _context.SaveChanges() > 0;
            var validation = new SystemValidationModel()
            {
                Id      = ordenPago.Id,
                Message = success ? "Se ha guardado correctamente la orden de pago" : "No se pudo guardar la orden de pago",
                Success = success
            };

            return(validation);
        }
        public IActionResult Add()
        {
            var viewModel = new OrdenPagoComprasAddViewModel()
            {
                SucursalId = SucursalId
            };

            return(View(viewModel));
        }