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);
        }
Example #5
0
        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( );
        }
Example #7
0
        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);
        }
Example #8
0
 public virtual void DuplicarComprobante(ComprobanteBase comprobante)
 {
     comprobante.Estado = ComprobanteEstado.Pendiente;
     comprobante.Fecha  = DateTime.Today;
     comprobante.Numero = 0;
 }
Example #9
0
 protected virtual void ConfirmarComprobanteAfter(ComprobanteBase comprobante)
 {
 }
Example #10
0
 protected virtual void ConfirmarComprobanteValidar(ComprobanteBase comprobante)
 {
 }
 public override void DuplicarComprobante(ComprobanteBase comprobante)
 {
     base.DuplicarComprobante(comprobante);
     (( Comprobante )comprobante).ComprobanteReversion = null;
 }