Repayment schedule issue to add Multi Disbursement on same day
This commit is contained in:
committed by
Aleksandar Vidakovic
parent
2e66d4628a
commit
add67b966d
+12
-4
@@ -132,9 +132,7 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener
|
||||
updateAmortization(mc, loanApplicationTerms, scheduleParams.getPeriodNumber(), scheduleParams.getOutstandingBalance());
|
||||
|
||||
if (loanApplicationTerms.isMultiDisburseLoan()) {
|
||||
// fetches the first tranche amount and also updates other
|
||||
// tranche
|
||||
// details to map
|
||||
/* fetches the first tranche amount and also updates other tranche details to map */
|
||||
BigDecimal disburseAmt = getDisbursementAmount(loanApplicationTerms, scheduleParams.getPeriodStartDate(), periods,
|
||||
chargesDueAtTimeOfDisbursement, scheduleParams.getDisburseDetailMap(), scheduleParams.applyInterestRecalculation());
|
||||
scheduleParams.setPrincipalToBeScheduled(Money.of(currency, disburseAmt));
|
||||
@@ -1918,7 +1916,17 @@ public abstract class AbstractLoanScheduleGenerator implements LoanScheduleGener
|
||||
principal = principal.add(disbursementData.amount());
|
||||
} else if (!excludePastUndisbursed || disbursementData.isDisbursed()
|
||||
|| !disbursementData.disbursementDate().isBefore(DateUtils.getLocalDateOfTenant())) {
|
||||
disurseDetail.put(disbursementData.disbursementDate(), Money.of(currency, disbursementData.amount()));
|
||||
/*
|
||||
* JW: sums up amounts by disbursal date in case of side-effect issues. Original assumed that there were
|
||||
* no duplicate disbursal dates and 'put' each amount into the map keyed by date
|
||||
*/
|
||||
Money prevsum = disurseDetail.get(disbursementData.disbursementDate());
|
||||
BigDecimal sumToNow = BigDecimal.ZERO;
|
||||
if (prevsum != null) {
|
||||
sumToNow = prevsum.getAmount();
|
||||
}
|
||||
sumToNow = sumToNow.add(disbursementData.amount());
|
||||
disurseDetail.put(disbursementData.disbursementDate(), Money.of(currency, sumToNow));
|
||||
}
|
||||
}
|
||||
return principal;
|
||||
|
||||
+13
-15
@@ -1162,22 +1162,20 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
BigDecimal principal = BigDecimal.ZERO;
|
||||
for (final DisbursementData data : disbursementData) {
|
||||
if (fromDate.equals(this.disbursement.disbursementDate()) && data.disbursementDate().equals(fromDate)) {
|
||||
if (periods.size() == 0) {
|
||||
principal = principal.add(data.amount());
|
||||
LoanSchedulePeriodData periodData = null;
|
||||
if (data.getChargeAmount() == null) {
|
||||
periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
|
||||
disbursementChargeAmount, data.isDisbursed());
|
||||
} else {
|
||||
periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
|
||||
disbursementChargeAmount.add(data.getChargeAmount()).subtract(waivedChargeAmount),
|
||||
data.isDisbursed());
|
||||
}
|
||||
if (periodData != null) {
|
||||
periods.add(periodData);
|
||||
}
|
||||
this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount());
|
||||
principal = principal.add(data.amount());
|
||||
LoanSchedulePeriodData periodData = null;
|
||||
if (data.getChargeAmount() == null) {
|
||||
periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
|
||||
disbursementChargeAmount, data.isDisbursed());
|
||||
} else {
|
||||
periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(),
|
||||
disbursementChargeAmount.add(data.getChargeAmount()).subtract(waivedChargeAmount),
|
||||
data.isDisbursed());
|
||||
}
|
||||
if (periodData != null) {
|
||||
periods.add(periodData);
|
||||
}
|
||||
this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount());
|
||||
} else if (data.isDueForDisbursement(fromDate, dueDate)) {
|
||||
if (!excludePastUndisbursed || (excludePastUndisbursed && (data.isDisbursed()
|
||||
|| !data.disbursementDate().isBefore(LocalDate.now(DateUtils.getDateTimeZoneOfTenant()))))) {
|
||||
|
||||
Reference in New Issue
Block a user