FINERACT-2081: Fix cumulative principal calculation

This commit is contained in:
Oleksii Novikov
2025-03-14 12:57:40 +00:00
committed by Adam Saghy
parent e1d820756f
commit 898a18c873
3 changed files with 16 additions and 10 deletions
@@ -157,6 +157,14 @@ public abstract class AbstractCumulativeLoanScheduleGenerator implements LoanSch
scheduleParams.setOutstandingBalance(remainingPrincipalAmt);
scheduleParams.setOutstandingBalanceAsPerRest(remainingPrincipalAmt);
loanApplicationTerms.setPrincipal(remainingPrincipalAmt);
} else if (loanApplicationTerms.isDownPaymentEnabled()) {
Money downPaymentAmt = Money.of(currency, MathUtil.percentageOf(loanApplicationTerms.getPrincipal().getAmount(),
loanApplicationTerms.getDisbursedAmountPercentageForDownPayment(), 19));
if (loanApplicationTerms.getInstallmentAmountInMultiplesOf() != null) {
downPaymentAmt = Money.roundToMultiplesOf(downPaymentAmt, loanApplicationTerms.getInstallmentAmountInMultiplesOf());
}
final Money remainingPrincipalAmt = loanApplicationTerms.getPrincipal().minus(downPaymentAmt);
loanApplicationTerms.setPrincipal(remainingPrincipalAmt);
}
}
@@ -1086,7 +1086,7 @@ public final class LoanApplicationTerms {
private Money calculateTotalPrincipalPerPeriodWithoutGrace(final MathContext mc, final int periodNumber,
Money interestForThisInstallment) {
final int totalRepaymentsWithCapitalPayment = calculateNumberOfRepaymentsWithPrincipalPayment();
Money principalPerPeriod = null;
Money principalPerPeriod;
if (getFixedEmiAmount() == null) {
if (this.fixedPrincipalPercentagePerInstallment != null) {
principalPerPeriod = this.principal.minus(totalPrincipalAccounted)