MIFOSX-2505 : included due date charge for interest only recalcualtion installments

This commit is contained in:
pramod
2016-04-18 16:10:35 +05:30
parent fe6e1e88fe
commit 2dae8f8a0e
@@ -579,7 +579,7 @@ public class Loan extends AbstractPersistable<Long> {
getId(), loanCharge.name()); getId(), loanCharge.name());
} }
validateChargeHasValidSpecifiedDateIfApplicable(loanCharge, getDisbursementDate(), getLastRepaymentPeriodDueDate()); validateChargeHasValidSpecifiedDateIfApplicable(loanCharge, getDisbursementDate(), getLastRepaymentPeriodDueDate(false));
loanCharge.update(this); loanCharge.update(this);
@@ -735,10 +735,11 @@ public class Loan extends AbstractPersistable<Long> {
} }
} }
private LocalDate getLastRepaymentPeriodDueDate() { private LocalDate getLastRepaymentPeriodDueDate(final boolean includeRecalculatedInterestComponent) {
LocalDate lastRepaymentDate = getDisbursementDate(); LocalDate lastRepaymentDate = getDisbursementDate();
for (LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) { for (LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
if (!installment.isRecalculatedInterestComponent() && installment.getDueDate().isAfter(lastRepaymentDate)) { if ((includeRecalculatedInterestComponent || !installment.isRecalculatedInterestComponent())
&& installment.getDueDate().isAfter(lastRepaymentDate)) {
lastRepaymentDate = installment.getDueDate(); lastRepaymentDate = installment.getDueDate();
} }
} }
@@ -750,7 +751,7 @@ public class Loan extends AbstractPersistable<Long> {
validateLoanIsNotClosed(loanCharge); validateLoanIsNotClosed(loanCharge);
// NOTE: to remove this constraint requires that loan transactions // 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. // if you want ability to remove loan charges that are waived.
validateLoanChargeIsNotWaived(loanCharge); validateLoanChargeIsNotWaived(loanCharge);
@@ -1616,7 +1617,7 @@ public class Loan extends AbstractPersistable<Long> {
} }
if (loanCharge.isActive()) { if (loanCharge.isActive()) {
loanCharge.update(chargeAmt, loanCharge.getDueLocalDate(), amount, fetchNumberOfInstallmensAfterExceptions(), totalChargeAmt); 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<Long> {
if (loanSchedule == null) { return; } if (loanSchedule == null) { return; }
updateLoanSchedule(loanSchedule.getInstallments(), currentUser); updateLoanSchedule(loanSchedule.getInstallments(), currentUser);
this.interestRecalculatedOn = DateUtils.getDateOfTenant(); this.interestRecalculatedOn = DateUtils.getDateOfTenant();
LocalDate lastRepaymentDate = this.getLastRepaymentPeriodDueDate(); LocalDate lastRepaymentDate = this.getLastRepaymentPeriodDueDate(true);
Set<LoanCharge> charges = this.charges(); Set<LoanCharge> charges = this.charges();
for (LoanCharge loanCharge : charges) { for (LoanCharge loanCharge : charges) {
if (!loanCharge.isDueAtDisbursement()) { if (!loanCharge.isDueAtDisbursement()) {