Example #1
0
        private void calculocomi(DataTable datos, string asesor, string fechai, string fechaf)
        {
            int     cant, cont = 0;
            string  fechahoy = DateTime.Now.ToString("yyyy/MM/dd");
            string  codcre = "";
            decimal Totalcomi = 0;
            decimal pago = 0, cuota = 0, pagoint = 0, pagocap = 0;

            cant = datos.Rows.Count;
            DataTable datoscomi = new DataTable();

            datoscomi.Columns.Add("Credito").DataType  = Type.GetType("System.String");
            datoscomi.Columns.Add("Cliente").DataType  = Type.GetType("System.String");
            datoscomi.Columns.Add("Tipo").DataType     = Type.GetType("System.String");
            datoscomi.Columns.Add("PagosH").DataType   = Type.GetType("System.String");
            datoscomi.Columns.Add("Comision").DataType = Type.GetType("System.String");


            for (cont = 0; cont < cant; cont++)
            {
                string fechaini = datos.Rows[cont][5].ToString();
                string cliente = datos.Rows[cont][8].ToString() + " " + datos.Rows[cont][9].ToString();
                string tipCre = "", estado = datos.Rows[cont][10].ToString();
                int    totpagos, tipocre = 0, pagoscre = 0, comi = 0;
                int    pagos = int.Parse(datos.Rows[cont][4].ToString());
                codcre = datos.Rows[cont][0].ToString();
                decimal totalpagAct = cre.totalpagAct(codcre, fechai, fechaf);
                decimal totalpagAnt = cre.totalpagAnt(codcre, fechai, fechaf);
                decimal interes = 0, capital = 0, pagosope, Valint, Monto;
                Monto    = decimal.Parse(datos.Rows[cont][1].ToString());
                Valint   = decimal.Parse(datos.Rows[cont][2].ToString());
                pagoscre = 0;
                tipocre  = int.Parse(datos.Rows[cont][7].ToString());
                totpagos = cre.pagosfutu(fechaini, fechahoy, tipocre.ToString());

                pagosope = totalpagAct;
                if (tipocre == 1)
                {
                    /*  capital = Math.Round((Monto / pagos), 2);
                     * interes = Math.Round(((Monto * Valint) / 100), 2);
                     * tipCre = "Diario";
                     * if (totalpagAct == 0 && estado == "Terminado")
                     * {
                     *    pagoscre=0;
                     * }
                     * else if (totalpagAct > 0 && estado == "Activo") {
                     *
                     *    bool bandera = true, Novacuota = true;
                     *    cuota = interes;
                     *
                     *    while (Novacuota)
                     *    {
                     *        if (totalpagAnt < cuota)
                     *        {
                     *            Novacuota = false;
                     *        }
                     *        else
                     *        {
                     *            totalpagAnt -= cuota;
                     *        }
                     *    }
                     *    pagosope += totalpagAnt;
                     *    while (bandera)
                     *    {
                     *        if (pagosope < cuota)
                     *        {
                     *            bandera = false;
                     *        }
                     *        else
                     *        {
                     *            pagosope -= (cuota);
                     *            pagoscre++;
                     *        }
                     *    }
                     * }
                     * else if (totalpagAct > 0 && estado == "Terminado")
                     * {
                     *    bool bandera = true, Novacuota = true;
                     *    cuota = interes;
                     *    while (Novacuota)
                     *    {
                     *        if (totalpagAnt < cuota)
                     *        {
                     *            Novacuota = false;
                     *        }
                     *        else
                     *        {
                     *            totalpagAnt -= cuota;
                     *        }
                     *    }
                     *    pagosope += totalpagAnt;
                     *    while (bandera)
                     *    {
                     *        if (pagosope < cuota)
                     *        {
                     *            bandera = false;
                     *        }
                     *        else
                     *        {
                     *            pagosope -= (cuota);
                     *            pagoscre++;
                     *        }
                     *    }
                     * }*/

                    capital = Monto;
                    interes = Math.Round(((Monto * Valint) / 100), 2);
                    cuota   = capital + interes;
                    decimal saldado;
                    saldado = Monto + (interes * pagos);
                    //pagosope = totalpagAnt + totalpagAct;
                    pagosope = cre.totalGenAnt(codcre, fechai, fechaf);
                    tipCre   = "Diario";

                    if (!/*cre.UltpCredi*/ cre.PagosCredCance(codcre, fechai, fechaf) && estado != "Terminado")
                    {
                        pagoscre = 0;
                    }
                    else if (/*cre.UltpCredi*/ cre.PagosCredCance(codcre, fechai, fechaf) && estado == "Terminado")
                    {
                        bool bandera = true;
                        pagosope -= capital;
                        while (bandera)
                        {
                            if (pagosope >= interes)
                            {
                                pagosope -= interes;
                                pagoscre++;
                            }
                            else
                            {
                                bandera = false;
                            }
                        }
                        if (pagoscre > pagos)
                        {
                            pagoscre = pagos;
                        }
                    }
                    else
                    {
                        pagoscre = 0;
                    }
                }
                else if (tipocre == 2)
                {
                    capital = Monto;
                    interes = Math.Round(((Monto * Valint) / 100), 2);
                    cuota   = capital + interes;
                    decimal saldado;
                    saldado = Monto + (interes * pagos);
                    //pagosope = totalpagAnt + totalpagAct;
                    pagosope = cre.totalGenAnt(codcre, fechai, fechaf);
                    tipCre   = "Diario - Interes";

                    if (!/*cre.UltpCredi*/ cre.PagosCredCance(codcre, fechai, fechaf) && estado != "Terminado")
                    {
                        pagoscre = 0;
                    }
                    else if (/*cre.UltpCredi*/ cre.PagosCredCance(codcre, fechai, fechaf) && estado == "Terminado")
                    {
                        bool bandera = true;
                        pagosope -= capital;
                        while (bandera)
                        {
                            if (pagosope >= interes)
                            {
                                pagosope -= interes;
                                pagoscre++;
                            }
                            else
                            {
                                bandera = false;
                            }
                        }
                        if (pagoscre > pagos)
                        {
                            pagoscre = pagos;
                        }
                    }
                    else
                    {
                        pagoscre = 0;
                    }
                }
                else if (tipocre == 3)
                {
                    capital = Math.Round((Monto / pagos), 2);
                    interes = Math.Round(((Monto * Valint) / 100 / 12), 2);
                    tipCre  = "Mensual";
                    bool bandera = true, Novacuota = true;
                    cuota = interes;
                    if (cuota == 0)
                    {
                        Novacuota = false;
                        bandera   = false;
                    }
                    while (Novacuota)
                    {
                        if (totalpagAnt < cuota)
                        {
                            Novacuota = false;
                        }
                        else
                        {
                            totalpagAnt -= cuota;
                        }
                    }
                    pagosope += totalpagAnt;
                    while (bandera)
                    {
                        if (pagosope < cuota)
                        {
                            bandera = false;
                        }
                        else
                        {
                            pagosope -= (cuota);
                            pagoscre++;
                        }
                    }
                }
                else if (tipocre == 4)
                {
                    //calculo de interes creditos sobre saldo
                    tipCre = "Mensual-SobreSaldo";
                    DataTable datoscred = new DataTable();
                    decimal   MontoTotCred = Monto, SaldoTotInt = 0, CapitalGen, interGen = 0;
                    datoscred = cre.PagosSobresaldo(codcre);
                    int conteo1, totaldecredi;
                    totaldecredi = datoscred.Rows.Count;
                    for (conteo1 = 0; conteo1 < totaldecredi; conteo1++)
                    {
                        int     pagoscred = 0;
                        decimal totaldecomi = 0, cuotacapital = 0, cuotainteres = 0, porcentin = 0, montocred = 0, CuotaIntEsp = 0;
                        montocred    = decimal.Parse(datoscred.Rows[conteo1][0].ToString());
                        porcentin    = decimal.Parse(datoscred.Rows[conteo1][1].ToString());
                        pagoscred    = int.Parse(datoscred.Rows[conteo1][2].ToString());
                        cuotacapital = decimal.Parse(datoscred.Rows[conteo1][4].ToString());
                        cuotainteres = decimal.Parse(datoscred.Rows[conteo1][5].ToString());
                        CuotaIntEsp  = MontoTotCred * porcentin / 100 / pagoscred;
                        SaldoTotInt += CuotaIntEsp;
                        if (cuotainteres >= CuotaIntEsp)
                        {
                            SaldoTotInt -= cuotainteres;
                            if (CuotaIntEsp != 0)
                            {
                                pagoscre++;
                            }
                        }
                        MontoTotCred -= cuotacapital;
                    }
                    pagoscre = cre.PagosTot(codcre, fechai, fechaf);
                }

                if (pagoscre > pagos)
                {
                    pagoscre = pagos;
                }
                comi = pagoscre;
                DataRow fila = datoscomi.NewRow();
                fila["Credito"]  = codcre;
                fila["Cliente"]  = cliente;
                fila["Tipo"]     = tipCre;
                fila["PagosH"]   = comi;
                fila["Comision"] = comi;
                datoscomi.Rows.Add(fila);
            }
            imprepcomi(datoscomi, asesor, fechai, fechaf);
        }