FINERACT-2464: Refactor LoanScheduleAssembler logic extraction
This commit is contained in:
+14
-13
@@ -314,8 +314,6 @@ public class LoanScheduleAssembler {
|
|||||||
calculatedRepaymentsStartingFromDate = deriveFirstRepaymentDate(loanType, repaymentEvery, expectedDisbursementDate,
|
calculatedRepaymentsStartingFromDate = deriveFirstRepaymentDate(loanType, repaymentEvery, expectedDisbursementDate,
|
||||||
repaymentPeriodFrequencyType, loanProduct.getMinimumDaysBetweenDisbursalAndFirstRepayment(), calendar, submittedOnDate,
|
repaymentPeriodFrequencyType, loanProduct.getMinimumDaysBetweenDisbursalAndFirstRepayment(), calendar, submittedOnDate,
|
||||||
repaymentStartDateType);
|
repaymentStartDateType);
|
||||||
// If calculated repayment start date does not match due to minimum days between disbursal and first
|
|
||||||
// repayment rule, we set repaymentsStartingFromDate (which will be used as seed date later)
|
|
||||||
if (!tmpCalculatedRepaymentsStartingFromDate.equals(calculatedRepaymentsStartingFromDate)) {
|
if (!tmpCalculatedRepaymentsStartingFromDate.equals(calculatedRepaymentsStartingFromDate)) {
|
||||||
repaymentsStartingFromDate = calculatedRepaymentsStartingFromDate;
|
repaymentsStartingFromDate = calculatedRepaymentsStartingFromDate;
|
||||||
}
|
}
|
||||||
@@ -748,18 +746,9 @@ public class LoanScheduleAssembler {
|
|||||||
final MathContext mc = MoneyHelper.getMathContext();
|
final MathContext mc = MoneyHelper.getMathContext();
|
||||||
HolidayDetailDTO detailDTO = new HolidayDetailDTO(isHolidayEnabled, holidays, workingDays);
|
HolidayDetailDTO detailDTO = new HolidayDetailDTO(isHolidayEnabled, holidays, workingDays);
|
||||||
|
|
||||||
LoanScheduleGenerator loanScheduleGenerator = this.loanScheduleFactory.create(loanApplicationTerms.getLoanScheduleType(),
|
LoanScheduleGenerator loanScheduleGenerator;
|
||||||
loanApplicationTerms.getInterestMethod());
|
|
||||||
if (loanApplicationTerms.isEqualAmortization()) {
|
if (loanApplicationTerms.isEqualAmortization()) {
|
||||||
if (loanApplicationTerms.getInterestMethod().isDecliningBalance()) {
|
updateInterestForEqualAmortization(mc, loanApplicationTerms, loanCharges, detailDTO);
|
||||||
final LoanScheduleGenerator decliningLoanScheduleGenerator = this.loanScheduleFactory
|
|
||||||
.create(loanApplicationTerms.getLoanScheduleType(), InterestMethod.DECLINING_BALANCE);
|
|
||||||
LoanScheduleModel loanSchedule = decliningLoanScheduleGenerator.generate(mc, loanApplicationTerms, loanCharges, detailDTO);
|
|
||||||
|
|
||||||
loanApplicationTerms
|
|
||||||
.updateTotalInterestDue(Money.of(loanApplicationTerms.getCurrency(), loanSchedule.getTotalInterestCharged()));
|
|
||||||
|
|
||||||
}
|
|
||||||
loanScheduleGenerator = this.loanScheduleFactory.create(loanApplicationTerms.getLoanScheduleType(), InterestMethod.FLAT);
|
loanScheduleGenerator = this.loanScheduleFactory.create(loanApplicationTerms.getLoanScheduleType(), InterestMethod.FLAT);
|
||||||
} else {
|
} else {
|
||||||
loanScheduleGenerator = this.loanScheduleFactory.create(loanApplicationTerms.getLoanScheduleType(),
|
loanScheduleGenerator = this.loanScheduleFactory.create(loanApplicationTerms.getLoanScheduleType(),
|
||||||
@@ -1602,4 +1591,16 @@ public class LoanScheduleAssembler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateInterestForEqualAmortization(final MathContext mc, final LoanApplicationTerms loanApplicationTerms,
|
||||||
|
final Set<LoanCharge> loanCharges, final HolidayDetailDTO detailDTO) {
|
||||||
|
if (loanApplicationTerms.getInterestMethod().isDecliningBalance()) {
|
||||||
|
final LoanScheduleGenerator decliningLoanScheduleGenerator = this.loanScheduleFactory
|
||||||
|
.create(loanApplicationTerms.getLoanScheduleType(), InterestMethod.DECLINING_BALANCE);
|
||||||
|
LoanScheduleModel loanSchedule = decliningLoanScheduleGenerator.generate(mc, loanApplicationTerms, loanCharges, detailDTO);
|
||||||
|
|
||||||
|
loanApplicationTerms
|
||||||
|
.updateTotalInterestDue(Money.of(loanApplicationTerms.getCurrency(), loanSchedule.getTotalInterestCharged()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user