private void AdicionarParcela(NumeroParcela numeroParcela, ICalculadoraDeParcelaStrategy calculadora) =>
 _parcelas.Add(new Parcela
 {
     Numero = numeroParcela,
     SaldoDevedorInicial = calculadora.CalcularSaldoDevedorInicial(this, numeroParcela),
     Valor     = ValorDaParcela,
     Principal = calculadora.CalcularPrincipal(this, numeroParcela),
     Juros     = calculadora.CalcularJuros(this, numeroParcela),
 });
 public static ICalculadoraDeParcelaStrategy Create(NumeroParcela numeroParcela) =>
     numeroParcela.IsFirst
         ? new CalculadoraDePrimeiraParcela()
         : new CalculadoraDeProximaParcela();
 internal Parcela ObterParcela(NumeroParcela numero) =>
 Parcelas.First(p => p.Numero == numero);
 public ValorMonetario CalcularJuros(ContratoDeEmprestimoAggregate contrato, NumeroParcela numeroParcela) =>
 contrato.TaxaAoMes.Aplicar(CalcularSaldoDevedorInicial(contrato, numeroParcela));
 public ValorMonetario CalcularSaldoDevedorInicial(ContratoDeEmprestimoAggregate contrato, NumeroParcela numeroParcela) =>
 contrato.ObterParcela(numeroParcela - 1).SaldoDevedorFinal;
 public decimal CalcularPrincipal(ContratoDeEmprestimoAggregate contrato, NumeroParcela numeroParcela) =>
 contrato.ValorDaParcela - CalcularJuros(contrato, numeroParcela);
Esempio n. 7
0
 public ValorMonetario CalcularJuros(ContratoDeEmprestimoAggregate contrato, NumeroParcela numeroParcela) =>
 contrato.TaxaAoMes.Aplicar(contrato.ValorFinanciado);
Esempio n. 8
0
 public ValorMonetario CalcularSaldoDevedorInicial(ContratoDeEmprestimoAggregate contrato, NumeroParcela numeroParcela) =>
 contrato.ValorCarencia + contrato.ValorFinanciado;