protected override void ConfirmarComprobanteValidar(ComprobanteBase comprobante) { var pago = (Pago)View.CurrentObject; var saldosAplicaciones = pago.CalcularSaldosAplicaciones(); var saldosValores = pago.CalcularSaldosValores(); if (pago.Aplicaciones.Count == 0 && saldosValores.Cast <ViewRecord>().All(vr => (decimal)vr["Importe"] == 0)) { throw new UserFriendlyException( "Debe realizar alguna aplicación, o bien ingresar valores por un monto mayor a cero."); } if (saldosAplicaciones.Cast <ViewRecord>().Any(vr => (decimal)vr["Importe"] < 0)) { throw new UserFriendlyException( "No puede aplicar comprobantes de crédito por un valor superior a los comprobantes aplicados."); } var saldos = pago.CalcularSaldoPago(saldosAplicaciones, saldosValores); //Cualquier saldo de moneda mayor a cero, significa mas aplicaciones que valores if (saldos.Any(saldo => saldo.Value > 0)) { throw new UserFriendlyException("No ingresó suficientes valores para las aplicaciones ingresadas."); } //si hay saldos menores a cero, significan mas valores que aplicaciones => Valido => Generación de OPA (ver ConfirmarComprobanteAfter) }
protected override void ConfirmarComprobanteAfter(ComprobanteBase comprobante) { //Recalcular estados de valores var compFondos = (( Comprobante )comprobante); foreach (var comprobanteItemValor in compFondos.Items.SelectMany(item => item.Valores)) { comprobanteItemValor.Valor.CalcularEstado( ); } }
protected override void ConfirmarComprobanteValidar(ComprobanteBase comprobante) { var totalDebe = ( decimal )(comprobante.Evaluate("Items.Sum(DebeAlCambio)")); var totalHaber = ( decimal )(comprobante.Evaluate("Items.Sum(HaberAlCambio)")); if (totalDebe != totalHaber) { throw new UserFriendlyException("Los items del comprobante no balancean correctamente"); } }
protected override void ConfirmarComprobanteAfter(ComprobanteBase comprobante) { base.ConfirmarComprobanteAfter(comprobante); var pago = (Pago)View.CurrentObject; var saldos = pago.CalcularSaldoPago(pago.CalcularSaldosAplicaciones(), pago.CalcularSaldosValores()); GenerarPagoAnticipo(saldos); }
public override void DuplicarComprobante(ComprobanteBase comprobante) { var comprobanteCompras = ( Comprobante )comprobante; comprobanteCompras.AutorizadaCodigo = null; comprobanteCompras.AutorizadaCodigoFecVto = null; comprobanteCompras.AutorizadaFecha = null; comprobanteCompras.AutorizadaNotas = null; comprobanteCompras.AutorizadaResultado = null; comprobanteCompras.Fecha = ( DateTime )(comprobanteCompras.Vencimiento = DateTime.Today); comprobanteCompras.GenerarCuotas( ); }
public override void DuplicarComprobante(ComprobanteBase comprobante) { base.DuplicarComprobante(comprobante); var comprobanteVentas = ( Comprobante )comprobante; comprobanteVentas.AutorizadaCodigo = null; comprobanteVentas.AutorizadaCodigoFecVto = null; comprobanteVentas.AutorizadaFecha = null; comprobanteVentas.AutorizadaNotas = null; comprobanteVentas.AutorizadaResultado = null; comprobanteVentas.Fecha = ( DateTime )(comprobanteVentas.Vencimiento = DateTime.Today); comprobanteVentas.InicioPrestacion = new DateTime(comprobanteVentas.Fecha.Year, comprobanteVentas.Fecha.Month, 1); comprobanteVentas.FinPrestacion = new DateTime(comprobanteVentas.Fecha.Year, comprobanteVentas.Fecha.Month, DateTime.DaysInMonth(comprobanteVentas.Fecha.Year, comprobanteVentas.Fecha.Month)); comprobanteVentas.AplicarImpuestos( ); comprobanteVentas.GenerarCuotas( ); }
public virtual void ConfirmarComprobante(ComprobanteBase comprobante) { //Validaciones if (comprobante.Estado == ComprobanteEstado.Confirmado) { throw new UserFriendlyException("Comprobante ya confirmado"); } if (comprobante.Estado == ComprobanteEstado.Anulado) { throw new UserFriendlyException("Comprobante anulado"); } ConfirmarComprobanteValidar(comprobante); if (comprobante.Talonario != null) { comprobante.NumerarAutomatico(); comprobante.Talonario.UltimoNumero = comprobante.Numero; } var args = new ComprobanteAutorizandoArgs { Autorizado = true, Comprobante = comprobante }; OnComprobanteAutorizando(comprobante, args); if (!args.Autorizado) { return; } comprobante.Estado = ComprobanteEstado.Confirmado; ConfirmarComprobanteAfter(comprobante); }
public virtual void DuplicarComprobante(ComprobanteBase comprobante) { comprobante.Estado = ComprobanteEstado.Pendiente; comprobante.Fecha = DateTime.Today; comprobante.Numero = 0; }
protected virtual void ConfirmarComprobanteAfter(ComprobanteBase comprobante) { }
protected virtual void ConfirmarComprobanteValidar(ComprobanteBase comprobante) { }
public override void DuplicarComprobante(ComprobanteBase comprobante) { base.DuplicarComprobante(comprobante); (( Comprobante )comprobante).ComprobanteReversion = null; }