FINERACT-2389: Negative amount is shown on repayment schedule

This commit is contained in:
Jose Alberto Hernandez
2025-11-18 14:28:20 +01:00
committed by Adam Saghy
parent 9a16a26d5f
commit 60526f0ce9
7 changed files with 218 additions and 9 deletions
@@ -29,4 +29,5 @@ public class LoanSchedulePeriodDataWrapper {
private final LoanPrincipalRelatedDataHolder data;
private final LocalDate date;
private final boolean isDisbursement;
private final boolean isDisbursed;
}
@@ -70,8 +70,7 @@ public class LoanRepaymentScheduleService {
final BigDecimal totalFeeChargesDueAtDisbursement = repaymentScheduleRelatedLoanData.getTotalFeeChargesAtDisbursement();
LocalDate lastDueDate = disbursement.disbursementDate();
BigDecimal outstandingLoanPrincipalBalance = disbursement.getPrincipal();
boolean excludePastUnDisbursed = isInterestRecalculationEnabled;
boolean excludePastUnDisbursed = LoanScheduleType.PROGRESSIVE.equals(loanScheduleType) && isInterestRecalculationEnabled;
BigDecimal waivedChargeAmount = BigDecimal.ZERO;
for (DisbursementData disbursementDetail : disbursementData) {
waivedChargeAmount = waivedChargeAmount.add(disbursementDetail.getWaivedChargeAmount());
@@ -295,16 +294,18 @@ public class LoanRepaymentScheduleService {
if (!disbursedTranches.isEmpty()) {
for (DisbursementData data : disbursedTranches) {
disbursementDataList.add(new LoanSchedulePeriodDataWrapper(data, data.disbursementDate(), true));
disbursementDataList
.add(new LoanSchedulePeriodDataWrapper(data, data.disbursementDate(), true, data.isDisbursed()));
}
} else {
for (DisbursementData data : sameDateDisbursements) {
disbursementDataList.add(new LoanSchedulePeriodDataWrapper(data, data.disbursementDate(), true));
disbursementDataList
.add(new LoanSchedulePeriodDataWrapper(data, data.disbursementDate(), true, data.isDisbursed()));
}
}
} else {
DisbursementData data = sameDateDisbursements.get(0);
disbursementDataList.add(new LoanSchedulePeriodDataWrapper(data, data.disbursementDate(), true));
disbursementDataList.add(new LoanSchedulePeriodDataWrapper(data, data.disbursementDate(), true, data.isDisbursed()));
}
}
} else {
@@ -316,7 +317,7 @@ public class LoanRepaymentScheduleService {
&& !disbursementPeriodIds.contains(data.getId());
if (isEligible) {
disbursementDataList.add(new LoanSchedulePeriodDataWrapper(data, data.disbursementDate(), true));
disbursementDataList.add(new LoanSchedulePeriodDataWrapper(data, data.disbursementDate(), true, data.isDisbursed()));
disbursementPeriodIds.add(data.getId());
}
}
@@ -343,7 +344,7 @@ public class LoanRepaymentScheduleService {
&& !disbursementPeriodIds.contains(data.getTransactionId());
if (isEligible) {
capitalizedIncomeDataList.add(new LoanSchedulePeriodDataWrapper(data, data.getDate(), false));
capitalizedIncomeDataList.add(new LoanSchedulePeriodDataWrapper(data, data.getDate(), false, false));
disbursementPeriodIds.add(data.getTransactionId());
}
}