public SystemValidationModel Save(VentasAddViewModel viewModel)
        {
            var venta = Mapper.Map <Venta>(viewModel);

            venta.DateCreated = DateTime.Now;
            //var timbrado = _timbrados.GetValidTimbrado(viewModel.SucursalId, viewModel.CajaId);
            //if (timbrado == null)
            //	return new SystemValidationModel() { Success = false, Message = "No existe un timbrado valido registrado" };
            //venta.Timbrado = timbrado;
            //var nroFactura = GetValidNroFactura(timbrado);
            //if (nroFactura == null)
            //	return new SystemValidationModel() { Success = false, Message = "No existen numeros validos para el timbrado actual" };

            if (viewModel.PagoVenta.Cambio != 0)
            {
                venta.Cambio = viewModel.PagoVenta.Cambio;
            }
            DescontarStock(viewModel.DetalleVenta, viewModel.SucursalId);
            venta.Estado = viewModel.CondicionVenta == Constants.CondicionVenta.Contado ? Constants.EstadoVenta.Pagado : Constants.EstadoVenta.PendientedePago;

            if (venta.Estado == Constants.EstadoVenta.Pagado)
            {
                SaveDetalleCaja(venta, viewModel);
            }

            if (venta.CondicionVenta == Constants.CondicionVenta.Credito)
            {
                AumentarSaldoCliente(venta);
            }

            _context.Entry(venta).State = EntityState.Added;
            foreach (var detalle in venta.DetalleVenta)
            {
                _context.Entry(detalle).State = EntityState.Added;
            }
            foreach (var cuota in venta.Cuotas)
            {
                _context.Entry(cuota).State = EntityState.Added;
            }

            if (viewModel.PedidoId != null)
            {
                var pedido = _pedidos.GetById(viewModel.PedidoId.Value);
                ChecForUpdatePedido(pedido, venta.DetalleVenta);
                pedido.Estado = pedido.Delivery ? Constants.EstadoPedido.EntregadoPorDelivery : Constants.EstadoPedido.Finalizado;
                _context.Entry(pedido).State = EntityState.Modified;
            }

            var success    = _context.SaveChanges() > 0;
            var validation = new SystemValidationModel()
            {
                Id      = venta.Id,
                Message = success ? "Se ha guardado correctamente la venta" : "No se pudo guardar la venta",
                Success = success
            };

            return(validation);
        }
        private void SaveDetalleCaja(Venta venta, VentasAddViewModel viewModel)
        {
            var cajaAperturaCierreDetalle = new DetalleCajaAperturaCierre()
            {
                CajaAperturaCierreId = viewModel.CajaAperturaCierreId,
                Monto         = venta.MontoTotal,
                Cambio        = venta.Cambio,
                TipoOperacion = Constants.TipoCajaAperturaCierreOperacion.Venta
            };

            _context.Entry(cajaAperturaCierreDetalle).State = EntityState.Added;
        }
Beispiel #3
0
        public IActionResult Add()
        {
            var viewModel = new VentasAddViewModel()
            {
                SucursalId = SucursalId, CajaId = CajaId, CajaAperturaCierreId = CajaAperturaCierreId
            };
            var timbrado = _timbrados.GetValidTimbrado(SucursalId, CajaId);

            viewModel.NroFactura       = _ventas.GetValidNroFactura(SucursalId, CajaId);
            viewModel.NroFacturaString = _ventas.GetNroFacturaString(SucursalId, CajaId, viewModel.NroFactura);
            viewModel.TimbradoId       = timbrado.Id;
            if (timbrado != null)
            {
                viewModel = Mapper.Map(timbrado, viewModel);
            }
            return(View(viewModel));
        }