From d263fec31d11b432789c4c20630907387147f5ea Mon Sep 17 00:00:00 2001 From: mariiaKraievska Date: Tue, 23 Dec 2025 13:52:12 +0200 Subject: [PATCH] FINERACT-2413: Re-amortization on charged-off, contract terminated & written-off loan --- .../LoanReAmortizationValidator.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/reamortization/LoanReAmortizationValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/reamortization/LoanReAmortizationValidator.java index 2c7afbbce..940cd114d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/reamortization/LoanReAmortizationValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/reamortization/LoanReAmortizationValidator.java @@ -105,10 +105,10 @@ public class LoanReAmortizationValidator { loan.getId()); } - // validate reamortization is only done on an active loan + // validate re-amortization is only done on an active loan if (!loan.getStatus().isActive()) { throw new GeneralPlatformDomainRuleException("error.msg.loan.reamortize.supported.only.for.active.loans", - "Loan reamortization can only be done on active loans", loan.getId()); + "Loan re-amortization can only be done on active loans", loan.getId()); } // validate if there's already a re-amortization transaction for today @@ -119,6 +119,18 @@ public class LoanReAmortizationValidator { "Loan reamortization can only be done once a day. There has already been a reamortization done for today", loan.getId()); } + + // validate loan is not charged-off + if (loan.isChargedOff()) { + throw new GeneralPlatformDomainRuleException("error.msg.loan.reamortize.not.allowed.on.charged.off", + "Loan re-amortization is not allowed on charged-off loan.", loan.getId()); + } + + // validate loan is not contract terminated + if (loan.isContractTermination()) { + throw new GeneralPlatformDomainRuleException("error.msg.loan.reamortize.not.allowed.on.contract.terminated", + "Loan re-amortization is not allowed on contract terminated loan.", loan.getId()); + } } public LoanTransaction findAndValidateReAmortizeTransactionForUndo(Loan loan) {