public Pago(TipoPago tipoPago, string tarjeta, int numeroCuotas, decimal porcentajeRecargo, int[] numeroOrdenCheques, CuentaBancaria cuentaBancaria, decimal monto, decimal montoRestante, decimal descuento, decimal cft, decimal iva, bool habilitado = true) : base(true) { if ((tipoPago == TipoPago.TarjetaCrédito || tipoPago == TipoPago.TarjetaDébito) && string.IsNullOrEmpty(tarjeta)) { throw new NegocioException("Error al crear el pago. La trajeta no puede ser vacia."); } if (tipoPago == TipoPago.TarjetaCrédito && numeroCuotas == 0) { throw new NegocioException("Error al crear el pago. La cantidad de cuotas debe ser mayor a cero."); } TipoPago = tipoPago; PorcentajeRecargo = porcentajeRecargo; MontoPago = new MontoPago(monto, descuento, cft, iva); Tarjeta = tarjeta; NumeroCuotas = numeroCuotas; NumeroOrdenCheques = numeroOrdenCheques; FechaEdicion = DateTime.Now; MontoRestante = montoRestante; Habilitado = habilitado; if (tipoPago == TipoPago.Deposito) { IdCuentaBancaria = cuentaBancaria.Id; CuentaBancaria = cuentaBancaria; } }
public PagoDeposito(MontoPago montoPago) : base(montoPago) { if (montoPago.CFT > 0) { throw new NegocioException("Error al crear el deposito. El CFT debe ser cero."); } }
internal void ActualizarDescuento(decimal descuento) { if (Habilitado) { MontoPago = new MontoPago(MontoPago.Monto, descuento, MontoPago.CFT, MontoPago.IVA); } }
public MontoPago ObtenerMontoPagoDesdeSubtotal(decimal montoSubtotal, decimal porcentajeCft, decimal porcentajeFacturacion, TipoCliente tipoCliente, TipoPago formaDePago) { if (EstaPaga) { return(new MontoPago(0, 0, 0, 0)); } MontoPago montoPagoPendiente = new MontoPago(0, 0, 0, 0); foreach (VentaItem ventaItem in VentaItems) { MontoProducto montoProductoPendientePago = ventaItem.PendientePago(); if (montoSubtotal >= montoProductoPendientePago.Valor) { montoPagoPendiente += ventaItem.ObtenerMontoPagoPendiente(porcentajeCft, porcentajeFacturacion, tipoCliente, formaDePago); montoSubtotal -= montoProductoPendientePago.Valor; } else { montoPagoPendiente += ventaItem.ObtenerMontoPago(montoSubtotal, porcentajeCft, porcentajeFacturacion, tipoCliente, formaDePago); montoSubtotal = 0; break; } } return(montoPagoPendiente); }
public PagoCheque(MontoPago montoPago) : base(montoPago) { if (montoPago.CFT > 0) { throw new NegocioException("Error al crear el pago en cheque. El CFT debe ser cero."); } }
public PagoEfectivo(MontoPago montoPago) : base(montoPago) { if (montoPago.CFT > 0) { throw new NegocioException("Error al crear el pago en efectivo. El CFT debe ser cero."); } }
public Pago(MontoPago montoPago) { if (montoPago == null) { throw new NegocioException("Error al crear el pago. El monto no puede ser nulo."); } MontoPago = montoPago; }
public void ActualizarTotalesPago() { if (Pagos.Count == 0) { PagoTotal = new MontoPago(0, 0, 0, 0); } else { PagoTotal = Pagos.Select(x => x.MontoPago).Aggregate((x, y) => x + y); } }
internal IEnumerable <VentaPago> ObtenerPagosDeProducto(decimal porcentajeFacturacion, TipoCliente tipoCliente) { List <VentaPago> pagos = new List <VentaPago>(); foreach (KeyValuePair <VentaPago, decimal> montoPorPago in this.Pagos) { MontoPago montoPago = ObtenerMontoPago(montoPorPago.Value, montoPorPago.Key.PorcentajeRecargo, porcentajeFacturacion, tipoCliente, montoPorPago.Key.TipoPago); pagos.Add(new VentaPago(montoPorPago.Key.IdVenta, montoPorPago.Key.TipoPago, montoPorPago.Key.Tarjeta, montoPorPago.Key.NumeroCuotas, montoPorPago.Key.PorcentajeRecargo, montoPorPago.Key.NumeroOrdenCheques, montoPorPago.Key.CuentaBancaria, montoPago.Monto, 0, montoPago.Descuento, montoPago.CFT, montoPago.IVA)); } return(pagos); }
public Venta(int idSucursal) : base(true) { IdSucursal = idSucursal; VentaItems = new List <VentaItem>(); Pagos = new List <VentaPago>(); Cheques = new List <Cheque>(); MontoTotal = new MontoProducto(0, 0); PagoTotal = new MontoPago(0, 0, 0, 0); Comisiones = new List <Comision>(); Fecha = DateTime.Now; FechaEdicion = DateTime.Now; PorcentajeFacturacion = 1; }
public PagoDebito(Banco banco, MontoPago montoPago) : base(montoPago) { if (montoPago.CFT > 0) { throw new NegocioException("Error al crear el pago en debito. El CFT debe ser cero."); } if (banco == null) { throw new NegocioException("Error al crear el pago en debito. El banco no puede ser nulo."); } Banco = banco; }
public PagoCredito(Banco banco, int cantidadCuotas, MontoPago montoPago) : base(montoPago) { if (banco == null) { throw new NegocioException("Error al crear el pago en crédito. El banco no puede ser nulo."); } if (cantidadCuotas > 0) { throw new NegocioException("Error al crear el pago en crédito. La cantidad de cuotas debe ser mayor a cero."); } Banco = banco; CantidadCuotas = cantidadCuotas; }
internal decimal AgregarPago(VentaPago pago, decimal porcentajeRecargo, decimal porcentajeFacturacion, TipoCliente tipoCliente) { decimal pendientePago = 0; if (Total.Valor == 0) { ActualizarPagos(pago, pago.MontoRestante, 0); return(pago.MontoRestante); } if (PorcentajePago == 0) { pendientePago = Total.Valor; } else { pendientePago = PendientePago().Valor; } if (pendientePago > pago.MontoRestante) { MontoPago montoPago = ObtenerMontoPago(pago.MontoRestante, porcentajeRecargo, porcentajeFacturacion, tipoCliente, pago.TipoPago); pago.ActualizarIva(pago.MontoPago.IVA + montoPago.IVA); pago.ActualizarDescuento(pago.MontoPago.Descuento + montoPago.Descuento); PorcentajePago += Math.Round(pago.MontoRestante / Total.Valor, 4, MidpointRounding.AwayFromZero); ActualizarPagos(pago, 0, pago.MontoRestante); return(0); } else { MontoPago montoPago = ObtenerMontoPago(pendientePago, porcentajeRecargo, porcentajeFacturacion, tipoCliente, pago.TipoPago); pago.ActualizarIva(pago.MontoPago.IVA + montoPago.IVA); pago.ActualizarDescuento(pago.MontoPago.Descuento + montoPago.Descuento); PorcentajePago += Math.Round(pendientePago / Total.Valor, 4, MidpointRounding.AwayFromZero); ActualizarPagos(pago, pago.MontoRestante - pendientePago, pendientePago); return(pago.MontoRestante); } }
internal void ActualizarIva(decimal iva) { MontoPago = new MontoPago(MontoPago.Monto, MontoPago.Descuento, MontoPago.CFT, iva); }
internal void Corregir() { MontoPago = new MontoPago(MontoPago.Monto - MontoRestante, MontoPago.Descuento, MontoPago.CFT, MontoPago.IVA); ActualizarMontoRestante(0); }