This is an automated email from the ASF dual-hosted git repository. adamsaghy pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/fineract.git
commit d263fec31d11b432789c4c20630907387147f5ea Author: mariiaKraievska <[email protected]> AuthorDate: Tue Dec 23 13:52:12 2025 +0200 FINERACT-2413: Re-amortization on charged-off, contract terminated & written-off loan --- .../reamortization/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 2c7afbbce4..940cd114d1 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) {
