FINERACT-2389: loan is not closed with outstanding amount during pay-off loan with reschedule trns
This commit is contained in:
committed by
Adam Saghy
parent
bf879064af
commit
ddc82f1b68
+6
-1
@@ -1104,7 +1104,12 @@ public final class ProgressiveEMICalculator implements EMICalculator {
|
||||
Money diff = totalDisbursedAmount.plus(totalCapitalizedIncome, mc).plus(scheduleModel.getTotalCreditedPrincipal(), mc)
|
||||
.plus(totalDueInterest, mc).minus(totalEMI, mc);
|
||||
|
||||
repaymentPeriod.setEmi(repaymentPeriod.getEmi().add(diff, mc));
|
||||
Money adjustedEmi = repaymentPeriod.getEmi().add(diff, mc);
|
||||
if (repaymentPeriod.getFixedInterest().isGreaterThanZero()
|
||||
&& adjustedEmi.isLessThan(repaymentPeriod.getPaidPrincipal().add(repaymentPeriod.getFixedInterest()))) {
|
||||
adjustedEmi = repaymentPeriod.getPaidPrincipal().add(repaymentPeriod.getFixedInterest());
|
||||
}
|
||||
repaymentPeriod.setEmi(adjustedEmi);
|
||||
if (repaymentPeriod.getEmi()
|
||||
.isLessThan(repaymentPeriod.getTotalPaidAmount().minus(repaymentPeriod.getTotalCreditedAmount(), mc))) {
|
||||
repaymentPeriod.setEmi(repaymentPeriod.getTotalPaidAmount().minus(repaymentPeriod.getTotalCreditedAmount(), mc));
|
||||
|
||||
+5
-8
@@ -248,7 +248,9 @@ public class ProgressiveLoanInterestScheduleModel {
|
||||
previousInterestPeriod.addBalanceCorrectionAmount(correctionAmount);
|
||||
|
||||
final InterestPeriod interestPeriod = InterestPeriod.withEmptyAmounts(repaymentPeriod, newDueDate, originalDueDate, isPaused);
|
||||
repaymentPeriod.getInterestPeriods().add(interestPeriod);
|
||||
final List<InterestPeriod> interestPeriods = repaymentPeriod.getInterestPeriods();
|
||||
final int previousIndex = interestPeriods.indexOf(previousInterestPeriod);
|
||||
interestPeriods.add(previousIndex + 1, interestPeriod);
|
||||
}
|
||||
|
||||
private void insertInterestPausePeriods(final RepaymentPeriod repaymentPeriod, final LocalDate pauseStart, final LocalDate pauseEnd) {
|
||||
@@ -287,13 +289,8 @@ public class ProgressiveLoanInterestScheduleModel {
|
||||
}
|
||||
|
||||
private InterestPeriod findPreviousInterestPeriod(final RepaymentPeriod repaymentPeriod, final LocalDate date) {
|
||||
if (date.isAfter(repaymentPeriod.getFromDate())) {
|
||||
return repaymentPeriod.getLastInterestPeriod();
|
||||
} else {
|
||||
return repaymentPeriod.getInterestPeriods().stream()
|
||||
.filter(ip -> date.isAfter(ip.getFromDate()) && !date.isAfter(ip.getDueDate())).reduce((first, second) -> second)
|
||||
.orElse(repaymentPeriod.getInterestPeriods().getFirst());
|
||||
}
|
||||
return repaymentPeriod.getInterestPeriods().stream().filter(ip -> date.isAfter(ip.getFromDate()) && !date.isAfter(ip.getDueDate()))
|
||||
.reduce((first, second) -> second).orElse(repaymentPeriod.getInterestPeriods().getFirst());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user