Exemplo n.º 1
0
        public void pagarPrimeraCuota(double montoAabonar)
        {
            Pago pago = new Pago(this.vista.credito.Fecha, this.vista.credito.Empleado, this.vista.credito.Cliente);

            pago.LineaDePago.Add(new LineaDePago(montoAabonar));
            pago.Vuelto = montoAabonar - this.vista.credito.Cuotas.First().Monto;
            List <Cuota> cuota = new List <Cuota>();

            cuota.Add(this.vista.credito.Cuotas.First());
            Vista.ReciboPago frm = new Vista.ReciboPago(cuota, pago);
            frm.Show();
        }
        public void confirmarPago(double montoApagar, bool sinSeleccionar)
        {
            List <Cuota> cuotasSeleccionadas = new List <Cuota>();
            Pago         pago = new Pago(DateTime.Now, BaseDatos.sesion, this.vista.cliente);

            if (sinSeleccionar == false)
            {
                cuotasSeleccionadas = this.vista.cuotasSeleccionadas;
                double vuelto = montoApagar - calcularCuotasSeleccionadas();
                if (vuelto >= 0)
                {
                    this.vista.vuelto = vuelto;
                    foreach (Cuota c in cuotasSeleccionadas)
                    {
                        pago.LineaDePago.Add(new LineaDePago(c.APagar));
                        c.APagar = 0;
                        c.pagar(c.APagar);
                    }
                    pago.Vuelto       = vuelto;
                    this.vista.vuelto = vuelto;
                }
                else
                {
                    this.vista.vuelto = 0;
                };
            }
            else
            {
                double       saldo                   = montoApagar;
                List <Cuota> cuotasImpagas           = this.vista.cuotas.FindAll(x => x.Pagada != true);
                int          cantidadDeCuotasImpagas = cuotasImpagas.Count;

                foreach (Cuota c in cuotasImpagas)
                {
                    double sum = 0;
                    foreach (LineaDePago lp in c.LineaDePago)
                    {
                        sum += lp.MontoApagar;
                    }
                    if (sum == 0 && saldo >= c.Monto)
                    {
                        cuotasSeleccionadas.Add(c);
                        pago.LineaDePago.Add(new LineaDePago(c.Monto));
                        c.APagar = 0;
                        c.pagar(c.Monto);
                        saldo = saldo - c.Monto;
                        if (cantidadDeCuotasImpagas > 0)
                        {
                            cantidadDeCuotasImpagas--;
                            if (cantidadDeCuotasImpagas == 0)
                            {
                                this.vista.vuelto = saldo - c.APagar;
                            }
                            pago.Vuelto = saldo - c.APagar;
                        }
                        continue;
                    }
                    else
                    {
                        c.APagar = c.Monto - sum;
                        if (saldo > c.APagar)
                        {
                            //c.LineaDePago.Add(new LineaDePago(c.APagar));

                            //c.Pagada = true;
                            cuotasSeleccionadas.Add(c);
                            pago.LineaDePago.Add(new LineaDePago(c.APagar));
                            saldo    = montoApagar - c.APagar;
                            c.APagar = 0;
                            c.pagar(c.APagar);

                            if (cantidadDeCuotasImpagas > 0)
                            {
                                cantidadDeCuotasImpagas--;
                                if (cantidadDeCuotasImpagas == 0)
                                {
                                    this.vista.vuelto = saldo - c.APagar;
                                }
                                pago.Vuelto = saldo - c.APagar;
                            }
                            continue;
                        }
                        else
                        {
                            cuotasSeleccionadas.Add(c);
                            //c.LineaDePago.Add(new LineaDePago(saldo));
                            pago.LineaDePago.Add(new LineaDePago(saldo));
                            c.APagar = c.APagar - saldo;
                            c.pagar(saldo);
                            saldo       = 0;
                            pago.Vuelto = 0;
                            break;
                        }
                    }
                }
            }

            foreach (Credito credito in this.vista.creditosActivos)
            {
                if (credito.EstadoDelCredito == Credito.Estado.Activo)
                {
                    int numcuotas = credito.Plan.NumeroCuotas;
                    if (credito.Cuotas.Count(x => x.Pagada == true) == numcuotas)
                    {
                        credito.informarCreditoFinalizado();
                    }
                }
            }

            Vista.ReciboPago frm = new Vista.ReciboPago(cuotasSeleccionadas, pago);
            frm.Show();
        }