示例#1
0
        public void GenerarPagoAutoNuevo(decimal?monto, FormaPago tipoPago)
        {
            if (Pagos.Count != 0)
            {
                foreach (var pago in Pagos)
                {
                    if (pago.TipoPago == tipoPago)
                    {
                        pago.Importe = monto;

                        GrillaPagos.DataSource = Pagos.ToList();
                        EliminarPagoCero();
                        RefrescarPagos();
                        return;
                    }
                }
            }
            VentaPago pagoNuevo = new VentaPago();

            pagoNuevo.TipoPago = tipoPago;
            pagoNuevo.Importe  = monto;
            Pagos.Add(pagoNuevo);

            GrillaPagos.DataSource = Pagos.ToList();
            RefrescarPagos();
        }
示例#2
0
        public void GenerarPagoAuto(decimal?monto)
        {
            if (Pagos.Count == 0)
            {
                VentaPago pago = new VentaPago();
                pago.TipoPago = FormaPago.Efectivo;
                pago.Importe  = monto;
                Pagos.Add(pago);
            }
            else
            {
                foreach (var pago in Pagos)
                {
                    switch (pago.TipoPago)
                    {
                    case FormaPago.Efectivo:
                        pago.Importe = monto;
                        break;
                    }
                }
            }

            GrillaPagos.DataSource = Pagos.ToList();
            RefrescarPagos();
        }
示例#3
0
        public void GenerarPagoCuotas(decimal?monto)
        {
            if (Pagos.Count == 0)
            {
                VentaPago pago = new VentaPago();
                pago.TipoPago = FormaPago.CuentaCorriente;
                pago.Importe  = monto;
                monto         = 0;
                Pagos.Add(pago);
            }
            else
            {
                foreach (var pago in Pagos)
                {
                    if (pago.TipoPago == FormaPago.CuentaCorriente)
                    {
                        pago.Importe = monto;
                        monto        = 0;
                    }
                }
            }


            if (monto != 0)
            {
                VentaPago pago = new VentaPago();
                pago.TipoPago = FormaPago.CuentaCorriente;
                pago.Importe  = monto;
                Pagos.Add(pago);
            }

            GrillaPagos.DataSource = Pagos.ToList();
            RefrescarPagos();
        }
示例#4
0
        public string Abonar(double valor)
        {
            var valorAbonar = valor;

            if (CanAbonar(valor).Count != 0)
            {
                throw new InvalidOperationException();
            }
            var cuotasPendientesPorPagar = ObtenerCuotasPendientesPorPagar();
            int i = 0;

            while (valor > 0)
            {
                if (cuotasPendientesPorPagar[i].ValorRestantePorPagar() <= valor)
                {
                    valor -= cuotasPendientesPorPagar[i].ValorRestantePorPagar();
                    cuotasPendientesPorPagar[i].ValorPagado += cuotasPendientesPorPagar[i].ValorRestantePorPagar();
                    cuotasPendientesPorPagar[i].Estado       = Estado.Pagado;
                }
                else
                {
                    cuotasPendientesPorPagar[i].ValorPagado += valor;
                    valor -= valor;
                }


                i++;
            }
            Pagos.Add(new Pago(valorAbonar));
            return("Su cuota se registró correctamente por un valor " + valorAbonar + ", saldo del crédito restante " + SaldoRestante);
        }
示例#5
0
        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();
        }
示例#6
0
 public void AgregarPago(PagosTipo pago)
 {
     if (Pagos != null)
     {
         bool agregar = true;
         foreach (var p in Pagos)
         {
             if (pago.TipoPago != "Efectivo" && p.TipoPago == "Efectivo")
             {
                 p.Importe -= pago.Importe;
                 if (p.Importe < 0)
                 {
                     p.Importe = 0;
                 }
             }
             else if (pago.TipoPago == "Efectivo" && p.TipoPago == "Efectivo")
             {
                 p.Importe = pago.Importe;
                 agregar   = false;
             }
         }
         if (agregar)
         {
             Pagos.Add(pago);
         }
     }
 }
示例#7
0
        public void BtnAgregarPago_Click(object sender, EventArgs e)
        {
            using (var formAgregarPago = FormFactory.Create <FrmAgregarPago>(Guid.Empty, ActionFormMode.Create))
            {
                formAgregarPago.PagoAgregado += (o, pago) =>
                {
                    Pagos.Add(pago);
                    //Para intereses
                    if (pago.TipoPago == FormaPago.Tarjeta)
                    {
                        _intereses = pago.Intereses ?? 0;
                        OnInteresesChanged();
                    }

                    //
                    RefrescarPagos();
                    if (pago.TipoPago != FormaPago.Efectivo)
                    {
                        if (pago.Importe != TotalPagar)
                        {
                            OnPagosChanged(pago.Importe);
                        }
                        else
                        {
                            EliminarPagoEfectivo();
                        }
                    }

                    formAgregarPago.Close();
                };

                formAgregarPago.ShowDialog();
            }
        }
示例#8
0
        public void ActualizarNuevoPago(string tipo, decimal importe)
        {
            Pagos.Clear();
            _pago.TipoPago = tipo;
            _pago.Importe  = importe;

            Pagos.Add(_pago);
            RefrescarPagos();
        }
示例#9
0
 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);
     }
 }
示例#10
0
        private void BtnAgregarPago_Click(object sender, EventArgs e)
        {
            using (var formAgregarPago = FormFactory.Create <FrmAgregarPago>(Guid.Empty, ActionFormMode.Edit))
            {
                formAgregarPago.PagoAgregado += (o, pago) =>
                {
                    Pagos.Add(pago);
                    RefrescarPagos();

                    formAgregarPago.Close();
                };

                formAgregarPago.ShowDialog();
            }
        }
示例#11
0
        public void AgregaPago(decimal monto, decimal cft, TipoPago formaPagoSeleccionado, decimal cuotaCft, string tarjeta, int numeroCuota, IEnumerable <Cheque> cheques, CuentaBancaria cuentaBancaria)
        {
            if (monto == 0 && cft == 0)
            {
                throw new NegocioException("Error al registrar el pago. El monto o el CFT debe ser mayor a cero.");
            }

            int[] numeroOrdenCheques = cheques != null?cheques.Select(x => x.NumeroOrden).ToArray() : null;

            DocumentoDePagoPago pago = new DocumentoDePagoPago(Id, formaPagoSeleccionado, tarjeta, numeroCuota, cuotaCft, monto, cft, numeroOrdenCheques, cuentaBancaria);

            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);
            ActualizarTotalesPago();
        }
示例#12
0
        public void AgregaPago(Pago pago)
        {
            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.");
            }

            decimal montoPago = pago.MontoPago.Total;

            foreach (VentaItem ventaItem in VentaItems.Where(x => x.PorcentajePago != 1))
            {
                montoPago = ventaItem.Pagar(montoPago);
            }

            Pagos.Add(pago);
            ActualizarTotalesPago();
        }