136 : accrual exception while doing repayment

This commit is contained in:
sachinkulkarni12
2016-04-22 10:45:58 +05:30
parent 3970b2ede1
commit 67be38e71a
3 changed files with 17 additions and 1 deletions
@@ -30,6 +30,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.ListIterator;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -2005,7 +2006,16 @@ public class Loan extends AbstractPersistable<Long> {
private LocalDate determineExpectedMaturityDate() {
final int numberOfInstallments = this.repaymentScheduleInstallments.size();
return this.repaymentScheduleInstallments.get(numberOfInstallments - 1).getDueDate();
LocalDate maturityDate = this.repaymentScheduleInstallments.get(numberOfInstallments - 1).getDueDate();
ListIterator<LoanRepaymentScheduleInstallment> iterator = this.repaymentScheduleInstallments.listIterator(numberOfInstallments);
while(iterator.hasPrevious()){
LoanRepaymentScheduleInstallment loanRepaymentScheduleInstallment = iterator.previous();
if(!loanRepaymentScheduleInstallment.isRecalculatedInterestComponent()){
maturityDate = loanRepaymentScheduleInstallment.getDueDate();
break;
}
}
return maturityDate;
}
public Map<String, Object> loanApplicationRejection(final AppUser currentUser, final JsonCommand command,
@@ -461,6 +461,9 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService {
Set<LoanCharge> loanCharges = loan.charges();
for (LoanRepaymentScheduleInstallment installment : installments) {
if (installment.getDueDate().isAfter(loan.getMaturityDate())) {
accruedTill = DateUtils.getLocalDateOfTenant();
}
if(!isOrganisationDateEnabled || new LocalDate(organisationStartDate).isBefore(installment.getDueDate())){
generateLoanScheduleAccrualData(accruedTill, loanScheduleAccrualDatas, loanId, officeId, accrualStartDate, repaymentFrequency,
repayEvery, interestCalculatedFrom, loanProductId, currency, currencyData, loanCharges, installment);
@@ -312,6 +312,9 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
checkForProductMixRestrictions(loan);
LocalDate recalculateFrom = null;
if (loan.repaymentScheduleDetail().isInterestRecalculationEnabled()) {
recalculateFrom = actualDisbursementDate;
}
ScheduleGeneratorDTO scheduleGeneratorDTO = this.loanUtilService.buildScheduleGeneratorDTO(loan, recalculateFrom);
// validate actual disbursement date against meeting date