Beispiel #1
0
        public static List <Parcela> CalcularParcelas(decimal saldoDevedor, decimal taxaDeJuros, int prazo)
        {
            var parcelas                  = new List <Parcela>();
            var saldoDevedorAtual         = saldoDevedor;
            var amortizacaoAtravesDoPrazo = 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;

                var temQueCompensarDizimaPeriodica = numeroDaParcela == prazo - 1 && saldoDevedorAtual != 0;

                if (temQueCompensarDizimaPeriodica)
                {
                    amortizacaoAtravesDoPrazo += 0.01m;
                }

                parcelas.Add(new Parcela(juros.Arredondado(2), amortizacaoAtravesDoPrazo.Arredondado(2), saldoDevedorAtual.Arredondado(2)));
            }

            return(parcelas);
        }
Beispiel #2
0
        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.Arredondado(2), amortizacao.Arredondado(2), saldoDevedorAtual.Arredondado(2));
                parcelas.Add(parcelaAtual);
            }

            return(parcelas);
        }