private void QuitarChequeDesdePago(VentaPago pago) { foreach (int numeroOrdenCheque in pago.NumeroOrdenCheques) { Cheques.Remove(Cheques.FirstOrDefault(y => y.NumeroCheque == numeroOrdenCheque)); } }
public void AgregaPago(decimal monto, decimal descuento, decimal cft, decimal iva, TipoPago tipoPago, decimal porcentajeCft, string trajeta, int numeroCuotas, IEnumerable <Cheque> cheques, CuentaBancaria cuentaBancaria, bool habilitado = true) { if (VentaItems.Count == 0) { throw new NegocioException("Error al registrar el pago. No se encuentran productos registrados en la venta."); } if (EstaPaga) { throw new NegocioException("Error al registrar el pago. La venta ya cuenta con el/los pagos necesarios para ser finalizada."); } if (monto == 0 && descuento == 0 && cft == 0 && iva == 0) { throw new NegocioException("Error al registrar el pago. El monto o el descuento o el CFT o el IVA debe ser mayor a cero."); } int[] numeroOrdenCheques = cheques != null?cheques.Select(x => x.NumeroOrden).ToArray() : null; VentaPago pago = new VentaPago(Id, tipoPago, trajeta, numeroCuotas, porcentajeCft, numeroOrdenCheques, cuentaBancaria, monto, monto, descuento, cft, iva, habilitado); Cheques.AddRange(cheques); if (pago.MontoPago.Total < 0) { throw new NegocioException("Error al registrar el pago. El total debe ser mayor a cero."); } Pagos.Add(pago); Pagos = Pagos.OrderBy(x => x.TipoPago).ToList(); ActualizarPagos(); ActualizarTotalesPago(); }
public void CorregirPago(long idPago) { VentaPago pago = Pagos.FirstOrDefault(x => x.Id == idPago); pago.Corregir(); ActualizarTotalesPago(); }
internal void QuitarPago(long id) { VentaPago pago = Pagos.FirstOrDefault(x => x.Key.Id == id).Key; if (pago != null) { Pagos.Remove(pago); } ActualizarPorcentajePago(); }
private void ActualizarPagos(VentaPago pago, decimal resto, decimal abonado) { if (Pagos.ContainsKey(pago)) { Pagos.Remove(pago); pago.ActualizarMontoRestante(resto); Pagos.Add(pago, abonado); } else { pago.ActualizarMontoRestante(resto); Pagos.Add(pago, abonado); } }
public void QuitarPago(long idPago) { VentaItems.ToList().ForEach(x => x.QuitarPago(idPago)); VentaPago pago = Pagos.FirstOrDefault(x => x.Id == idPago); Pagos.Remove(pago); if (pago.TipoPago == TipoPago.Cheque) { QuitarChequeDesdePago(pago); } ActualizarTotalesPago(); }
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); } }