FINERACT-2181: Loan disbursement amount exceed loan principal amount when we have Capitalized Income
This commit is contained in:
committed by
Adam Saghy
parent
0d8d6671a1
commit
060cdb5685
+4
-2
@@ -35,9 +35,10 @@ public final class LoanDisbursementValidator {
|
||||
|
||||
public void compareDisbursedToApprovedOrProposedPrincipal(final Loan loan, final BigDecimal disbursedAmount,
|
||||
final BigDecimal totalDisbursed) {
|
||||
final BigDecimal capitalizedIncome = loan.getSummary().getTotalCapitalizedIncome();
|
||||
if (loan.loanProduct().isDisallowExpectedDisbursements() && loan.loanProduct().isAllowApprovedDisbursedAmountsOverApplied()) {
|
||||
final BigDecimal maxDisbursedAmount = loanApplicationValidator.getOverAppliedMax(loan);
|
||||
if (totalDisbursed.compareTo(maxDisbursedAmount) > 0) {
|
||||
if (totalDisbursed.add(capitalizedIncome).compareTo(maxDisbursedAmount) > 0) {
|
||||
final String errorMessage = String.format(
|
||||
"Loan disbursal amount can't be greater than maximum applied loan amount calculation. "
|
||||
+ "Total disbursed amount: %s Maximum disbursal amount: %s",
|
||||
@@ -47,7 +48,8 @@ public final class LoanDisbursementValidator {
|
||||
maxDisbursedAmount);
|
||||
}
|
||||
} else {
|
||||
if (totalDisbursed.compareTo(loan.getApprovedPrincipal()) > 0) {
|
||||
if ((totalDisbursed.compareTo(loan.getApprovedPrincipal()) > 0)
|
||||
|| (totalDisbursed.add(capitalizedIncome).compareTo(loan.getApprovedPrincipal()) > 0)) {
|
||||
final String errorMsg = "Loan can't be disbursed,disburse amount is exceeding approved principal ";
|
||||
throw new LoanDisbursalException(errorMsg, "disburse.amount.must.be.less.than.approved.principal", totalDisbursed,
|
||||
loan.getApprovedPrincipal());
|
||||
|
||||
+4
-1
@@ -106,6 +106,7 @@ public final class LoanTransactionValidatorImpl implements LoanTransactionValida
|
||||
private final EntityDatatableChecksWritePlatformService entityDatatableChecksWritePlatformService;
|
||||
private final CalendarInstanceRepository calendarInstanceRepository;
|
||||
private final LoanDownPaymentTransactionValidator loanDownPaymentTransactionValidator;
|
||||
private final LoanDisbursementValidator loanDisbursementValidator;
|
||||
|
||||
private void throwExceptionIfValidationWarningsExist(final List<ApiParameterError> dataValidationErrors) {
|
||||
if (!dataValidationErrors.isEmpty()) {
|
||||
@@ -157,6 +158,9 @@ public final class LoanTransactionValidatorImpl implements LoanTransactionValida
|
||||
validateLoanClientIsActive(loan);
|
||||
validateLoanGroupIsActive(loan);
|
||||
|
||||
final BigDecimal disbursedAmount = loan.getDisbursedAmount();
|
||||
loanDisbursementValidator.compareDisbursedToApprovedOrProposedPrincipal(loan, principal, disbursedAmount);
|
||||
|
||||
if (loan.isChargedOff()) {
|
||||
throw new GeneralPlatformDomainRuleException("error.msg.loan.disbursal.not.allowed.on.charged.off",
|
||||
"Loan: " + loan.getId() + " disbursement is not allowed on charged-off loan.");
|
||||
@@ -173,7 +177,6 @@ public final class LoanTransactionValidatorImpl implements LoanTransactionValida
|
||||
baseDataValidator.getDataValidationErrors().add(error);
|
||||
}
|
||||
|
||||
final BigDecimal disbursedAmount = loan.getDisbursedAmount();
|
||||
final Set<LoanCollateralManagement> loanCollateralManagements = loan.getLoanCollateralManagements();
|
||||
|
||||
if ((loanCollateralManagements != null && !loanCollateralManagements.isEmpty()) && loan.getLoanType().isIndividualAccount()) {
|
||||
|
||||
Reference in New Issue
Block a user