public static List <Parcela> CalcularParcelas(decimal saldoDevedor, decimal taxaDeJuros, int prazo) { var parcelas = new List <Parcela>(); var saldoDevedorAtual = saldoDevedor; var amortizacaoAtravesDoPrazo = ValorAmortizacao(saldoDevedor, prazo); parcelas.Add(new Parcela(juros: 0, amortizacao: 0, saldoDevedor: saldoDevedor)); for (var numeroDaParcela = 0; numeroDaParcela < prazo; numeroDaParcela++) { var juros = JurosCompostos.CalcularJuros(saldoDevedorAtual, taxaDeJuros, prazo: 1); saldoDevedorAtual -= amortizacaoAtravesDoPrazo; parcelas.Add(new Parcela(juros, amortizacaoAtravesDoPrazo, saldoDevedorAtual)); } return(parcelas); }
public static List <Parcela> CalcularParcelas(decimal saldoDevedor, decimal taxaDeJuros, int prazo) { var parcelas = new List <Parcela> { new Parcela(juros: 0, amortizacao: 0, saldoDevedor: saldoDevedor) }; var saldoDevedorAtual = saldoDevedor; var coeficienteK = (taxaDeJuros * (1 + taxaDeJuros).ElevadoPor(prazo)) / ((1 + taxaDeJuros).ElevadoPor(prazo) - 1); var prestacaoAtravesDoPrazo = (coeficienteK * saldoDevedor); for (var numeroDaParcela = 0; numeroDaParcela < prazo; numeroDaParcela++) { var juros = JurosCompostos.CalcularJuros(saldoDevedorAtual, taxaDeJuros, 1); var amortizacao = prestacaoAtravesDoPrazo - juros; saldoDevedorAtual -= amortizacao; var parcelaAtual = new Parcela(juros, amortizacao, saldoDevedorAtual); parcelas.Add(parcelaAtual); } parcelas.Last().SaldoDevedor = 0.0M; return(parcelas); }