FINERACT-1981: Loan schedule handling of tranche disbursement charges
This commit is contained in:
+1
-2
@@ -967,8 +967,7 @@ public class Loan extends AbstractAuditableWithUTCDateTimeCustom<Long> {
|
||||
}
|
||||
|
||||
private boolean hasDisbursementTransaction() {
|
||||
return this.loanTransactions.stream()
|
||||
.anyMatch(loanTransaction -> loanTransaction.isDisbursement() && loanTransaction.isNotReversed());
|
||||
return this.loanTransactions.stream().anyMatch(LoanTransaction::isDisbursement);
|
||||
|
||||
}
|
||||
|
||||
|
||||
+19
-15
@@ -95,25 +95,29 @@ public class LoanBalanceService {
|
||||
}
|
||||
loan.setTotalOverpaid(null);
|
||||
} else {
|
||||
final Money overpaidBy = calculateTotalOverpayment(loan);
|
||||
loan.setTotalOverpaid(null);
|
||||
if (!overpaidBy.isLessThanZero()) {
|
||||
loan.setTotalOverpaid(overpaidBy.getAmountDefaultedToNullIfZero());
|
||||
}
|
||||
|
||||
final Money recoveredAmount = loan.calculateTotalRecoveredPayments();
|
||||
loan.setTotalRecovered(recoveredAmount.getAmountDefaultedToNullIfZero());
|
||||
|
||||
final Money principal = loan.getLoanRepaymentScheduleDetail().getPrincipal();
|
||||
final Money capitalizedIncome = capitalizedIncomeBalanceService.calculateCapitalizedIncome(loan);
|
||||
final Money capitalizedIncomeAdjustment = capitalizedIncomeBalanceService.calculateCapitalizedIncomeAdjustment(loan);
|
||||
loan.getSummary().updateSummary(loan.getCurrency(), principal, loan.getRepaymentScheduleInstallments(),
|
||||
loan.getLoanCharges(), capitalizedIncome, capitalizedIncomeAdjustment);
|
||||
loan.updateLoanOutstandingBalances();
|
||||
refreshSummaryAndBalancesForDisbursedLoan(loan);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void refreshSummaryAndBalancesForDisbursedLoan(final Loan loan) {
|
||||
final Money overpaidBy = calculateTotalOverpayment(loan);
|
||||
loan.setTotalOverpaid(null);
|
||||
if (!overpaidBy.isLessThanZero()) {
|
||||
loan.setTotalOverpaid(overpaidBy.getAmountDefaultedToNullIfZero());
|
||||
}
|
||||
|
||||
final Money recoveredAmount = loan.calculateTotalRecoveredPayments();
|
||||
loan.setTotalRecovered(recoveredAmount.getAmountDefaultedToNullIfZero());
|
||||
|
||||
final Money principal = loan.getLoanRepaymentScheduleDetail().getPrincipal();
|
||||
final Money capitalizedIncome = capitalizedIncomeBalanceService.calculateCapitalizedIncome(loan);
|
||||
final Money capitalizedIncomeAdjustment = capitalizedIncomeBalanceService.calculateCapitalizedIncomeAdjustment(loan);
|
||||
loan.getSummary().updateSummary(loan.getCurrency(), principal, loan.getRepaymentScheduleInstallments(), loan.getLoanCharges(),
|
||||
capitalizedIncome, capitalizedIncomeAdjustment);
|
||||
loan.updateLoanOutstandingBalances();
|
||||
}
|
||||
|
||||
public void updateLoanToLastDisbursalState(final Loan loan, final LoanDisbursementDetails disbursementDetail) {
|
||||
for (final LoanCharge charge : loan.getActiveCharges()) {
|
||||
if (charge.isOverdueInstallmentCharge()) {
|
||||
|
||||
Reference in New Issue
Block a user