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 630f41f11f7de0a852c79a1e56ffc9aca9176842
Author: Oleksii Novikov <[email protected]>
AuthorDate: Tue Dec 16 00:53:38 2025 +0200

    FINERACT-2413: Re-amortization reverse replay handling
---
 .../test/data/loanproduct/DefaultLoanProduct.java  |   1 +
 .../global/LoanProductGlobalInitializerStep.java   |  33 +++
 .../stepdef/loan/LoanReAmortizationStepDef.java    |  29 +--
 .../fineract/test/support/TestContextKey.java      |   1 +
 .../resources/features/LoanReAmortization.feature  | 248 ++++++++++-----------
 .../loanaccount/domain/LoanTransaction.java        |   3 +
 .../LoanReAmortizationParameter.java               |   4 +
 ...dvancedPaymentScheduleTransactionProcessor.java |  15 ++
 8 files changed, 182 insertions(+), 152 deletions(-)

diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/loanproduct/DefaultLoanProduct.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/loanproduct/DefaultLoanProduct.java
index 4e1101bedc..4c722d04e6 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/loanproduct/DefaultLoanProduct.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/data/loanproduct/DefaultLoanProduct.java
@@ -179,6 +179,7 @@ public enum DefaultLoanProduct implements LoanProduct {
     LP1_INTEREST_FLAT_DAILY_RECALCULATION_SAR_MULTIDISB_EXPECT_TRANCHES, //
     LP1_INTEREST_FLAT_DAILY_ACTUAL_ACTUAL_MULTIDISB_EXPECT_TRANCHES, //
     LP2_ADV_PYMNT_360_30_ZERO_INTEREST_CHARGE_OFF_ACCRUAL_ACTIVITY, //
+    
LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_PRINCIPAL_FIRST, 
//
     ;
 
     @Override
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/LoanProductGlobalInitializerStep.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/LoanProductGlobalInitializerStep.java
index f6aebcc9f4..cafc1bac69 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/LoanProductGlobalInitializerStep.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/LoanProductGlobalInitializerStep.java
@@ -4229,6 +4229,39 @@ public class LoanProductGlobalInitializerStep implements 
FineractGlobalInitializ
         TestContext.INSTANCE.set(
                 
TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALC_DAILY_MULTIDISBURSE_CHARGEBACK,
                 
responseLoanProductsRequestLP2AdvancedpaymentInterestEmi36030InterestRecalcDailyMultiDisburseChargeback);
+
+        // 
LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_PRINCIPAL_FIRST
+        // Same as 
LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL but with 
PRINCIPAL before INTEREST
+        // in payment allocation order
+        String name168 = 
DefaultLoanProduct.LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_PRINCIPAL_FIRST.getName();
+
+        PostLoanProductsRequest 
loanProductsRequestAdvCustomPaymentAllocationProgressiveLoanSchedulePrincipalFirst
 = loanProductsRequestFactory
+                .defaultLoanProductsRequestLP2InterestDailyRecalculation()//
+                .name(name168)//
+                
.supportedInterestRefundTypes(Arrays.asList("MERCHANT_ISSUED_REFUND", 
"PAYOUT_REFUND"))//
+                .enableAccrualActivityPosting(true) //
+                .paymentAllocation(List.of(//
+                        createPaymentAllocation("DEFAULT", "NEXT_INSTALLMENT",
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.PAST_DUE_PRINCIPAL, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.PAST_DUE_INTEREST, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.PAST_DUE_PENALTY, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.PAST_DUE_FEE, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.DUE_PRINCIPAL, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.DUE_INTEREST, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.DUE_PENALTY, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.DUE_FEE, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.IN_ADVANCE_PRINCIPAL, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.IN_ADVANCE_INTEREST, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.IN_ADVANCE_PENALTY, //
+                                
LoanProductPaymentAllocationRule.AllocationTypesEnum.IN_ADVANCE_FEE), //
+                        createPaymentAllocation("GOODWILL_CREDIT", 
"REAMORTIZATION"), //
+                        createPaymentAllocation("MERCHANT_ISSUED_REFUND", 
"LAST_INSTALLMENT"), //
+                        createPaymentAllocation("PAYOUT_REFUND", 
"NEXT_INSTALLMENT")));//
+        PostLoanProductsResponse 
responseLoanProductsRequestAdvCustomPaymentAllocationProgressiveLoanSchedulePrincipalFirst
 = createLoanProductIdempotent(
+                
loanProductsRequestAdvCustomPaymentAllocationProgressiveLoanSchedulePrincipalFirst);
+        TestContext.INSTANCE.set(
+                
TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADVANCED_CUSTOM_PAYMENT_ALLOCATION_PROGRESSIVE_LOAN_SCHEDULE_PRINCIPAL_FIRST,
+                
responseLoanProductsRequestAdvCustomPaymentAllocationProgressiveLoanSchedulePrincipalFirst);
     }
 
     public static AdvancedPaymentData createPaymentAllocation(String 
transactionType, String futureInstallmentAllocationRule,
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanReAmortizationStepDef.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanReAmortizationStepDef.java
index 8551701e29..615080f148 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanReAmortizationStepDef.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanReAmortizationStepDef.java
@@ -56,7 +56,7 @@ public class LoanReAmortizationStepDef extends 
AbstractStepDef {
     private final FineractFeignClient fineractClient;
     private final EventAssertion eventAssertion;
 
-    @When("When Admin creates a Loan re-amortization transaction on current 
business date")
+    @When("Admin creates a Loan re-amortization transaction on current 
business date")
     public void createLoanReAmortization() {
         PostLoansResponse loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
         long loanId = loanResponse.getLoanId();
@@ -68,18 +68,6 @@ public class LoanReAmortizationStepDef extends 
AbstractStepDef {
         testContext().set(TestContextKey.LOAN_REAMORTIZATION_RESPONSE, 
response);
     }
 
-    @When("Admin creates a Loan re-amortization transaction on {string} date")
-    public void createLoanReAmortization(final String date) {
-        PostLoansResponse loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
-        long loanId = loanResponse.getLoanId();
-
-        PostLoansLoanIdTransactionsRequest reAmortizationRequest = 
LoanRequestFactory.defaultLoanReAmortizationRequest().startDate(date);
-
-        PostLoansLoanIdTransactionsResponse response = ok(() -> 
fineractClient.loanTransactions().executeLoanTransaction(loanId,
-                reAmortizationRequest, Map.of("command", "reAmortize")));
-        testContext().set(TestContextKey.LOAN_REAMORTIZATION_RESPONSE, 
response);
-    }
-
     @When("Admin creates a Loan re-amortization transaction on current 
business date with reAmortizationInterestHandling {string}")
     public void createLoanReAmortizationWithInterestHandling(final String 
reAmortizationInterestHandling) {
         final PostLoansResponse loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
@@ -93,20 +81,7 @@ public class LoanReAmortizationStepDef extends 
AbstractStepDef {
         testContext().set(TestContextKey.LOAN_REAMORTIZATION_RESPONSE, 
response);
     }
 
-    @When("Admin creates a Loan re-amortization transaction on {string} date 
with reAmortizationInterestHandling {string}")
-    public void createLoanReAmortizationWithInterestHandling(final String 
date, final String reAmortizationInterestHandling) {
-        final PostLoansResponse loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
-        final Long loanId = loanResponse.getLoanId();
-
-        final PostLoansLoanIdTransactionsRequest reAmortizationRequest = 
LoanRequestFactory.defaultLoanReAmortizationRequest()
-                
.reAmortizationInterestHandling(reAmortizationInterestHandling).startDate(date);
-
-        final PostLoansLoanIdTransactionsResponse response = ok(() -> 
fineractClient.loanTransactions().executeLoanTransaction(loanId,
-                reAmortizationRequest, Map.of("command", "reAmortize")));
-        testContext().set(TestContextKey.LOAN_REAMORTIZATION_RESPONSE, 
response);
-    }
-
-    @When("When Admin creates a Loan re-amortization transaction on current 
business date by loan external ID")
+    @When("Admin creates a Loan re-amortization transaction on current 
business date by loan external ID")
     public void createLoanReAmortizationByLoanExternalId() {
         PostLoansResponse loanResponse = 
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
         String loanExternalId = loanResponse.getResourceExternalId();
diff --git 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/support/TestContextKey.java
 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/support/TestContextKey.java
index 9832799000..062b6a19d4 100644
--- 
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/support/TestContextKey.java
+++ 
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/support/TestContextKey.java
@@ -291,4 +291,5 @@ public abstract class TestContextKey {
     public static final String 
LP1_INTEREST_FLAT_DAILY_RECALCULATION_SAR_MULTIDISB_EXPECT_TRANCHES = 
"loanProductCreateResponseLP1InterestFlatDailyRecalculationSameAsRepaymentMultiDisbursementExpectTranches";
     public static final String 
LP1_INTEREST_FLAT_DAILY_ACTUAL_ACTUAL_MULTIDISB_EXPECT_TRANCHES = 
"loanProductCreateResponseLP1InterestFlatDailyActualActualMultiDisbursementExpectTranches";
     public static final String 
DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_360_30_ZERO_INTEREST_CHARGE_OFF_ACCRUAL_ACTIVITY
 = 
"loanProductCreateResponseLP2AdvancedPaymentZeroInterestChargeOffBehaviourAccrualActivity";
+    public static final String 
DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADVANCED_CUSTOM_PAYMENT_ALLOCATION_PROGRESSIVE_LOAN_SCHEDULE_PRINCIPAL_FIRST
 = "loanProductCreateResponseLP2AdvancedPaymentHorizontalPrincipalFirst";
 }
diff --git 
a/fineract-e2e-tests-runner/src/test/resources/features/LoanReAmortization.feature
 
b/fineract-e2e-tests-runner/src/test/resources/features/LoanReAmortization.feature
index 5901ae63b8..c329f24c30 100644
--- 
a/fineract-e2e-tests-runner/src/test/resources/features/LoanReAmortization.feature
+++ 
b/fineract-e2e-tests-runner/src/test/resources/features/LoanReAmortization.feature
@@ -26,7 +26,7 @@ Feature: LoanReAmortization
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance |
       | 01 January 2024  | Disbursement     | 500.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 500.0        |
       | 01 January 2024  | Down Payment     | 125.0  | 125.0     | 0.0      | 
0.0  | 0.0       | 375.0        |
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 4 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date       | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                 | 500.0           |     
          |          | 0.0  |           | 0.0   | 0.0   |            |      |   
          |
@@ -68,7 +68,7 @@ Feature: LoanReAmortization
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance |
       | 01 January 2024  | Disbursement     | 500.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 500.0        |
       | 01 January 2024  | Down Payment     | 125.0  | 125.0     | 0.0      | 
0.0  | 0.0       | 375.0        |
-    When When Admin creates a Loan re-amortization transaction on current 
business date by loan external ID
+    When Admin creates a Loan re-amortization transaction on current business 
date by loan external ID
     Then Loan Repayment schedule has 4 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date       | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                 | 500.0           |     
          |          | 0.0  |           | 0.0   | 0.0   |            |      |   
          |
@@ -96,7 +96,7 @@ Feature: LoanReAmortization
     And Admin successfully approves the loan on "01 January 2024" with "500" 
amount and expected disbursement date on "01 January 2024"
     When Admin successfully disburse the loan on "01 January 2024" with "500" 
EUR transaction amount
     When Admin sets the business date to "25 January 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 4 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date       | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                 | 500.0           |     
          |          | 0.0  |           | 0.0   | 0.0   |            |      |   
          |
@@ -145,7 +145,7 @@ Feature: LoanReAmortization
     When Admin runs inline COB job for Loan
     Then Admin checks that delinquency range is: "RANGE_3" and has 
delinquentDate "2024-01-19"
     When Admin sets the business date to "25 January 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Admin checks that delinquency range is: "NO_DELINQUENCY" and has 
delinquentDate ""
 
   @TestRailId:C3073 @AdvancedPaymentAllocation
@@ -161,7 +161,7 @@ Feature: LoanReAmortization
     When Admin sets the business date to "16 January 2024"
     When Admin adds "LOAN_NSF_FEE" due date charge with "16 January 2024" due 
date and 10 EUR transaction amount
     When Admin sets the business date to "25 January 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 4 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date       | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                 | 500.0           |     
          |          | 0.0  |           | 0.0   | 0.0   |            |      |   
          |
@@ -189,7 +189,7 @@ Feature: LoanReAmortization
     And Admin successfully approves the loan on "01 January 2024" with "500" 
amount and expected disbursement date on "01 January 2024"
     When Admin successfully disburse the loan on "01 January 2024" with "500" 
EUR transaction amount
     When Admin sets the business date to "01 February 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 4 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 500.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -217,7 +217,7 @@ Feature: LoanReAmortization
     And Admin successfully approves the loan on "01 January 2024" with "500" 
amount and expected disbursement date on "01 January 2024"
     When Admin successfully disburse the loan on "01 January 2024" with "500" 
EUR transaction amount
     When Admin sets the business date to "01 February 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 4 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 500.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -264,7 +264,7 @@ Feature: LoanReAmortization
     When Admin successfully disburse the loan on "01 January 2024" with "500" 
EUR transaction amount
     When Admin sets the business date to "01 February 2024"
     When Admin adds "LOAN_NSF_FEE" due date charge with "27 February 2024" due 
date and 10 EUR transaction amount
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 5 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 500.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -295,7 +295,7 @@ Feature: LoanReAmortization
     When Admin sets the business date to "16 January 2024"
     When Admin adds "LOAN_NSF_FEE" due date charge with "16 January 2024" due 
date and 10 EUR transaction amount
     When Admin sets the business date to "31 January 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 4 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date       | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                 | 500.0           |     
          |          | 0.0  |           | 0.0   | 0.0   |            |      |   
          |
@@ -340,7 +340,7 @@ Feature: LoanReAmortization
       | 01 January 2024  | Down Payment     | 125.0  | 125.0     | 0.0      | 
0.0  | 0.0       | 375.0        |
       | 17 January 2024  | Repayment        | 50.0   | 50.0      | 0.0      | 
0.0  | 0.0       | 325.0        |
     When Admin sets the business date to "30 January 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date by loan external ID
+    When Admin creates a Loan re-amortization transaction on current business 
date by loan external ID
     Then Loan Repayment schedule has 4 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date       | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                 | 500.0           |     
          |          | 0.0  |           | 0.0   | 0.0   |            |      |   
          |
@@ -372,7 +372,7 @@ Feature: LoanReAmortization
     When Admin runs inline COB job for Loan
     Then LoanDelinquencyRangeChangeBusinessEvent is created
     When Admin sets the business date to "01 February 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then LoanDelinquencyRangeChangeBusinessEvent is created
     Then LoanReAmortizeBusinessEvent is created
 
@@ -390,7 +390,7 @@ Feature: LoanReAmortization
     And Customer makes "AUTOPAY" repayment on "16 January 2024" with 120 EUR 
transaction amount
 #    --- Re-amortization transaction ---
     When Admin sets the business date to "20 February 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 800.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -443,7 +443,7 @@ Feature: LoanReAmortization
     When Admin successfully disburse the loan on "01 January 2024" with "800" 
EUR transaction amount
 #    --- Re-amortization transaction ---
     When Admin sets the business date to "20 February 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 800.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -495,7 +495,7 @@ Feature: LoanReAmortization
     When Admin successfully disburse the loan on "01 January 2024" with "800" 
EUR transaction amount
 #    --- Re-amortization transaction ---
     When Admin sets the business date to "20 February 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 800.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -552,7 +552,7 @@ Feature: LoanReAmortization
     And Customer makes "AUTOPAY" repayment on "16 January 2024" with 140 EUR 
transaction amount
 #    --- Re-amortization transaction ---
     When Admin sets the business date to "20 February 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 800.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -605,7 +605,7 @@ Feature: LoanReAmortization
     When Admin successfully disburse the loan on "01 January 2024" with "800" 
EUR transaction amount
 #    --- Re-amortization transaction after 1st installment date ---
     When Admin sets the business date to "20 February 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 800.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -739,7 +739,7 @@ Feature: LoanReAmortization
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
     When Admin sets the business date to "15 March 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -809,7 +809,7 @@ Feature: LoanReAmortization
       | Name       | isPenalty | Payment due at     | Due as of        | 
Calculation type | Due  | Paid | Waived | Outstanding |
       | Snooze fee | false     | Specified due date | 15 February 2024 | Flat  
           | 10.0 | 0.0  | 0.0    | 10.0        |
     When Admin sets the business date to "15 March 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -880,7 +880,7 @@ Feature: LoanReAmortization
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    |
     When Admin sets the business date to "15 March 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 7 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -948,7 +948,7 @@ Feature: LoanReAmortization
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    |
       | 01 February 2024 | Chargeback       | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 100.0        | false    |
     When Admin sets the business date to "15 March 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -1015,7 +1015,7 @@ Feature: LoanReAmortization
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    |
       | 01 February 2024 | Repayment        | 20.0   | 19.42     | 0.58     | 
0.0  | 0.0       | 80.58        | false    |
     When Admin sets the business date to "15 March 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -1085,7 +1085,7 @@ Feature: LoanReAmortization
       | 01 January 2024  | Down Payment     | 25.0   | 25.0      | 0.0      | 
0.0  | 0.0       | 75.0         | false    | false    |
       | 01 February 2024 | Repayment        | 12.76  | 12.32     | 0.44     | 
0.0  | 0.0       | 62.68        | false    | false    |
     When Admin sets the business date to "15 March 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 7 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -1510,15 +1510,14 @@ Feature: LoanReAmortization
       | 01 February 2024 | Repayment        | 12.76  | 12.32     | 0.44     | 
0.0  | 0.0       | 62.68        | false    | false    |
       | 15 March 2024    | Re-amortize      | 12.76  | 12.39     | 0.37     | 
0.0  | 0.0       | 0.0          | false    | false    |
 
-  @Skip
   @TestRailId:C4374 @AdvancedPaymentAllocation
   Scenario: Verify Re-amortization trn reversed by backdated repayment - 
Interest calculation: Default Behavior - UC7
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
     When Admin set 
"LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL" loan product 
"DEFAULT" transaction type to "NEXT_INSTALLMENT" future installment allocation 
rule
     When Admin creates a fully customized loan with the following data:
-      | LoanProduct                                                    | 
submitted on date | with Principal | ANNUAL interest rate % | interest type     
| interest calculation period | amortization type  | loanTermFrequency | 
loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | 
numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | 
interest free period | Payment strategy            |
-      | LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL  | 01 
January 2024   | 100            | 7                      | DECLINING_BALANCE | 
DAILY                       | EQUAL_INSTALLMENTS | 6                 | MONTHS   
             | 1              | MONTHS                 | 6                  | 0 
                      | 0                      | 0                    | 
ADVANCED_PAYMENT_ALLOCATION |
+      | LoanProduct                                                   | 
submitted on date | with Principal | ANNUAL interest rate % | interest type     
| interest calculation period | amortization type  | loanTermFrequency | 
loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | 
numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | 
interest free period | Payment strategy            |
+      | LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL | 01 
January 2024   | 100            | 7                      | DECLINING_BALANCE | 
DAILY                       | EQUAL_INSTALLMENTS | 6                 | MONTHS   
             | 1              | MONTHS                 | 6                  | 0 
                      | 0                      | 0                    | 
ADVANCED_PAYMENT_ALLOCATION |
     And Admin successfully approves the loan on "01 January 2024" with "100" 
amount and expected disbursement date on "01 January 2024"
     When Admin successfully disburse the loan on "01 January 2024" with "100" 
EUR transaction amount
     When Admin sets the business date to "01 February 2024"
@@ -1540,27 +1539,29 @@ Feature: LoanReAmortization
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
 
-    When Admin sets the business date to "01 April 2024"
-    And Customer makes "AUTOPAY" repayment on "01 March 2024" with 17.01 EUR 
transaction amount
+#   --- Re-amortization transaction ---
+    When Admin sets the business date to "15 March 2024"
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 | 01 February 2024 | 83.57           | 
16.43         | 0.58     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
-      | 2  | 29   | 01 March 2024    | 01 March 2024    | 67.05           | 
16.52         | 0.49     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
-      | 3  | 31   | 01 April 2024    |                  | 50.43           | 
16.62         | 0.39     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 4  | 30   | 01 May 2024      |                  | 33.71           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 5  | 31   | 01 June 2024     |                  | 16.9            | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.9          | 0.1      | 0.0  | 0.0       | 17.0  | 0.0   | 0.0        | 0.0  
| 17.0        |
-    And Loan Repayment schedule has the following data in Total row:
-      | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
-      | 100.0         | 2.05     | 0.0  | 0.0       | 102.05 | 34.02 | 0.0     
   | 0.0  | 68.03       |
+      | 2  | 29   | 01 March 2024    | 15 March 2024    | 83.57           | 
0.0           | 0.0      | 0.0  | 0.0       | 0.0   | 0.0   | 0.0        | 0.0  
| 0.0         |
+      | 3  | 31   | 01 April 2024    |                  | 63.23           | 
20.34         | 0.98     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 4  | 30   | 01 May 2024      |                  | 42.28           | 
20.95         | 0.37     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 5  | 31   | 01 June 2024     |                  | 21.21           | 
21.07         | 0.25     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
21.21         | 0.12     | 0.0  | 0.0       | 21.33 | 0.0   | 0.0        | 0.0  
| 21.33       |
+    Then Loan Repayment schedule has the following data in Total row:
+      | Principal due | Interest | Fees | Penalties | Due   | Paid  | In 
advance | Late | Outstanding |
+      | 100.0         | 2.3      | 0.0  | 0.0       | 102.3 | 17.01 | 0.0      
  | 0.0  | 85.29       |
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
-      | 01 March 2024    | Repayment        | 17.01  | 16.52     | 0.49     | 
0.0  | 0.0       | 67.05        | false    | false    |
-#   --- Re-amortization transaction ---
-    When Admin creates a Loan re-amortization transaction on "15 March 2024" 
date
+      | 15 March 2024    | Re-amortize      | 17.01  | 16.52     | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
+
+    When Admin sets the business date to "01 April 2024"
+    And Customer makes "AUTOPAY" repayment on "01 March 2024" with 17.01 EUR 
transaction amount
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -1570,7 +1571,7 @@ Feature: LoanReAmortization
       | 4  | 30   | 01 May 2024      |                  | 33.71           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
       | 5  | 31   | 01 June 2024     |                  | 16.9            | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
       | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.9          | 0.1      | 0.0  | 0.0       | 17.0  | 0.0   | 0.0        | 0.0  
| 17.0        |
-    And Loan Repayment schedule has the following data in Total row:
+    Then Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
       | 100.0         | 2.05     | 0.0  | 0.0       | 102.05 | 34.02 | 0.0     
   | 0.0  | 68.03       |
     Then Loan Transactions tab has the following data:
@@ -1578,12 +1579,9 @@ Feature: LoanReAmortization
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
       | 01 March 2024    | Repayment        | 17.01  | 16.52     | 0.49     | 
0.0  | 0.0       | 67.05        | false    | false    |
-      | 15 March 2024    | Re-amortize      | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 0.0          | false    | false    |
-
     When Loan Pay-off is made on "15 March 2024"
     Then Loan is closed with zero outstanding balance and it's all 
installments have obligations met
 
-  @Skip
   @TestRailId:C4375 @AdvancedPaymentAllocation
   Scenario: Verify Re-amortization trn reverse-replayed by backdated repayment 
- Interest calculation: equal amortization interest split - UC7
     When Admin sets the business date to "01 January 2024"
@@ -1600,41 +1598,42 @@ Feature: LoanReAmortization
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 | 01 February 2024 | 83.57           | 
16.43         | 0.58     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
-      | 2  | 29   | 01 March 2024    |                  | 66.97           | 
16.6          | 0.41     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 3  | 31   | 01 April 2024    |                  | 50.35           | 
16.62         | 0.39     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 4  | 30   | 01 May 2024      |                  | 33.63           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 5  | 31   | 01 June 2024     |                  | 16.82           | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.82         | 0.1      | 0.0  | 0.0       | 16.92 | 0.0   | 0.0        | 0.0  
| 16.92       |
+      | 2  | 29   | 01 March 2024    |                  | 67.05           | 
16.52         | 0.49     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
+      | 3  | 31   | 01 April 2024    |                  | 50.43           | 
16.62         | 0.39     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
+      | 4  | 30   | 01 May 2024      |                  | 33.71           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
+      | 5  | 31   | 01 June 2024     |                  | 16.9            | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
+      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.9          | 0.1      | 0.0  | 0.0       | 17.0  | 0.0   | 0.0        | 0.0  
| 17.0        |
     Then Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
-      | 100.0         | 1.97     | 0.0  | 0.0       | 101.97 | 17.01 | 0.0     
   | 0.0  | 71.97       |
+      | 100.0         | 2.05     | 0.0  | 0.0       | 102.05 | 17.01 | 0.0     
   | 0.0  | 85.04       |
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
-      | 01 February 2024 | Repayment        | 30.0   | 29.42     | 0.58     | 
0.0  | 0.0       | 70.58        | false    | false    |
+      | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
 
-    When Admin sets the business date to "01 April 2024"
-    And Customer makes "AUTOPAY" repayment on "01 March 2024" with 17.01 EUR 
transaction amount
+    #   --- Re-amortization transaction ---
+    When Admin sets the business date to "15 March 2024"
+    And Admin creates a Loan re-amortization transaction on current business 
date with reAmortizationInterestHandling "EQUAL_AMORTIZATION_INTEREST_SPLIT"
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 | 01 February 2024 | 83.57           | 
16.43         | 0.58     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
-      | 2  | 29   | 01 March 2024    | 01 March 2024    | 67.05           | 
16.52         | 0.49     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
-      | 3  | 31   | 01 April 2024    |                  | 50.43           | 
16.62         | 0.39     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 4  | 30   | 01 May 2024      |                  | 33.71           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 5  | 31   | 01 June 2024     |                  | 16.9            | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.9          | 0.1      | 0.0  | 0.0       | 17.0  | 0.0   | 0.0        | 0.0  
| 17.0        |
+      | 2  | 29   | 01 March 2024    | 15 March 2024    | 83.57           | 
0.0           | 0.0      | 0.0  | 0.0       | 0.0   | 0.0   | 0.0        | 0.0  
| 0.0         |
+      | 3  | 31   | 01 April 2024    |                  | 62.86           | 
20.71         | 0.61     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 4  | 30   | 01 May 2024      |                  | 42.03           | 
20.83         | 0.49     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 5  | 31   | 01 June 2024     |                  | 21.08           | 
20.95         | 0.37     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
21.08         | 0.24     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
     And Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
-      | 100.0         | 2.05     | 0.0  | 0.0       | 102.05 | 34.02 | 0.0     
   | 0.0  | 68.03       |
-    Then Loan Transactions tab has the following data:
+      | 100.0         | 2.29     | 0.0  | 0.0       | 102.29 | 17.01 | 0.0     
   | 0.0  | 85.28       |
+    And Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
-      | 01 March 2024    | Repayment        | 17.01  | 16.52     | 0.49     | 
0.0  | 0.0       | 67.05        | false    | false    |
+      | 15 March 2024    | Re-amortize      | 17.01  | 16.52     | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
 
-#   --- Re-amortization transaction ---
-    And Admin creates a Loan re-amortization transaction on "15 March 2024" 
date with reAmortizationInterestHandling "EQUAL_AMORTIZATION_INTEREST_SPLIT"
+    When Admin sets the business date to "01 April 2024"
+    And Customer makes "AUTOPAY" repayment on "01 March 2024" with 17.01 EUR 
transaction amount
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -1650,21 +1649,19 @@ Feature: LoanReAmortization
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
-      | 01 February 2024 | Repayment        | 30.0   | 29.42     | 0.58     | 
0.0  | 0.0       | 70.58        | false    | false    |
-      | 15 March 2024    | Re-amortize      | 4.02   | 3.61      | 0.41     | 
0.0  | 0.0       | 0.0          | false    | false    |
+      | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
+      | 01 March 2024    | Repayment        | 17.01  | 16.52     | 0.49     | 
0.0  | 0.0       | 67.05        | false    | false    |
 
     When Loan Pay-off is made on "15 March 2024"
     Then Loan is closed with zero outstanding balance and it's all 
installments have obligations met
 
-  @Skip
   @TestRailId:C4376 @AdvancedPaymentAllocation
   Scenario: Verify Re-amortization trn reverse-replayed by backdated repayment 
- Interest calculation: Default Behavior - UC7.1
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
-    When Admin set 
"LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL" loan product 
"DEFAULT" transaction type to "NEXT_INSTALLMENT" future installment allocation 
rule
     When Admin creates a fully customized loan with the following data:
-      | LoanProduct                                                    | 
submitted on date | with Principal | ANNUAL interest rate % | interest type     
| interest calculation period | amortization type  | loanTermFrequency | 
loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | 
numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | 
interest free period | Payment strategy            |
-      | LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL  | 01 
January 2024   | 100            | 7                      | DECLINING_BALANCE | 
DAILY                       | EQUAL_INSTALLMENTS | 6                 | MONTHS   
             | 1              | MONTHS                 | 6                  | 0 
                      | 0                      | 0                    | 
ADVANCED_PAYMENT_ALLOCATION |
+      | LoanProduct                                                            
       | submitted on date | with Principal | ANNUAL interest rate % | interest 
type     | interest calculation period | amortization type  | loanTermFrequency 
| loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | 
numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | 
interest free period | Payment strategy            |
+      | 
LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_PRINCIPAL_FIRST | 
01 January 2024   | 100            | 7                      | DECLINING_BALANCE 
| DAILY                       | EQUAL_INSTALLMENTS | 6                 | MONTHS 
               | 1              | MONTHS                 | 6                  | 
0                       | 0                      | 0                    | 
ADVANCED_PAYMENT_ALLOCATION |
     And Admin successfully approves the loan on "01 January 2024" with "100" 
amount and expected disbursement date on "01 January 2024"
     When Admin successfully disburse the loan on "01 January 2024" with "100" 
EUR transaction amount
     When Admin sets the business date to "01 February 2024"
@@ -1678,7 +1675,7 @@ Feature: LoanReAmortization
       | 4  | 30   | 01 May 2024      |                  | 33.71           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
       | 5  | 31   | 01 June 2024     |                  | 16.9            | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
       | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.9          | 0.1      | 0.0  | 0.0       | 17.0  | 0.0   | 0.0        | 0.0  
| 17.0        |
-    And Loan Repayment schedule has the following data in Total row:
+    Then Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
       | 100.0         | 2.05     | 0.0  | 0.0       | 102.05 | 17.01 | 0.0     
   | 0.0  | 85.04       |
     Then Loan Transactions tab has the following data:
@@ -1686,58 +1683,58 @@ Feature: LoanReAmortization
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
 
-    When Admin sets the business date to "01 April 2024"
-    And Customer makes "AUTOPAY" repayment on "01 March 2024" with 10 EUR 
transaction amount
+    #   --- Re-amortization transaction ---
+    When Admin sets the business date to "15 March 2024"
+    And Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 | 01 February 2024 | 83.57           | 
16.43         | 0.58     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
-      | 2  | 29   | 01 March 2024    |                  | 67.05           | 
16.52         | 0.49     | 0.0  | 0.0       | 17.01 | 10.0  | 0.0        | 0.0  
| 7.01       |
-      | 3  | 31   | 01 April 2024    |                  | 50.47           | 
16.58         | 0.43     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 4  | 30   | 01 May 2024      |                  | 33.75           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 5  | 31   | 01 June 2024     |                  | 16.94           | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.94         | 0.1      | 0.0  | 0.0       | 17.04 | 0.0   | 0.0        | 0.0  
| 17.04       |
-    And Loan Repayment schedule has the following data in Total row:
-      | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
-      | 100.0         | 2.09     | 0.0  | 0.0       | 102.09 | 27.01 | 0.0     
   | 0.0  | 75.08       |
+      | 2  | 29   | 01 March 2024    | 15 March 2024    | 83.57           | 
0.0           | 0.0      | 0.0  | 0.0       | 0.0   | 0.0   | 0.0        | 0.0  
| 0.0         |
+      | 3  | 31   | 01 April 2024    |                  | 63.23           | 
20.34         | 0.98     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 4  | 30   | 01 May 2024      |                  | 42.28           | 
20.95         | 0.37     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 5  | 31   | 01 June 2024     |                  | 21.21           | 
21.07         | 0.25     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
21.21         | 0.12     | 0.0  | 0.0       | 21.33 | 0.0   | 0.0        | 0.0  
| 21.33       |
+    Then Loan Repayment schedule has the following data in Total row:
+      | Principal due | Interest | Fees | Penalties | Due   | Paid  | In 
advance | Late | Outstanding |
+      | 100.0         | 2.3      | 0.0  | 0.0       | 102.3 | 17.01 | 0.0      
  | 0.0  | 85.29       |
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
-      | 01 March 2024    | Repayment        | 10.0   | 9.51      | 0.49     | 
0.0  | 0.0       | 74.06        | false    | false    |
-#   --- Re-amortization transaction ---
-    When Admin creates a Loan re-amortization transaction on "15 March 2024" 
date
+      | 15 March 2024    | Re-amortize      | 17.01  | 16.52     | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
+
+    When Admin sets the business date to "01 April 2024"
+    And Customer makes "AUTOPAY" repayment on "01 March 2024" with 10 EUR 
transaction amount
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 | 01 February 2024 | 83.57           | 
16.43         | 0.58     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
-      | 2  | 29   | 01 March 2024    |                  | 67.05           | 
16.52         | 0.49     | 0.0  | 0.0       | 17.01 | 10.0  | 0.0        | 0.0  
| 7.01       |
-      | 3  | 31   | 01 April 2024    |                  | 50.47           | 
16.58         | 0.43     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 4  | 30   | 01 May 2024      |                  | 33.75           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 5  | 31   | 01 June 2024     |                  | 16.94           | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.94         | 0.1      | 0.0  | 0.0       | 17.04 | 0.0   | 0.0        | 0.0  
| 17.04       |
-    And Loan Repayment schedule has the following data in Total row:
+      | 2  | 29   | 01 March 2024    | 15 March 2024    | 73.57           | 
10.0          | 0.0      | 0.0  | 0.0       | 10.0  | 10.0  | 0.0        | 0.0  
| 0.0         |
+      | 3  | 31   | 01 April 2024    |                  | 55.7            | 
17.87         | 0.92     | 0.0  | 0.0       | 18.79 | 0.0   | 0.0        | 0.0  
| 18.79       |
+      | 4  | 30   | 01 May 2024      |                  | 37.23           | 
18.47         | 0.32     | 0.0  | 0.0       | 18.79 | 0.0   | 0.0        | 0.0  
| 18.79       |
+      | 5  | 31   | 01 June 2024     |                  | 18.66           | 
18.57         | 0.22     | 0.0  | 0.0       | 18.79 | 0.0   | 0.0        | 0.0  
| 18.79       |
+      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
18.66         | 0.11     | 0.0  | 0.0       | 18.77 | 0.0   | 0.0        | 0.0  
| 18.77       |
+    Then Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
-      | 100.0         | 2.09     | 0.0  | 0.0       | 102.09 | 27.01 | 0.0     
   | 0.0  | 75.08       |
+      | 100.0         | 2.15     | 0.0  | 0.0       | 102.15 | 27.01 | 0.0     
   | 0.0  | 75.14       |
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
-      | 01 March 2024    | Repayment        | 10.0   | 9.51      | 0.49     | 
0.0  | 0.0       | 74.06        | false    | false    |
-      | 15 March 2024    | Re-amortize      | 7.01   | 6.52      | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
+      | 01 March 2024    | Repayment        | 10.0   | 10.0      | 0.0      | 
0.0  | 0.0       | 73.57        | false    | false    |
+      | 15 March 2024    | Re-amortize      | 7.01   | 6.52      | 0.49     | 
0.0  | 0.0       | 0.0          | false    | true     |
 
     When Loan Pay-off is made on "15 March 2024"
     Then Loan is closed with zero outstanding balance and it's all 
installments have obligations met
 
-  @Skip
   @TestRailId:C4377
   Scenario: Verify Re-amortization trn reversed by backdated repayment - 
Interest calculation: equal amortization interest split - UC7.1
     When Admin sets the business date to "01 January 2024"
     When Admin creates a client with random data
-    When Admin set 
"LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL" loan product 
"DEFAULT" transaction type to "NEXT_INSTALLMENT" future installment allocation 
rule
     When Admin creates a fully customized loan with the following data:
       | LoanProduct                                                    | 
submitted on date | with Principal | ANNUAL interest rate % | interest type     
| interest calculation period | amortization type  | loanTermFrequency | 
loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | 
numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | 
interest free period | Payment strategy            |
-      | LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL  | 01 
January 2024   | 100            | 7                      | DECLINING_BALANCE | 
DAILY                       | EQUAL_INSTALLMENTS | 6                 | MONTHS   
             | 1              | MONTHS                 | 6                  | 0 
                      | 0                      | 0                    | 
ADVANCED_PAYMENT_ALLOCATION |
+      | 
LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL_PRINCIPAL_FIRST  
| 01 January 2024   | 100            | 7                      | 
DECLINING_BALANCE | DAILY                       | EQUAL_INSTALLMENTS | 6        
         | MONTHS                | 1              | MONTHS                 | 6  
                | 0                       | 0                      | 0          
          | ADVANCED_PAYMENT_ALLOCATION |
     And Admin successfully approves the loan on "01 January 2024" with "100" 
amount and expected disbursement date on "01 January 2024"
     When Admin successfully disburse the loan on "01 January 2024" with "100" 
EUR transaction amount
     When Admin sets the business date to "01 February 2024"
@@ -1746,59 +1743,60 @@ Feature: LoanReAmortization
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 | 01 February 2024 | 83.57           | 
16.43         | 0.58     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
-      | 2  | 29   | 01 March 2024    |                  | 66.97           | 
16.6          | 0.41     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 3  | 31   | 01 April 2024    |                  | 50.35           | 
16.62         | 0.39     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 4  | 30   | 01 May 2024      |                  | 33.63           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 5  | 31   | 01 June 2024     |                  | 16.82           | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.82         | 0.1      | 0.0  | 0.0       | 16.92 | 0.0   | 0.0        | 0.0  
| 16.92       |
+      | 2  | 29   | 01 March 2024    |                  | 67.05           | 
16.52         | 0.49     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
+      | 3  | 31   | 01 April 2024    |                  | 50.43           | 
16.62         | 0.39     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
+      | 4  | 30   | 01 May 2024      |                  | 33.71           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
+      | 5  | 31   | 01 June 2024     |                  | 16.9            | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
+      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.9          | 0.1      | 0.0  | 0.0       | 17.0  | 0.0   | 0.0        | 0.0  
| 17.0        |
     Then Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
-      | 100.0         | 1.97     | 0.0  | 0.0       | 101.97 | 17.01 | 0.0     
   | 0.0  | 71.97       |
+      | 100.0         | 2.05     | 0.0  | 0.0       | 102.05 | 17.01 | 0.0     
   | 0.0  | 85.04       |
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
-      | 01 February 2024 | Repayment        | 30.0   | 29.42     | 0.58     | 
0.0  | 0.0       | 70.58        | false    | false    |
+      | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
 
-    When Admin sets the business date to "01 April 2024"
-    And Customer makes "AUTOPAY" repayment on "01 March 2024" with 10 EUR 
transaction amount
+#   --- Re-amortization transaction ---
+    When Admin sets the business date to "15 March 2024"
+    And Admin creates a Loan re-amortization transaction on current business 
date with reAmortizationInterestHandling "EQUAL_AMORTIZATION_INTEREST_SPLIT"
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 | 01 February 2024 | 83.57           | 
16.43         | 0.58     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
-      | 2  | 29   | 01 March 2024    |                  | 67.05           | 
16.52         | 0.49     | 0.0  | 0.0       | 17.01 | 10.0  | 0.0        | 0.0  
| 7.01       |
-      | 3  | 31   | 01 April 2024    |                  | 50.47           | 
16.58         | 0.43     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 4  | 30   | 01 May 2024      |                  | 33.75           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 5  | 31   | 01 June 2024     |                  | 16.94           | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.94         | 0.1      | 0.0  | 0.0       | 17.04 | 0.0   | 0.0        | 0.0  
| 17.04       |
+      | 2  | 29   | 01 March 2024    | 15 March 2024    | 83.57           | 
0.0           | 0.0      | 0.0  | 0.0       | 0.0   | 0.0   | 0.0        | 0.0  
| 0.0         |
+      | 3  | 31   | 01 April 2024    |                  | 62.86           | 
20.71         | 0.61     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 4  | 30   | 01 May 2024      |                  | 42.03           | 
20.83         | 0.49     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 5  | 31   | 01 June 2024     |                  | 21.08           | 
20.95         | 0.37     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
+      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
21.08         | 0.24     | 0.0  | 0.0       | 21.32 | 0.0   | 0.0        | 0.0  
| 21.32       |
     And Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
-      | 100.0         | 2.09     | 0.0  | 0.0       | 102.09 | 27.01 | 0.0     
   | 0.0  | 75.08       |
-    Then Loan Transactions tab has the following data:
+      | 100.0         | 2.29     | 0.0  | 0.0       | 102.29 | 17.01 | 0.0     
   | 0.0  | 85.28       |
+    And Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
-      | 01 March 2024    | Repayment        | 10.0   | 9.51      | 0.49     | 
0.0  | 0.0       | 74.06        | false    | false    |
+      | 15 March 2024    | Re-amortize      | 17.01  | 16.52     | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
 
-#   --- Re-amortization transaction ---
-    And Admin creates a Loan re-amortization transaction on "15 March 2024" 
date with reAmortizationInterestHandling "EQUAL_AMORTIZATION_INTEREST_SPLIT"
+    When Admin sets the business date to "01 April 2024"
+    And Customer makes "AUTOPAY" repayment on "01 March 2024" with 10 EUR 
transaction amount
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
       | 1  | 31   | 01 February 2024 | 01 February 2024 | 83.57           | 
16.43         | 0.58     | 0.0  | 0.0       | 17.01 | 17.01 | 0.0        | 0.0  
| 0.0         |
-      | 2  | 29   | 01 March 2024    |                  | 67.05           | 
16.52         | 0.49     | 0.0  | 0.0       | 17.01 | 10.0  | 0.0        | 0.0  
| 7.01       |
-      | 3  | 31   | 01 April 2024    |                  | 50.47           | 
16.58         | 0.43     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 4  | 30   | 01 May 2024      |                  | 33.75           | 
16.72         | 0.29     | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 5  | 31   | 01 June 2024     |                  | 16.94           | 
16.81         | 0.2      | 0.0  | 0.0       | 17.01 | 0.0   | 0.0        | 0.0  
| 17.01       |
-      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
16.94         | 0.1      | 0.0  | 0.0       | 17.04 | 0.0   | 0.0        | 0.0  
| 17.04       |
+      | 2  | 29   | 01 March 2024    | 15 March 2024    | 73.57           | 
10.0          | 0.0      | 0.0  | 0.0       | 10.0  | 10.0  | 0.0        | 0.0  
| 0.0         |
+      | 3  | 31   | 01 April 2024    |                  | 55.34           | 
18.23         | 0.55     | 0.0  | 0.0       | 18.78        | 0.0   | 0.0        
| 0.0  | 18.78       |
+      | 4  | 30   | 01 May 2024      |                  | 37.0            | 
18.34         | 0.44     | 0.0  | 0.0       | 18.78 | 0.0   | 0.0        | 0.0  
| 18.78       |
+      | 5  | 31   | 01 June 2024     |                  | 18.56           | 
18.44         | 0.34     | 0.0  | 0.0       | 18.78        | 0.0   | 0.0        
| 0.0  | 18.78       |
+      | 6  | 30   | 01 July 2024     |                  | 0.0             | 
18.56         | 0.23     | 0.0  | 0.0       | 18.79        | 0.0   | 0.0        
| 0.0  | 18.79       |
     And Loan Repayment schedule has the following data in Total row:
       | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
-      | 100.0         | 2.09     | 0.0  | 0.0       | 102.09 | 27.01 | 0.0     
   | 0.0  | 75.08       |
+      | 100.0         | 2.14     | 0.0  | 0.0       | 102.14 | 27.01 | 0.0     
   | 0.0  | 75.13       |
     Then Loan Transactions tab has the following data:
       | Transaction date | Transaction Type | Amount | Principal | Interest | 
Fees | Penalties | Loan Balance | Reverted | Replayed |
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 17.01  | 16.43     | 0.58     | 
0.0  | 0.0       | 83.57        | false    | false    |
-      | 01 March 2024    | Repayment        | 10.0   | 9.51      | 0.49     | 
0.0  | 0.0       | 74.06        | false    | false    |
-      | 15 March 2024    | Re-amortize      | 7.01   | 6.52      | 0.49     | 
0.0  | 0.0       | 0.0          | false    | false    |
+      | 01 March 2024    | Repayment        | 10.0   | 10.0      | 0.0      | 
0.0  | 0.0       | 73.57        | false    | false    |
+      | 15 March 2024    | Re-amortize      | 7.01   | 6.52      | 0.49     | 
0.0  | 0.0       | 0.0          | false    | true     |
 
     When Loan Pay-off is made on "15 March 2024"
     Then Loan is closed with zero outstanding balance and it's all 
installments have obligations met
@@ -1817,7 +1815,7 @@ Feature: LoanReAmortization
     When Admin sets the business date to "01 February 2024"
     And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 
EUR transaction amount
     When Admin sets the business date to "15 March 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -1838,7 +1836,7 @@ Feature: LoanReAmortization
     When Admin sets the business date to "01 April 2024"
     And Customer makes "AUTOPAY" repayment on "01 April 2024" with 21.32 EUR 
transaction amount
     When Admin sets the business date to "15 May 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -1890,7 +1888,7 @@ Feature: LoanReAmortization
       | Principal due | Interest | Fees | Penalties | Due    | Paid  | In 
advance | Late | Outstanding |
       | 100.0         | 2.08     | 5.0  | 10.0      | 117.08 | 17.01 | 0.0     
   | 0.0  | 100.07      |
     When Admin sets the business date to "15 March 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
@@ -1934,7 +1932,7 @@ Feature: LoanReAmortization
       | Principal due | Interest | Fees | Penalties | Due    | Paid | In 
advance | Late | Outstanding |
       | 100.0         | 2.05     | 0.0  | 0.0       | 102.05 | 0.0  | 0.0      
  | 0.0  | 102.05      |
     When Admin sets the business date to "15 April 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date       | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                 | 100.0           |     
          |          | 0.0  |           | 0.0   | 0.0  |            |      |    
         |
@@ -1984,7 +1982,7 @@ Feature: LoanReAmortization
       | 01 January 2024  | Disbursement     | 100.0  | 0.0       | 0.0      | 
0.0  | 0.0       | 100.0        | false    | false    |
       | 01 February 2024 | Repayment        | 30.0   | 29.42     | 0.58     | 
0.0  | 0.0       | 70.58        | false    | false    |
     When Admin sets the business date to "15 March 2024"
-    When When Admin creates a Loan re-amortization transaction on current 
business date
+    When Admin creates a Loan re-amortization transaction on current business 
date
     Then Loan Repayment schedule has 6 periods, with the following data for 
periods:
       | Nr | Days | Date             | Paid date        | Balance of loan | 
Principal due | Interest | Fees | Penalties | Due   | Paid  | In advance | Late 
| Outstanding |
       |    |      | 01 January 2024  |                  | 100.0           |    
           |          | 0.0  |           | 0.0   | 0.0   |            |      |  
           |
diff --git 
a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
 
b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
index 1490462f78..168ab04ab3 100644
--- 
a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
+++ 
b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
@@ -323,6 +323,9 @@ public class LoanTransaction extends 
AbstractAuditableWithUTCDateTimeCustom<Long
         if (LoanTransactionType.REAGE.equals(loanTransaction.getTypeOf())) {
             
newTransaction.setLoanReAgeParameter(loanTransaction.getLoanReAgeParameter().getCopy(newTransaction));
         }
+        if 
(LoanTransactionType.REAMORTIZE.equals(loanTransaction.getTypeOf())) {
+            
newTransaction.setLoanReAmortizationParameter(loanTransaction.getLoanReAmortizationParameter().getCopy(newTransaction));
+        }
         newTransaction.setClassification(loanTransaction.getClassification());
         return newTransaction;
     }
diff --git 
a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/reamortization/LoanReAmortizationParameter.java
 
b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/reamortization/LoanReAmortizationParameter.java
index bac04341aa..e353b195eb 100644
--- 
a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/reamortization/LoanReAmortizationParameter.java
+++ 
b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/reamortization/LoanReAmortizationParameter.java
@@ -52,4 +52,8 @@ public class LoanReAmortizationParameter extends 
AbstractAuditableWithUTCDateTim
 
     // for JPA, don't use
     protected LoanReAmortizationParameter() {}
+
+    public LoanReAmortizationParameter getCopy(LoanTransaction 
loanTransaction) {
+        return new LoanReAmortizationParameter(loanTransaction, 
interestHandlingType, reamortizationReason);
+    }
 }
diff --git 
a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java
 
b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java
index 9dd24b79da..be883e45eb 100644
--- 
a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java
+++ 
b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java
@@ -643,6 +643,11 @@ public class AdvancedPaymentScheduleTransactionProcessor 
extends AbstractLoanRep
             loanTransaction.updateComponentsAndTotal(totalOverDuePrincipal, 
totalOverDueInterest, Money.zero(currency),
                     Money.zero(currency));
 
+            if (totalOverDuePrincipal.isZero() && 
totalOverDueInterest.isZero() && loanTransaction.isNotReversed()) {
+                loanTransaction.reverse();
+                return;
+            }
+
             
emiCalculator.updateModelRepaymentPeriodsDuringReAmortizationWithEqualInterestSplit(progressiveTransactionCtx.getModel(),
                     transactionDate);
             updateInstallmentsByRepaymentPeriods(loanTransaction, 
progressiveTransactionCtx);
@@ -720,6 +725,11 @@ public class AdvancedPaymentScheduleTransactionProcessor 
extends AbstractLoanRep
                 Money.zero(transactionCtx.getCurrency()), 
Money.zero(transactionCtx.getCurrency()),
                 Money.zero(transactionCtx.getCurrency()));
 
+        if (MathUtil.isEqualTo(overallOverDuePrincipal, ZERO) && 
loanTransaction.isNotReversed()) {
+            loanTransaction.reverse();
+            return;
+        }
+
         LoanRepaymentScheduleInstallment lastFutureInstallment = 
futureInstallments.stream()
                 
.max(Comparator.comparing(LoanRepaymentScheduleInstallment::getDueDate)).get();
         BigDecimal reAmortizationAmountPerInstallment = 
overallOverDuePrincipal.divide(BigDecimal.valueOf(futureInstallments.size()),
@@ -762,6 +772,11 @@ public class AdvancedPaymentScheduleTransactionProcessor 
extends AbstractLoanRep
         loanTransaction.resetDerivedComponents();
         loanTransaction.updateComponentsAndTotal(totalOverDuePrincipal, 
totalOverDueInterest, Money.zero(currency), Money.zero(currency));
 
+        if (totalOverDuePrincipal.isZero() && totalOverDueInterest.isZero() && 
loanTransaction.isNotReversed()) {
+            loanTransaction.reverse();
+            return;
+        }
+
         // Update the existing model with re-amortized periods
         
emiCalculator.updateModelRepaymentPeriodsDuringReAmortization(ctx.getModel(), 
transactionDate);
         updateInstallmentsByRepaymentPeriods(loanTransaction, ctx);

Reply via email to