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); }