public void actualizarCuotasRestantes(int idContrato) { CContratos cContratos = new CContratos(); Contratos con = cContratos.uno(idContrato); decimal capital = Math.Round(con.Financiamiento.Value / con.Meses, 2); CPagos cPagos = new CPagos(); List <Cuotas> listado = this.Listado(idContrato); // Cuotas ultimapagada = listado.Where(x => x.Cancelada == 1).OrderByDescending(x => x.FechaDePago).First(); List <Cuotas> sinpagar = listado.Where(x => x.Cancelada == 0).ToList(); //decimal montoextra = ultimapagada.ACapitalExtra.Value; decimal montoextra = cPagos.extra(idContrato); //decimal sumarestante = sinpagar.Sum(x => x.Capital).Value; if (montoextra > 0) { int cuantascrubre = decimal.ToInt32(montoextra / capital); sinpagar = sinpagar.OrderByDescending(x => x.IdCuota).ToList(); int contador = 1; foreach (Cuotas item in sinpagar) { if (contador <= cuantascrubre) { item.Cancelada = 1; item.Monto = 0; //item.Capital = 0; item.Intereses = 0; item.FechaDePago = DateTime.Now; if (item.Capital < capital) { montoextra -= item.Capital.Value; } else { montoextra -= capital; } item.Capital = 0; int x = ActualizarCancelada(item); contador++; } else { if (montoextra > 0 && montoextra < capital) { item.Cancelada = 0; item.Monto = item.Monto - montoextra; item.Capital = item.Capital - montoextra; if (item.Capital.Value == 0) { item.Cancelada = 1; item.Monto = 0; item.Capital = 0; item.Intereses = 0; item.FechaDePago = DateTime.Now; } //item.Intereses = 0; int x = ActualizarCancelada(item); montoextra -= montoextra; } else { if (montoextra > capital) { item.Cancelada = 1; item.Monto = 0; //item.Capital = 0; item.Intereses = 0; item.FechaDePago = DateTime.Now; if (item.Capital < capital) { montoextra -= item.Capital.Value; } else { montoextra -= capital; } item.Capital = 0; int x = ActualizarCancelada(item); } } } } } }