Skip to content

Commit 3ea2678

Browse files
committed
FINERACT-2464: Refactor LoanScheduleAssembler logic extraction
1 parent 1c90880 commit 3ea2678

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleAssembler.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)