From 2dae8f8a0edbe1baee95838babd17247231dd959 Mon Sep 17 00:00:00 2001 From: pramod Date: Mon, 18 Apr 2016 16:10:35 +0530 Subject: [PATCH] MIFOSX-2505 : included due date charge for interest only recalcualtion installments --- .../fineract/portfolio/loanaccount/domain/Loan.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java index 1bf5ec1a8..c9e51a768 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java @@ -579,7 +579,7 @@ public class Loan extends AbstractPersistable { getId(), loanCharge.name()); } - validateChargeHasValidSpecifiedDateIfApplicable(loanCharge, getDisbursementDate(), getLastRepaymentPeriodDueDate()); + validateChargeHasValidSpecifiedDateIfApplicable(loanCharge, getDisbursementDate(), getLastRepaymentPeriodDueDate(false)); loanCharge.update(this); @@ -735,10 +735,11 @@ public class Loan extends AbstractPersistable { } } - private LocalDate getLastRepaymentPeriodDueDate() { + private LocalDate getLastRepaymentPeriodDueDate(final boolean includeRecalculatedInterestComponent) { LocalDate lastRepaymentDate = getDisbursementDate(); for (LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) { - if (!installment.isRecalculatedInterestComponent() && installment.getDueDate().isAfter(lastRepaymentDate)) { + if ((includeRecalculatedInterestComponent || !installment.isRecalculatedInterestComponent()) + && installment.getDueDate().isAfter(lastRepaymentDate)) { lastRepaymentDate = installment.getDueDate(); } } @@ -750,7 +751,7 @@ public class Loan extends AbstractPersistable { validateLoanIsNotClosed(loanCharge); // NOTE: to remove this constraint requires that loan transactions - // that represent the waive of charges also be removed (or reversed) + // that represent the waive of charges also be removed (or reversed)M // if you want ability to remove loan charges that are waived. validateLoanChargeIsNotWaived(loanCharge); @@ -1616,7 +1617,7 @@ public class Loan extends AbstractPersistable { } if (loanCharge.isActive()) { loanCharge.update(chargeAmt, loanCharge.getDueLocalDate(), amount, fetchNumberOfInstallmensAfterExceptions(), totalChargeAmt); - validateChargeHasValidSpecifiedDateIfApplicable(loanCharge, getDisbursementDate(), getLastRepaymentPeriodDueDate()); + validateChargeHasValidSpecifiedDateIfApplicable(loanCharge, getDisbursementDate(), getLastRepaymentPeriodDueDate(false)); } } @@ -4946,7 +4947,7 @@ public class Loan extends AbstractPersistable { if (loanSchedule == null) { return; } updateLoanSchedule(loanSchedule.getInstallments(), currentUser); this.interestRecalculatedOn = DateUtils.getDateOfTenant(); - LocalDate lastRepaymentDate = this.getLastRepaymentPeriodDueDate(); + LocalDate lastRepaymentDate = this.getLastRepaymentPeriodDueDate(true); Set charges = this.charges(); for (LoanCharge loanCharge : charges) { if (!loanCharge.isDueAtDisbursement()) {