@@ -314,8 +314,10 @@ private LoanApplicationTerms assembleLoanApplicationTermsFrom(final JsonElement
314314 calculatedRepaymentsStartingFromDate = deriveFirstRepaymentDate (loanType , repaymentEvery , expectedDisbursementDate ,
315315 repaymentPeriodFrequencyType , loanProduct .getMinimumDaysBetweenDisbursalAndFirstRepayment (), calendar , submittedOnDate ,
316316 repaymentStartDateType );
317- // If calculated repayment start date does not match due to minimum days between disbursal and first
318- // repayment rule, we set repaymentsStartingFromDate (which will be used as seed date later)
317+ // If calculated repayment start date does not match due to minimum days between
318+ // disbursal and first
319+ // repayment rule, we set repaymentsStartingFromDate (which will be used as seed
320+ // date later)
319321 if (!tmpCalculatedRepaymentsStartingFromDate .equals (calculatedRepaymentsStartingFromDate )) {
320322 repaymentsStartingFromDate = calculatedRepaymentsStartingFromDate ;
321323 }
@@ -748,18 +750,9 @@ public LoanScheduleModel assembleLoanScheduleFrom(final LoanApplicationTerms loa
748750 final MathContext mc = MoneyHelper .getMathContext ();
749751 HolidayDetailDTO detailDTO = new HolidayDetailDTO (isHolidayEnabled , holidays , workingDays );
750752
751- LoanScheduleGenerator loanScheduleGenerator = this .loanScheduleFactory .create (loanApplicationTerms .getLoanScheduleType (),
752- loanApplicationTerms .getInterestMethod ());
753+ LoanScheduleGenerator loanScheduleGenerator ;
753754 if (loanApplicationTerms .isEqualAmortization ()) {
754- if (loanApplicationTerms .getInterestMethod ().isDecliningBalance ()) {
755- final LoanScheduleGenerator decliningLoanScheduleGenerator = this .loanScheduleFactory
756- .create (loanApplicationTerms .getLoanScheduleType (), InterestMethod .DECLINING_BALANCE );
757- LoanScheduleModel loanSchedule = decliningLoanScheduleGenerator .generate (mc , loanApplicationTerms , loanCharges , detailDTO );
758-
759- loanApplicationTerms
760- .updateTotalInterestDue (Money .of (loanApplicationTerms .getCurrency (), loanSchedule .getTotalInterestCharged ()));
761-
762- }
755+ updateInterestForEqualAmortization (mc , loanApplicationTerms , loanCharges , detailDTO );
763756 loanScheduleGenerator = this .loanScheduleFactory .create (loanApplicationTerms .getLoanScheduleType (), InterestMethod .FLAT );
764757 } else {
765758 loanScheduleGenerator = this .loanScheduleFactory .create (loanApplicationTerms .getLoanScheduleType (),
@@ -1602,4 +1595,16 @@ private void updateDisbursementWithCharges(final BigDecimal principal, final Col
16021595 }
16031596 }
16041597
1598+ private void updateInterestForEqualAmortization (final MathContext mc , final LoanApplicationTerms loanApplicationTerms ,
1599+ final Set <LoanCharge > loanCharges , final HolidayDetailDTO detailDTO ) {
1600+ if (loanApplicationTerms .getInterestMethod ().isDecliningBalance ()) {
1601+ final LoanScheduleGenerator decliningLoanScheduleGenerator = this .loanScheduleFactory
1602+ .create (loanApplicationTerms .getLoanScheduleType (), InterestMethod .DECLINING_BALANCE );
1603+ LoanScheduleModel loanSchedule = decliningLoanScheduleGenerator .generate (mc , loanApplicationTerms , loanCharges , detailDTO );
1604+
1605+ loanApplicationTerms
1606+ .updateTotalInterestDue (Money .of (loanApplicationTerms .getCurrency (), loanSchedule .getTotalInterestCharged ()));
1607+ }
1608+ }
1609+
16051610}
0 commit comments