FINERACT-1905: Fix for new repayment strategy

This commit is contained in:
Adam Saghy
2023-03-31 19:47:38 +02:00
parent e7268997bc
commit 6fda3d3fb3
2 changed files with 231 additions and 7 deletions
@@ -162,7 +162,6 @@ public class DueDateRespectiveLoanRepaymentScheduleTransactionProcessor extends
penaltyChargesPortion = penaltyChargesPortion.add(subPenaltyPortion);
Money subFeePortion;
if (!ignoreDueDateCheck) {
if (calculatedFeeCharge.isGreaterThan(transactionAmountRemaining)) {
calculatedFeeCharge = transactionAmountRemaining;
@@ -174,14 +173,16 @@ public class DueDateRespectiveLoanRepaymentScheduleTransactionProcessor extends
transactionAmountRemaining = transactionAmountRemaining.minus(subFeePortion);
feeChargesPortion = feeChargesPortion.add(subFeePortion);
Money subInterestPortion;
if (ignoreDueDateCheck || !transactionDate.isBefore(currentInstallment.getDueDate())) {
interestPortion = currentInstallment.payInterestComponent(transactionDate, transactionAmountRemaining);
transactionAmountRemaining = transactionAmountRemaining.minus(interestPortion);
subInterestPortion = currentInstallment.payInterestComponent(transactionDate, transactionAmountRemaining);
transactionAmountRemaining = transactionAmountRemaining.minus(subInterestPortion);
interestPortion = interestPortion.add(subInterestPortion);
}
principalPortion = principalPortion
.add(currentInstallment.payPrincipalComponent(transactionDate, transactionAmountRemaining));
transactionAmountRemaining = transactionAmountRemaining.minus(principalPortion);
Money subPrincipalPortion = currentInstallment.payPrincipalComponent(transactionDate, transactionAmountRemaining);
transactionAmountRemaining = transactionAmountRemaining.minus(subPrincipalPortion);
principalPortion = principalPortion.add(subPrincipalPortion);
// If the transactionAmountRemaining is greater than zero, rerun the allocation without due date check
// to distribute the in advance portions
if (transactionAmountRemaining.isGreaterThanZero()) {