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) {

Reply via email to