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
The following commit(s) were added to refs/heads/develop by this push:
new e95b3ff25 FINERACT-2070: E2E test synchronization 2024-11-22
e95b3ff25 is described below
commit e95b3ff25c38eecde83c3048781ae3b484742a9c
Author: Peter Kovacs <[email protected]>
AuthorDate: Fri Nov 22 12:45:54 2024 +0100
FINERACT-2070: E2E test synchronization 2024-11-22
---
.../test/data/loanproduct/DefaultLoanProduct.java | 1 +
.../global/LoanProductGlobalInitializerStep.java | 33 +
.../test/messaging/event/EventCheckHelper.java | 28 +
.../test/stepdef/loan/LoanRepaymentStepDef.java | 64 +-
.../fineract/test/stepdef/loan/LoanStepDef.java | 31 +-
.../fineract/test/support/TestContextKey.java | 1 +
.../src/test/resources/features/0_COB.feature | 3 +-
.../test/resources/features/EMICalculation.feature | 729 ++++++++++++++++++++-
.../src/test/resources/features/Loan.feature | 6 +-
.../test/resources/features/LoanRepayment.feature | 83 ++-
10 files changed, 923 insertions(+), 56 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 4408de249..78223141a 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
@@ -52,6 +52,7 @@ public enum DefaultLoanProduct implements LoanProduct {
LP2_DOWNPAYMENT_ADV_PMT_ALLOC_FIXED_LENGTH, //
LP2_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION_REPAYMENT_START_SUBMITTED, //
LP2_DOWNPAYMENT_INTEREST_FLAT_ADV_PMT_ALLOC, //
+
LP2_ADV_PYMNT_INTEREST_RECALCULATION_DAILY_EMI_360_30_MULTIDISBURSE_DOWNPAYMENT,
//
LP2_ADV_PYMNT_INTEREST_DAILY_EMI_ACTUAL_ACTUAL, //
LP2_ADV_PYMNT_INTEREST_DAILY_EMI_ACTUAL_ACTUAL_ACCRUAL_ACTIVITY, //
LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30, //
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 f00eadd66..dea144118 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
@@ -1012,6 +1012,39 @@ public class LoanProductGlobalInitializerStep implements
FineractGlobalInitializ
TestContext.INSTANCE.set(
TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INTEREST_DAILY_EMI_ACTUAL_ACTUAL_INTEREST_REFUND_INTEREST_RECALCULATION,
responseLoanProductsRequestLP2AdvancedpaymentInterestEmiActualActualInterestRefundInterestRecalculation);
+
+ // LP2 with progressive loan schedule + horizontal + interest EMI +
360/30 + multidisbursement + downpayment +
+ // interest recalculation
+ // 25%, auto disabled
+ //
(LP2_ADV_PYMNT_INTEREST_RECALCULATION_DAILY_EMI_360_30_MULTIDISBURSE_DOWNPAYMENT)
+ String name49 =
DefaultLoanProduct.LP2_ADV_PYMNT_INTEREST_RECALCULATION_DAILY_EMI_360_30_MULTIDISBURSE_DOWNPAYMENT.getName();
+ PostLoanProductsRequest
loanProductsRequestLP2AdvancedpaymentInterestRecalculationEmi36030MultiDisburseDownPayment
= loanProductsRequestFactory
+ .defaultLoanProductsRequestLP2Emi()//
+ .name(name49)//
+ .enableDownPayment(true)//
+ .disbursedAmountPercentageForDownPayment(new BigDecimal(25))//
+ .daysInYearType(DaysInYearType.DAYS360.value)//
+ .daysInMonthType(DaysInMonthType.DAYS30.value)//
+ .isInterestRecalculationEnabled(true)//
+ .preClosureInterestCalculationStrategy(1)//
+ .rescheduleStrategyMethod(4)//
+ .interestRecalculationCompoundingMethod(0)//
+ .recalculationRestFrequencyType(2)//
+ .recalculationRestFrequencyInterval(1)//
+ .paymentAllocation(List.of(//
+ createPaymentAllocation("DEFAULT",
"NEXT_INSTALLMENT"), //
+ createPaymentAllocation("GOODWILL_CREDIT",
"LAST_INSTALLMENT"), //
+ createPaymentAllocation("MERCHANT_ISSUED_REFUND",
"REAMORTIZATION"), //
+ createPaymentAllocation("PAYOUT_REFUND",
"NEXT_INSTALLMENT")))//
+ .multiDisburseLoan(true)//
+ .disallowExpectedDisbursements(true)//
+ .maxTrancheCount(10)//
+ .outstandingLoanBalance(10000.0);//
+ Response<PostLoanProductsResponse>
responseLoanProductsRequestLP2AdvancedpaymentInterestRecalculation36030MultiDisburseDownPayment
= loanProductsApi
+
.createLoanProduct(loanProductsRequestLP2AdvancedpaymentInterestRecalculationEmi36030MultiDisburseDownPayment).execute();
+ TestContext.INSTANCE.set(
+
TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INTEREST_RECALCULATION_DAILY_EMI_360_30_MULTIDISBURSE_DOWNPAYMENT,
+
responseLoanProductsRequestLP2AdvancedpaymentInterestRecalculation36030MultiDisburseDownPayment);
}
public static AdvancedPaymentData createPaymentAllocation(String
transactionType, String futureInstallmentAllocationRule,
diff --git
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/EventCheckHelper.java
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/EventCheckHelper.java
index 01813d00f..6be5bd642 100644
---
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/EventCheckHelper.java
+++
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/messaging/event/EventCheckHelper.java
@@ -18,6 +18,7 @@
*/
package org.apache.fineract.test.messaging.event;
+import static
org.apache.fineract.test.stepdef.loan.LoanRepaymentStepDef.DATE_FORMAT;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
@@ -33,6 +34,7 @@ import org.apache.fineract.avro.loan.v1.LoanAccountDataV1;
import org.apache.fineract.avro.loan.v1.LoanAmountDataV1;
import org.apache.fineract.avro.loan.v1.LoanInstallmentDelinquencyBucketDataV1;
import org.apache.fineract.avro.loan.v1.LoanOwnershipTransferDataV1;
+import org.apache.fineract.avro.loan.v1.LoanTransactionAdjustmentDataV1;
import org.apache.fineract.avro.loan.v1.LoanTransactionDataV1;
import org.apache.fineract.client.models.ExternalTransferData;
import org.apache.fineract.client.models.GetClientsClientIdResponse;
@@ -67,6 +69,7 @@ import
org.apache.fineract.test.messaging.event.loan.LoanUndoApprovalEvent;
import
org.apache.fineract.test.messaging.event.loan.delinquency.LoanDelinquencyPauseChangedEvent;
import
org.apache.fineract.test.messaging.event.loan.delinquency.LoanDelinquencyRangeChangeEvent;
import
org.apache.fineract.test.messaging.event.loan.transaction.AbstractLoanTransactionEvent;
+import
org.apache.fineract.test.messaging.event.loan.transaction.LoanAdjustTransactionBusinessEvent;
import
org.apache.fineract.test.messaging.event.loan.transaction.LoanDisbursalTransactionEvent;
import
org.apache.fineract.test.messaging.event.loan.transaction.LoanRefundPostBusinessEvent;
import
org.apache.fineract.test.messaging.event.loan.transaction.LoanTransactionGoodwillCreditPostEvent;
@@ -236,6 +239,31 @@ public class EventCheckHelper {
});
}
+ public GetLoansLoanIdTransactions getNthTransactionType(String nthItemStr,
String transactionType, String transactionDate,
+ List<GetLoansLoanIdTransactions> transactions) {
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMAT);
+ int nthItem = Integer.parseInt(nthItemStr) - 1;
+ GetLoansLoanIdTransactions targetTransaction = transactions//
+ .stream()//
+ .filter(t ->
transactionDate.equals(formatter.format(t.getDate())) &&
transactionType.equals(t.getType().getValue()))//
+ .toList()//
+ .get(nthItem);//
+ return targetTransaction;
+ }
+
+ public void
checkTransactionWithLoanTransactionAdjustmentBizEvent(GetLoansLoanIdTransactions
transaction) {
+ EventAssertion.EventAssertionBuilder<LoanTransactionAdjustmentDataV1>
eventAssertionBuilder = eventAssertion
+ .assertEvent(LoanAdjustTransactionBusinessEvent.class,
transaction.getId());
+ eventAssertionBuilder
+ .extractingData(loanTransactionAdjustmentDataV1 ->
loanTransactionAdjustmentDataV1.getTransactionToAdjust().getId())
+ .isEqualTo(transaction.getId());
+ eventAssertionBuilder
+ .extractingData(
+ loanTransactionAdjustmentDataV1 ->
loanTransactionAdjustmentDataV1.getTransactionToAdjust().getManuallyReversed())
+ .isEqualTo(Boolean.TRUE);
+
eventAssertionBuilder.extractingData(LoanTransactionAdjustmentDataV1::getNewTransactionDetail).isEqualTo(null);
+ }
+
private boolean areBigDecimalValuesEqual(BigDecimal actual, BigDecimal
expected) {
log.debug("--- Checking BigDecimal values.... ---");
log.debug("Actual: {}", actual);
diff --git
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanRepaymentStepDef.java
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanRepaymentStepDef.java
index b8aea7c88..7e53d85d3 100644
---
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanRepaymentStepDef.java
+++
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanRepaymentStepDef.java
@@ -390,16 +390,7 @@ public class LoanRepaymentStepDef extends AbstractStepDef {
.adjustLoanTransaction(loanId, targetTransaction.getId(),
repaymentUndoRequest, "").execute();
ErrorHelper.checkSuccessfulApiCall(repaymentUndoResponse);
testContext().set(TestContextKey.LOAN_REPAYMENT_UNDO_RESPONSE,
repaymentUndoResponse);
- EventAssertion.EventAssertionBuilder<LoanTransactionAdjustmentDataV1>
eventAssertionBuilder = eventAssertion
- .assertEvent(LoanAdjustTransactionBusinessEvent.class,
targetTransaction.getId());
- eventAssertionBuilder
- .extractingData(loanTransactionAdjustmentDataV1 ->
loanTransactionAdjustmentDataV1.getTransactionToAdjust().getId())
- .isEqualTo(targetTransaction.getId());
- eventAssertionBuilder
- .extractingData(
- loanTransactionAdjustmentDataV1 ->
loanTransactionAdjustmentDataV1.getTransactionToAdjust().getManuallyReversed())
- .isEqualTo(Boolean.TRUE);
-
eventAssertionBuilder.extractingData(LoanTransactionAdjustmentDataV1::getNewTransactionDetail).isEqualTo(null);
+
eventCheckHelper.checkTransactionWithLoanTransactionAdjustmentBizEvent(targetTransaction);
eventCheckHelper.loanBalanceChangedEventCheck(loanId);
}
@@ -423,16 +414,8 @@ public class LoanRepaymentStepDef extends AbstractStepDef {
.adjustLoanTransaction(loanId, targetTransaction.getId(),
transactionUndoRequest, "").execute();
ErrorHelper.checkSuccessfulApiCall(transactionUndoResponse);
testContext().set(TestContextKey.LOAN_TRANSACTION_UNDO_RESPONSE,
transactionUndoResponse);
- EventAssertion.EventAssertionBuilder<LoanTransactionAdjustmentDataV1>
eventAssertionBuilder = eventAssertion
- .assertEvent(LoanAdjustTransactionBusinessEvent.class,
targetTransaction.getId());
- eventAssertionBuilder
- .extractingData(loanTransactionAdjustmentDataV1 ->
loanTransactionAdjustmentDataV1.getTransactionToAdjust().getId())
- .isEqualTo(targetTransaction.getId());
- eventAssertionBuilder
- .extractingData(
- loanTransactionAdjustmentDataV1 ->
loanTransactionAdjustmentDataV1.getTransactionToAdjust().getManuallyReversed())
- .isEqualTo(Boolean.TRUE);
-
eventAssertionBuilder.extractingData(LoanTransactionAdjustmentDataV1::getNewTransactionDetail).isEqualTo(null);
+
+
eventCheckHelper.checkTransactionWithLoanTransactionAdjustmentBizEvent(targetTransaction);
eventCheckHelper.loanBalanceChangedEventCheck(loanId);
}
@@ -459,16 +442,36 @@ public class LoanRepaymentStepDef extends AbstractStepDef
{
.adjustLoanTransaction(loanId, targetTransaction.getId(),
transactionUndoRequest, "").execute();
ErrorHelper.checkSuccessfulApiCall(transactionUndoResponse);
testContext().set(TestContextKey.LOAN_TRANSACTION_UNDO_RESPONSE,
transactionUndoResponse);
- EventAssertion.EventAssertionBuilder<LoanTransactionAdjustmentDataV1>
eventAssertionBuilder = eventAssertion
- .assertEvent(LoanAdjustTransactionBusinessEvent.class,
targetTransaction.getId());
- eventAssertionBuilder
- .extractingData(loanTransactionAdjustmentDataV1 ->
loanTransactionAdjustmentDataV1.getTransactionToAdjust().getId())
- .isEqualTo(targetTransaction.getId());
- eventAssertionBuilder
- .extractingData(
- loanTransactionAdjustmentDataV1 ->
loanTransactionAdjustmentDataV1.getTransactionToAdjust().getManuallyReversed())
- .isEqualTo(Boolean.TRUE);
-
eventAssertionBuilder.extractingData(LoanTransactionAdjustmentDataV1::getNewTransactionDetail).isEqualTo(null);
+
eventCheckHelper.checkTransactionWithLoanTransactionAdjustmentBizEvent(targetTransaction);
+ eventCheckHelper.loanBalanceChangedEventCheck(loanId);
+ }
+
+ @When("Customer undo {string}th {string} transaction made on {string} with
linked {string} transaction")
+ public void checkNthTransactionType(String nthItemStr, String
transactionType, String transactionDate, String linkedTransactionType)
+ throws IOException {
+ eventStore.reset();
+ Response<PostLoansResponse> loanResponse =
testContext().get(TestContextKey.LOAN_CREATE_RESPONSE);
+ long loanId = loanResponse.body().getLoanId();
+ List<GetLoansLoanIdTransactions> transactions =
loansApi.retrieveLoan(loanId, false, "transactions", "", "").execute().body()
+ .getTransactions();
+
+ // check that here are 2 transactions - target and linked
+ assertThat(transactions.size()).isGreaterThanOrEqualTo(2);
+
+ GetLoansLoanIdTransactions targetTransaction =
eventCheckHelper.getNthTransactionType(nthItemStr, transactionType,
transactionDate,
+ transactions);
+ PostLoansLoanIdTransactionsTransactionIdRequest transactionUndoRequest
= LoanRequestFactory.defaultTransactionUndoRequest()
+ .transactionDate(transactionDate);
+ Response<PostLoansLoanIdTransactionsResponse> transactionUndoResponse
= loanTransactionsApi
+ .adjustLoanTransaction(loanId, targetTransaction.getId(),
transactionUndoRequest, "").execute();
+ ErrorHelper.checkSuccessfulApiCall(transactionUndoResponse);
+ testContext().set(TestContextKey.LOAN_TRANSACTION_UNDO_RESPONSE,
transactionUndoResponse);
+
eventCheckHelper.checkTransactionWithLoanTransactionAdjustmentBizEvent(targetTransaction);
+
+ // linked transaction
+ GetLoansLoanIdTransactions linkedTargetTransaction =
eventCheckHelper.getNthTransactionType(nthItemStr, linkedTransactionType,
+ transactionDate, transactions);
+
eventCheckHelper.checkTransactionWithLoanTransactionAdjustmentBizEvent(linkedTargetTransaction);
eventCheckHelper.loanBalanceChangedEventCheck(loanId);
}
@@ -482,7 +485,6 @@ public class LoanRepaymentStepDef extends AbstractStepDef {
ErrorHelper.checkSuccessfulApiCall(transactionResponse);
assertThat(transactionResponse.body().getAmount()).isEqualTo(repaymentAmount);
assertThat(transactionResponse.body().getPaymentDetailData().getPaymentType().getName()).isEqualTo(paymentType);
-
}
@Then("Repayment failed because the repayment date is after the business
date")
diff --git
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanStepDef.java
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanStepDef.java
index 6481dfb0a..64fc54e3b 100644
---
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanStepDef.java
+++
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/LoanStepDef.java
@@ -408,7 +408,7 @@ public class LoanStepDef extends AbstractStepDef {
}
@When("Admin creates a fully customized loan with
interestRateFrequencyType and following data:")
- public void createFullyCustomizedLoanWithinterestRateFrequencyType(final
DataTable table) throws IOException {
+ public void createFullyCustomizedLoanWithInterestRateFrequencyType(final
DataTable table) throws IOException {
final List<List<String>> data = table.asLists();
createFullyCustomizedLoanWithInterestRateFrequency(data.get(1));
}
@@ -2725,15 +2725,26 @@ public class LoanStepDef extends AbstractStepDef {
InterestRateFrequencyType interestRateFrequencyType =
InterestRateFrequencyType.valueOf(interestRateFrequencyTypeStr);
Integer interestRateFrequencyTypeValue =
interestRateFrequencyType.value;
- final PostLoansRequest loansRequest =
loanRequestFactory.defaultLoansRequest(clientId).productId(loanProductId)
- .principal(new
BigDecimal(principal)).interestRatePerPeriod(interestRate).interestType(interestTypeValue)
-
.interestCalculationPeriodType(interestCalculationPeriodValue).amortizationType(amortizationTypeValue)
-
.loanTermFrequency(loanTermFrequency).loanTermFrequencyType(loanTermFrequencyTypeValue)
-
.numberOfRepayments(numberOfRepayments).repaymentEvery(repaymentFrequency)
-
.repaymentFrequencyType(repaymentFrequencyTypeValue).submittedOnDate(submitDate).expectedDisbursementDate(submitDate)
-
.graceOnPrincipalPayment(graceOnPrincipalPayment).graceOnInterestPayment(graceOnInterestPayment)
-
.graceOnInterestPayment(graceOnInterestCharged).transactionProcessingStrategyCode(transactionProcessingStrategyCodeValue)
- .interestRateFrequencyType(interestRateFrequencyTypeValue);
+ final PostLoansRequest loansRequest = loanRequestFactory//
+ .defaultLoansRequest(clientId)//
+ .productId(loanProductId)//
+ .principal(new BigDecimal(principal))//
+ .interestRatePerPeriod(interestRate)//
+ .interestType(interestTypeValue)//
+
.interestCalculationPeriodType(interestCalculationPeriodValue)//
+ .amortizationType(amortizationTypeValue)//
+ .loanTermFrequency(loanTermFrequency)//
+ .loanTermFrequencyType(loanTermFrequencyTypeValue)//
+ .numberOfRepayments(numberOfRepayments)//
+ .repaymentEvery(repaymentFrequency)//
+ .repaymentFrequencyType(repaymentFrequencyTypeValue)//
+ .submittedOnDate(submitDate)//
+ .expectedDisbursementDate(submitDate)//
+ .graceOnPrincipalPayment(graceOnPrincipalPayment)//
+ .graceOnInterestPayment(graceOnInterestPayment)//
+ .graceOnInterestPayment(graceOnInterestCharged)//
+
.transactionProcessingStrategyCode(transactionProcessingStrategyCodeValue)//
+ .interestRateFrequencyType(interestRateFrequencyTypeValue);//
final Response<PostLoansResponse> response =
loansApi.calculateLoanScheduleOrSubmitLoanApplication(loansRequest,
"").execute();
testContext().set(TestContextKey.LOAN_CREATE_RESPONSE, response);
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 3397a2e97..553b6cf0b 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
@@ -85,6 +85,7 @@ public abstract class TestContextKey {
public static final String
DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_DOWNPAYMENT_ADV_PMT_ALLOC_PROG_SCHEDULE_HOR_INST_LVL_DELINQUENCY_CREDIT_ALLOCATION
=
"loanProductCreateResponseLP2DownPaymentProgressiveLoanScheduleHorizontalInstallmentLevelDelinquencyCreditAllocation";
public static final String
DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_DOWNPAYMENT_ADV_PMT_ALLOC_FIXED_LENGTH
= "loanProductCreateResponseLP2DownPaymentProgressiveLoanScheduleFixedLength";
public static final String
DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_DOWNPAYMENT_INTEREST_FLAT_ADV_PMT_ALLOC
=
"loanProductCreateResponseLP2DownPaymentInterestFlatAdvancedPaymentAllocation";
+ public static final String
DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INTEREST_RECALCULATION_DAILY_EMI_360_30_MULTIDISBURSE_DOWNPAYMENT
=
"loanProductCreateResponseLP2AdvancedPaymentInterestRecalculationDailyEmi36030MultiDisburseDownPayment";
public static final String
DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INTEREST_DAILY_EMI_ACTUAL_ACTUAL
= "loanProductCreateResponseLP2AdvancedPaymentInterestDailyEmiActualActual";
public static final String
DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INTEREST_DAILY_EMI_ACTUAL_ACTUAL_ACCRUAL_ACTIVITY
=
"loanProductCreateResponseLP2AdvancedPaymentInterestDailyEmiActualActualAccrualActivity";
public static final String
DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30 =
"loanProductCreateResponseLP2AdvancedPaymentInterestDailyEmi36030";
diff --git
a/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
b/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
index b1683c0d3..e67b36b27 100644
--- a/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
+++ b/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
@@ -1,7 +1,8 @@
@COBFeature
Feature: COBFeature
- @TestRailId:C2501
+# TODO Unskip and check when PS-2200 is done
+ @Skip @TestRailId:C2501
Scenario: As an admin I would like to see that last closed business date got
updated after COB catch up job finished
When Admin sets the business date to "01 January 2022"
When Admin creates a client with random data
diff --git
a/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
b/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
index d3b738755..b406dd041 100644
---
a/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
+++
b/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
@@ -1459,8 +1459,7 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 15 February 2024 | Repayment | 101.11 | 100.0 | 1.11 |
0.0 | 0.0 | 0.0 | false | false |
Then Loan's all installments have obligations met
-# TODO unskip and check when PS-2037 is done
- @Skip @TestRailId:C3215
+ @TestRailId:C3215
Scenario: Verify the Loan reschedule - Interest modification - UC1: Interest
modification on 1st installment due date (installment paid), effective from
next day
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
@@ -1524,8 +1523,7 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 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 |
- # TODO unskip and check when PS-2037 is done
- @Skip @TestRailId:C3216
+ @TestRailId:C3216
Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest
modification between 1st and 2nd installment due date (1st installment paid)
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
@@ -1577,11 +1575,11 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 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.04 |
16.53 | 0.37 | 0.0 | 0.0 | 16.90 | 0.0 | 0.0 | 0.0
| 16.90 |
- | 3 | 31 | 01 April 2024 | | 50.36 |
16.68 | 0.22 | 0.0 | 0.0 | 16.90 | 0.0 | 0.0 | 0.0
| 16.90 |
- | 4 | 30 | 01 May 2024 | | 33.63 |
16.73 | 0.17 | 0.0 | 0.0 | 16.90 | 0.0 | 0.0 | 0.0
| 16.90 |
- | 5 | 31 | 01 June 2024 | | 16.84 |
16.79 | 0.11 | 0.0 | 0.0 | 16.90 | 0.0 | 0.0 | 0.0
| 16.90 |
- | 6 | 30 | 01 July 2024 | | 0.0 |
16.84 | 0.06 | 0.0 | 0.0 | 16.90 | 0.0 | 0.0 | 0.0
| 16.90 |
+ | 2 | 29 | 01 March 2024 | | 67.04 |
16.53 | 0.37 | 0.0 | 0.0 | 16.9 | 0.0 | 0.0 | 0.0
| 16.9 |
+ | 3 | 31 | 01 April 2024 | | 50.36 |
16.68 | 0.22 | 0.0 | 0.0 | 16.9 | 0.0 | 0.0 | 0.0
| 16.9 |
+ | 4 | 30 | 01 May 2024 | | 33.63 |
16.73 | 0.17 | 0.0 | 0.0 | 16.9 | 0.0 | 0.0 | 0.0
| 16.9 |
+ | 5 | 31 | 01 June 2024 | | 16.84 |
16.79 | 0.11 | 0.0 | 0.0 | 16.9 | 0.0 | 0.0 | 0.0
| 16.9 |
+ | 6 | 30 | 01 July 2024 | | 0.0 |
16.84 | 0.06 | 0.0 | 0.0 | 16.9 | 0.0 | 0.0 | 0.0
| 16.9 |
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.51 | 0.0 | 0.0 | 101.51 | 17.01 | 0.0
| 0.0 | 84.5 |
@@ -4454,3 +4452,716 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 31 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
| 01 February 2024 | Repayment | 33.91 | 33.33 | 0.58 |
0.0 | 0.0 | 66.67 | false | false |
| 01 February 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+
+ @TestRailId:C3289
+ Scenario: Verify Interest recalculation - EARLY repayment, adjust LAST
installment - UC1: 360/30, early repayment with amount less then emi amount
+ When Admin sets the business date to "01 January 2024"
+ When Admin creates a client with random data
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "LAST_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_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE
| 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 runs inline COB job for Loan
+ 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 | | 83.57 | 16.43
| 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 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 | 2.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0
| 0.0 | 102.05 |
+ 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 |
+# --- Early repayment with 15 EUR on 15 Jan ---
+ When Admin sets the business date to "15 January 2024"
+ And Customer makes "AUTOPAY" repayment on "15 January 2024" with 15 EUR
transaction amount
+ When Admin runs inline COB job for Loan
+ 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 | | 83.52 | 16.48
| 0.53 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 2 | 29 | 01 March 2024 | | 66.91 | 16.61
| 0.4 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 3 | 31 | 01 April 2024 | | 50.2 | 16.71
| 0.3 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 4 | 30 | 01 May 2024 | | 33.4 | 16.8
| 0.21 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 5 | 31 | 01 June 2024 | | 16.5 | 16.9
| 0.11 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 6 | 30 | 01 July 2024 | | 0.0 | 16.5
| 0.01 | 0.0 | 0.0 | 16.51 | 15.0 | 15.0 | 0.0 | 1.51
|
+ 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.56 | 0.0 | 0.0 | 101.56 | 15 | 15
| 0.0 | 86.56 |
+ 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 |
+ | 02 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 03 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 04 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 05 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 06 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 07 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 08 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 09 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 10 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 11 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 12 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 13 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 14 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 15 January 2024 | Repayment | 15.0 | 15.0 | 0.0 |
0.0 | 0.0 | 85.0 | false | false |
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
+
+ @TestRailId:C3290
+ Scenario: Verify Interest recalculation - EARLY repayment, adjust LAST
installment - UC2: 360/30, early repayment emi amount paid
+ When Admin sets the business date to "01 January 2024"
+ When Admin creates a client with random data
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "LAST_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_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE
| 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 runs inline COB job for Loan
+ 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 | | 83.57 | 16.43
| 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 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 | 2.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0
| 0.0 | 102.05 |
+ 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 |
+# --- Early repayment with 17.01 EUR on 15 Jan ---
+ When Admin sets the business date to "15 January 2024"
+ And Customer makes "AUTOPAY" repayment on "15 January 2024" with 17.01 EUR
transaction amount
+ When Admin runs inline COB job for Loan
+ 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 | | 83.52 |
16.48 | 0.53 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 2 | 29 | 01 March 2024 | | 66.9 |
16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 3 | 31 | 01 April 2024 | | 50.18 |
16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 4 | 30 | 01 May 2024 | | 33.36 |
16.82 | 0.19 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 5 | 31 | 01 June 2024 | | 17.01 |
16.35 | 0.1 | 0.0 | 0.0 | 16.45 | 0.0 | 0.0 | 0.0
| 16.45 |
+ | 6 | 30 | 01 July 2024 | 15 January 2024 | 0.0 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01| 17.01 | 0.0
| 0.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.5 | 0.0 | 0.0 | 101.5 | 17.01| 17.01
| 0.0 | 84.49 |
+ 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 |
+ | 02 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 03 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 04 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 05 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 06 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 07 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 08 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 09 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 10 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 11 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 12 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 13 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 14 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 15 January 2024 | Repayment | 17.01 | 17.01 | 0.0 |
0.0 | 0.0 | 82.99 | false | false |
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
+
+ @TestRailId:C3291
+ Scenario: Verify Interest recalculation - EARLY repayment, adjust LAST
installment - UC3: 360/30, early repayment with excess emi amount paid
+ When Admin sets the business date to "01 January 2024"
+ When Admin creates a client with random data
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "LAST_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_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE
| 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 runs inline COB job for Loan
+ 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 | | 83.57 | 16.43
| 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 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 | 2.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0
| 0.0 | 102.05 |
+ 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 |
+# --- Early repayment with 34.02 EUR on 15 Jan ---
+ When Admin sets the business date to "15 January 2024"
+ And Customer makes "AUTOPAY" repayment on "15 January 2024" with 34.02 EUR
transaction amount
+ When Admin runs inline COB job for Loan
+ 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 | | 83.46 |
16.54 | 0.47 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 2 | 29 | 01 March 2024 | | 66.74 |
16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 3 | 31 | 01 April 2024 | | 49.92 |
16.82 | 0.19 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 4 | 30 | 01 May 2024 | | 34.02 |
15.9 | 0.09 | 0.0 | 0.0 | 15.99 | 0.0 | 0.0 | 0.0
| 15.99 |
+ | 5 | 31 | 01 June 2024 | 15 January 2024 | 17.01 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01| 17.01 | 0.0
| 0.0 |
+ | 6 | 30 | 01 July 2024 | 15 January 2024 | 0.0 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01| 17.01 | 0.0
| 0.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.04 | 0.0 | 0.0 | 101.04 | 34.02| 34.02
| 0.0 | 67.02 |
+ 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 |
+ | 02 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 03 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 04 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 05 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 06 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 07 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 08 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 09 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 10 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 11 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 12 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 13 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 14 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 15 January 2024 | Repayment | 34.02 | 34.02 | 0.0 |
0.0 | 0.0 | 65.98 | false | false |
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
+
+ @TestRailId:C3292
+ Scenario: Verify Interest recalculation - EARLY repayment, adjust LAST
installment - UC4: 360/30, pre-closure after early payment
+ When Admin sets the business date to "01 January 2024"
+ When Admin creates a client with random data
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "LAST_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_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE
| 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 runs inline COB job for Loan
+ 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 | | 83.57 | 16.43
| 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 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 | 2.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0
| 0.0 | 102.05 |
+ 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 |
+# --- Early repayment with 17.01 EUR on 15 Jan ---
+ When Admin sets the business date to "15 January 2024"
+ And Customer makes "AUTOPAY" repayment on "15 January 2024" with 17.01 EUR
transaction amount
+ When Admin runs inline COB job for Loan
+# --- schedule allocation before pre-closure ---
+ 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 | | 83.52 |
16.48 | 0.53 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 2 | 29 | 01 March 2024 | | 66.9 |
16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 3 | 31 | 01 April 2024 | | 50.18 |
16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 4 | 30 | 01 May 2024 | | 33.36 |
16.82 | 0.19 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 5 | 31 | 01 June 2024 | | 17.01 |
16.35 | 0.1 | 0.0 | 0.0 | 16.45 | 0.0 | 0.0 | 0.0
| 16.45 |
+ | 6 | 30 | 01 July 2024 | 15 January 2024 | 0.0 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01| 17.01 | 0.0
| 0.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.5 | 0.0 | 0.0 | 101.5 | 17.01| 17.01
| 0.0 | 84.49 |
+ 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 |
+ | 02 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 03 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 04 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 05 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 06 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 07 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 08 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 09 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 10 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 11 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 12 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 13 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 14 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 15 January 2024 | Repayment | 17.01 | 17.01 | 0.0 |
0.0 | 0.0 | 82.99 | false | false |
+# --- Early repayment with 83.07 EUR on 20 Jan ---
+ When Admin sets the business date to "20 January 2024"
+ And Customer makes "AUTOPAY" repayment on "20 January 2024" with 83.33 EUR
transaction amount
+ When Admin runs inline COB job for Loan
+# --- schedule allocation after pre-closure ---
+ 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 | 20 January 2024 | 85.05 |
14.95 | 0.34 | 0.0 | 0.0 | 15.29 | 15.29| 15.29 | 0.0
| 0.0 |
+ | 2 | 29 | 01 March 2024 | 20 January 2024 | 68.04 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01| 17.01 | 0.0
| 0.0 |
+ | 3 | 31 | 01 April 2024 | 20 January 2024 | 51.03 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01| 17.01 | 0.0
| 0.0 |
+ | 4 | 30 | 01 May 2024 | 20 January 2024 | 34.02 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01| 17.01 | 0.0
| 0.0 |
+ | 5 | 31 | 01 June 2024 | 20 January 2024 | 17.01 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01| 17.01 | 0.0
| 0.0 |
+ | 6 | 30 | 01 July 2024 | 15 January 2024 | 0.0 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01| 17.01 | 0.0
| 0.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 | 0.34 | 0.0 | 0.0 | 100.34 | 100.34| 100.34
| 0.0 | 0.0 |
+ 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 |
+ | 02 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 03 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 04 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 05 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 06 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 07 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 08 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 09 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 10 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+ | 11 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 12 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 13 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ | 15 January 2024 | Repayment | 17.01 | 17.01 | 0.0 |
0.0 | 0.0 | 82.99 | false | false |
+ | 20 January 2024 | Repayment | 83.33 | 82.99 | 0.34 |
0.0 | 0.0 | 0.0 | false | false |
+ | 20 January 2024 | Accrual | 0.12 | 0.0 | 0.12 |
0.0 | 0.0 | 0.0 | false | false |
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
+
+ @TestRailId:C3297
+ Scenario: Verify the Loan reschedule - Interest modification - UC1: Interest
modification after early payment with Adjustment to NEXT installment
+ Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
+ When Admin sets the business date to "01 January 2024"
+ When Admin creates a client with random data
+ 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_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE
| 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
+ 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 | | 83.57 | 16.43
| 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 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 | 2.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0
| 0.0 | 102.05 |
+ 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 |
+# --- 1st installment paid on due date ---
+ When Admin sets the business date to "15 January 2024"
+ And Customer makes "AUTOPAY" repayment on "15 January 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 | | |
|
+ | 1 | 31 | 01 February 2024 | 15 January 2024 | 83.25 |
16.75 | 0.26 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0
| 0.0 |
+ | 2 | 29 | 01 March 2024 | | 67.0 |
16.25 | 0.76 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 3 | 31 | 01 April 2024 | | 50.38 |
16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 4 | 30 | 01 May 2024 | | 33.66 |
16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 5 | 31 | 01 June 2024 | | 16.85 |
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.85 | 0.1 | 0.0 | 0.0 | 16.95 | 0.0 | 0.0 | 0.0
| 16.95 |
+ 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.0 | 0.0 | 0.0 | 102.0 | 17.01 | 17.01
| 0.0 | 84.99 |
+ 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 |
+ | 15 January 2024 | Repayment | 17.01 | 16.75 | 0.26 |
0.0 | 0.0 | 83.25 | false | false |
+# --- Loan reschedule: Interest rate modification between two installments
---
+ When Admin sets the business date to "19 January 2024"
+ When Admin creates and approves Loan reschedule with the following data:
+ | rescheduleFromDate | submittedOnDate | adjustedDueDate |
graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
+ | 20 January 2024 | 19 January 2024 | |
| | | 4 |
+ When Admin runs inline COB job for Loan
+ When Admin sets the business date to "20 January 2024"
+ When Admin runs inline COB job for Loan
+ Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
+ 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 | 15 January 2024 | 83.25 |
16.75 | 0.26 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0
| 0.0 |
+ | 2 | 29 | 01 March 2024 | | 66.86 |
16.39 | 0.46 | 0.0 | 0.0 | 16.85 | 0.0 | 0.0 | 0.0
| 16.85 |
+ | 3 | 31 | 01 April 2024 | | 50.23 |
16.63 | 0.22 | 0.0 | 0.0 | 16.85 | 0.0 | 0.0 | 0.0
| 16.85 |
+ | 4 | 30 | 01 May 2024 | | 33.55 |
16.68 | 0.17 | 0.0 | 0.0 | 16.85 | 0.0 | 0.0 | 0.0
| 16.85 |
+ | 5 | 31 | 01 June 2024 | | 16.81 |
16.74 | 0.11 | 0.0 | 0.0 | 16.85 | 0.0 | 0.0 | 0.0
| 16.85 |
+ | 6 | 30 | 01 July 2024 | | 0.0 |
16.81 | 0.06 | 0.0 | 0.0 | 16.87 | 0.0 | 0.0 | 0.0
| 16.87 |
+ 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.28 | 0.0 | 0.0 | 101.28 | 17.01 | 17.01
| 0.0 | 84.27 |
+ 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 |
+ | 15 January 2024 | Repayment | 17.01 | 16.75 | 0.26 |
0.0 | 0.0 | 83.25 | false | false |
+ | 18 January 2024 | Accrual | 0.14 | 0.0 | 0.14 |
0.0 | 0.0 | 0.0 | false | false |
+ | 19 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+
+ @TestRailId:C3298
+ Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest
modification after early partial payment with Adjustment to NEXT installment
+ Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
+ When Admin sets the business date to "01 January 2024"
+ When Admin creates a client with random data
+ 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_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE
| 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
+ 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 | | 83.57 | 16.43
| 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 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 | 2.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0
| 0.0 | 102.05 |
+ 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 |
+# --- 1st installment paid on due date ---
+ When Admin sets the business date to "15 January 2024"
+ And Customer makes "AUTOPAY" repayment on "15 January 2024" with 17.0 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 | | 83.24 | 16.76
| 0.25 | 0.0 | 0.0 | 17.01 | 17.0 | 17.0 | 0.0 | 0.01
|
+ | 2 | 29 | 01 March 2024 | | 67.0 | 16.24
| 0.77 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 3 | 31 | 01 April 2024 | | 50.38 | 16.62
| 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 4 | 30 | 01 May 2024 | | 33.66 | 16.72
| 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 5 | 31 | 01 June 2024 | | 16.85 | 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.85
| 0.1 | 0.0 | 0.0 | 16.95 | 0.0 | 0.0 | 0.0 | 16.95
|
+ 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.0 | 0.0 | 0.0 | 102.0 | 17.0 | 17.0
| 0.0 | 85.0 |
+ 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 |
+ | 15 January 2024 | Repayment | 17.0 | 16.75 | 0.25 |
0.0 | 0.0 | 83.25 | false | false |
+# --- Loan reschedule: Interest rate modification between two installments
---
+ When Admin sets the business date to "19 January 2024"
+ When Admin creates and approves Loan reschedule with the following data:
+ | rescheduleFromDate | submittedOnDate | adjustedDueDate |
graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
+ | 20 January 2024 | 19 January 2024 | |
| | | 4 |
+ When Admin runs inline COB job for Loan
+ When Admin sets the business date to "20 January 2024"
+ When Admin runs inline COB job for Loan
+ Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
+ 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 | | 83.24 | 16.76
| 0.25 | 0.0 | 0.0 | 17.01 | 17.0 | 17.0 | 0.0 | 0.01
|
+ | 2 | 29 | 01 March 2024 | | 66.86 | 16.38
| 0.47 | 0.0 | 0.0 | 16.85 | 0.0 | 0.0 | 0.0 | 16.85
|
+ | 3 | 31 | 01 April 2024 | | 50.23 | 16.63
| 0.22 | 0.0 | 0.0 | 16.85 | 0.0 | 0.0 | 0.0 | 16.85
|
+ | 4 | 30 | 01 May 2024 | | 33.55 | 16.68
| 0.17 | 0.0 | 0.0 | 16.85 | 0.0 | 0.0 | 0.0 | 16.85
|
+ | 5 | 31 | 01 June 2024 | | 16.81 | 16.74
| 0.11 | 0.0 | 0.0 | 16.85 | 0.0 | 0.0 | 0.0 | 16.85
|
+ | 6 | 30 | 01 July 2024 | | 0.0 | 16.81
| 0.06 | 0.0 | 0.0 | 16.87 | 0.0 | 0.0 | 0.0 | 16.87
|
+ 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.28 | 0.0 | 0.0 | 101.28 | 17.0 | 17.0
| 0.0 | 84.28 |
+ 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 |
+ | 15 January 2024 | Repayment | 17.0 | 16.75 | 0.25 |
0.0 | 0.0 | 83.25 | false | false |
+ | 18 January 2024 | Accrual | 0.14 | 0.0 | 0.14 |
0.0 | 0.0 | 0.0 | false | false |
+ | 19 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
+
+ @TestRailId:C3311
+ Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest
modification after early partial payment with Adjustment to LAST installment
+ Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
+ When Admin sets the business date to "01 January 2024"
+ When Admin creates a client with random data
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "LAST_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_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE
| 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
+ 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 | | 83.57 | 16.43
| 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 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 | 2.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0
| 0.0 | 102.05 |
+ 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 |
+# --- 1st installment paid on due date ---
+ When Admin sets the business date to "15 January 2024"
+ And Customer makes "AUTOPAY" repayment on "15 January 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 | | |
|
+ | 1 | 31 | 01 February 2024 | | 83.52 |
16.48 | 0.53 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 2 | 29 | 01 March 2024 | | 66.9 |
16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 3 | 31 | 01 April 2024 | | 50.18 |
16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 4 | 30 | 01 May 2024 | | 33.36 |
16.82 | 0.19 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 5 | 31 | 01 June 2024 | | 17.01 |
16.35 | 0.1 | 0.0 | 0.0 | 16.45 | 0.0 | 0.0 | 0.0
| 16.45 |
+ | 6 | 30 | 01 July 2024 | 15 January 2024 | 0.0 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0
| 0.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.5 | 0.0 | 0.0 | 101.5 | 17.01 | 17.01
| 0.0 | 84.49 |
+ 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 |
+ | 15 January 2024 | Repayment | 17.01 | 17.01 | 0.0 |
0.0 | 0.0 | 82.99 | false | false |
+# --- Loan reschedule: Interest rate modification between two installments
---
+ When Admin sets the business date to "19 January 2024"
+ When Admin creates and approves Loan reschedule with the following data:
+ | rescheduleFromDate | submittedOnDate | adjustedDueDate |
graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
+ | 20 January 2024 | 19 January 2024 | |
| | | 4 |
+ When Admin runs inline COB job for Loan
+ When Admin sets the business date to "20 January 2024"
+ When Admin runs inline COB job for Loan
+ Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
+ 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 | | 83.64 |
16.36 | 0.44 | 0.0 | 0.0 | 16.8 | 0.0 | 0.0 | 0.0
| 16.8 |
+ | 2 | 29 | 01 March 2024 | | 67.06 |
16.58 | 0.22 | 0.0 | 0.0 | 16.8 | 0.0 | 0.0 | 0.0
| 16.8 |
+ | 3 | 31 | 01 April 2024 | | 50.43 |
16.63 | 0.17 | 0.0 | 0.0 | 16.8 | 0.0 | 0.0 | 0.0
| 16.8 |
+ | 4 | 30 | 01 May 2024 | | 33.74 |
16.69 | 0.11 | 0.0 | 0.0 | 16.8 | 0.0 | 0.0 | 0.0
| 16.8 |
+ | 5 | 31 | 01 June 2024 | | 17.01 |
16.73 | 0.06 | 0.0 | 0.0 | 16.79 | 0.0 | 0.0 | 0.0
| 16.79 |
+ | 6 | 30 | 01 July 2024 | 15 January 2024 | 0.0 |
17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 |
0.0 | 0.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.0 | 0.0 | 0.0 | 101.0 | 17.01 | 17.01
| 0.0 | 83.99 |
+ 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 |
+ | 15 January 2024 | Repayment | 17.01 | 17.01 | 0.0 |
0.0 | 0.0 | 82.99 | false | false |
+ | 18 January 2024 | Accrual | 0.24 | 0.0 | 0.24 |
0.0 | 0.0 | 0.0 | false | false |
+ | 19 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
+
+ @TestRailId:C3299
+ Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest
modification after first installment with Adjustment to NEXT installment
+ Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
+ When Admin sets the business date to "01 January 2024"
+ When Admin creates a client with random data
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
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_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE
| 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
+ 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 | | 83.57 | 16.43
| 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
+ | 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 | 2.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0
| 0.0 | 102.05 |
+ 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 |
+# --- 1st installment paid on due date ---
+ When Admin sets the business date to "15 January 2024"
+ And Customer makes "AUTOPAY" repayment on "15 January 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 | | |
|
+ | 1 | 31 | 01 February 2024 | 15 January 2024 | 83.25 |
16.75 | 0.26 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0
| 0.0 |
+ | 2 | 29 | 01 March 2024 | | 67.0 |
16.25 | 0.76 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 3 | 31 | 01 April 2024 | | 50.38 |
16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 4 | 30 | 01 May 2024 | | 33.66 |
16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
+ | 5 | 31 | 01 June 2024 | | 16.85 |
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.85 | 0.1 | 0.0 | 0.0 | 16.95 | 0.0 | 0.0 | 0.0
| 16.95 |
+ 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.0 | 0.0 | 0.0 | 102.0 | 17.01 | 17.01
| 0.0 | 84.99 |
+ 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 |
+ | 15 January 2024 | Repayment | 17.01 | 16.75 | 0.26 |
0.0 | 0.0 | 83.25 | false | false |
+# --- Loan reschedule: Interest rate modification on Feb 15 ---
+ When Admin sets the business date to "15 February 2024"
+ When Admin creates and approves Loan reschedule with the following data:
+ | rescheduleFromDate | submittedOnDate | adjustedDueDate |
graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
+ | 16 February 2024 | 15 February 2024 | |
| | | 4 |
+ When Admin runs inline COB job for Loan
+ When Admin sets the business date to "16 February 2024"
+ When Admin runs inline COB job for Loan
+ Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
+ 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 | 15 January 2024 | 83.25 |
16.75 | 0.26 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0
| 0.0 |
+ | 2 | 29 | 01 March 2024 | | 67.01 |
16.24 | 0.65 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0
| 16.89 |
+ | 3 | 31 | 01 April 2024 | | 50.34 |
16.67 | 0.22 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0
| 16.89 |
+ | 4 | 30 | 01 May 2024 | | 33.62 |
16.72 | 0.17 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0
| 16.89 |
+ | 5 | 31 | 01 June 2024 | | 16.84 |
16.78 | 0.11 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0
| 16.89 |
+ | 6 | 30 | 01 July 2024 | | 0.0 |
16.84 | 0.06 | 0.0 | 0.0 | 16.9 | 0.0 | 0.0 | 0.0
| 16.9 |
+ 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.47 | 0.0 | 0.0 | 101.47 | 17.01 | 17.01
| 0.0 | 84.46 |
+ 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 |
+ | 15 January 2024 | Repayment | 17.01 | 16.75 | 0.26 |
0.0 | 0.0 | 83.25 | false | false |
+ | 01 February 2024 | Accrual | 0.26 | 0.0 | 0.26 |
0.0 | 0.0 | 0.0 | false | false |
+ | 14 February 2024 | Accrual | 0.29 | 0.0 | 0.29 |
0.0 | 0.0 | 0.0 | false | false |
+ | 15 February 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
+
+ @TestRailId:C3301
+ Scenario: UC18-1 - In case of backdated repayment the Interest Refund
transaction needs to be recalculated
+ # using 2021 for the test since as per UC - non-leap year with 365 days
should be used
+ When Admin sets the business date to "01 January 2021"
+ When Admin creates a client with random data
+ 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_PYMNT_INTEREST_DAILY_EMI_ACTUAL_ACTUAL_INTEREST_REFUND_FULL |
01 January 2021 | 1000 | 9.9 | DECLINING_BALANCE
| DAILY | EQUAL_INSTALLMENTS | 1 | MONTHS
| 1 | MONTHS | 1 |
0 | 0 | 0 |
ADVANCED_PAYMENT_ALLOCATION |
+ And Admin successfully approves the loan on "01 January 2021" with "1000"
amount and expected disbursement date on "01 January 2021"
+ When Admin successfully disburse the loan on "01 January 2021" with "1000"
EUR transaction amount
+ When Admin sets the business date to "22 January 2021"
+ When Customer makes "MERCHANT_ISSUED_REFUND" transaction with "AUTOPAY"
payment type on "22 January 2021" with 1000 EUR transaction amount and
system-generated Idempotency key
+ Then Loan Repayment schedule has 1 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 2021 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | |
| |
+ | 1 | 31 | 01 February 2021 | 22 January 2021 | 0.0 |
1000.0 | 5.7 | 0.0 | 0.0 | 1005.7 | 1005.7 | 1005.7 |
0.0 | 0.0 |
+ Then Loan Repayment schedule has the following data in Total row:
+ | Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
+ | 1000.0 | 5.7 | 0.0 | 0.0 | 1005.7 | 1005.7 |
1005.7 | 0.0 | 0.0 |
+ Then Loan Transactions tab has the following data:
+ | Transaction date | Transaction Type | Amount | Principal |
Interest | Fees | Penalties | Loan Balance | Reverted | Replayed |
+ | 01 January 2021 | Disbursement | 1000.0 | 0.0 | 0.0
| 0.0 | 0.0 | 1000.0 | false | false |
+ | 22 January 2021 | Merchant Issued Refund | 1000.0 | 1000.0 | 0.0
| 0.0 | 0.0 | 0.0 | false | false |
+ | 22 January 2021 | Interest Refund | 5.7 | 0.0 | 5.7
| 0.0 | 0.0 | 0.0 | false | false |
+ | 22 January 2021 | Accrual | 5.7 | 0.0 | 5.7
| 0.0 | 0.0 | 0.0 | false | false |
+ And Customer makes "AUTOPAY" repayment on "10 January 2021" with 85.63 EUR
transaction amount
+ Then Loan Repayment schedule has 1 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 2021 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | |
| |
+ | 1 | 31 | 01 February 2021 | 22 January 2021 | 0.0 |
1000.0 | 5.42 | 0.0 | 0.0 | 1005.42 | 1005.42 | 1005.42 |
0.0 | 0.0 |
+ Then Loan Repayment schedule has the following data in Total row:
+ | Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
+ | 1000.0 | 5.42 | 0.0 | 0.0 | 1005.42 | 1005.42 |
1005.42 | 0.0 | 0.0 |
+ Then Loan Transactions tab has the following data:
+ | Transaction date | Transaction Type | Amount | Principal |
Interest | Fees | Penalties | Loan Balance | Reverted | Replayed |
+ | 01 January 2021 | Disbursement | 1000.0 | 0.0 | 0.0
| 0.0 | 0.0 | 1000.0 | false | false |
+ | 10 January 2021 | Repayment | 85.63 | 85.63 | 0.0
| 0.0 | 0.0 | 914.37 | false | false |
+ | 22 January 2021 | Merchant Issued Refund | 1000.0 | 914.37 | 5.42
| 0.0 | 0.0 | 0.0 | false | true |
+ | 22 January 2021 | Interest Refund | 5.42 | 0.0 | 0.0
| 0.0 | 0.0 | 0.0 | false | true |
+
+ @TestRailId:C3302
+ Scenario: UC18-2 - In case of repayment reversal the Interest Refund
transaction needs to be recalculated
+ # using 2021 for the test since as per UC - non-leap year with 365 days
should be used
+ When Admin sets the business date to "01 January 2021"
+ When Admin creates a client with random data
+ 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_PYMNT_INTEREST_DAILY_EMI_ACTUAL_ACTUAL_INTEREST_REFUND_FULL |
01 January 2021 | 1000 | 9.9 | DECLINING_BALANCE
| DAILY | EQUAL_INSTALLMENTS | 1 | MONTHS
| 1 | MONTHS | 1 |
0 | 0 | 0 |
ADVANCED_PAYMENT_ALLOCATION |
+ And Admin successfully approves the loan on "01 January 2021" with "1000"
amount and expected disbursement date on "01 January 2021"
+ When Admin successfully disburse the loan on "01 January 2021" with "1000"
EUR transaction amount
+ When Admin sets the business date to "10 January 2021"
+ And Customer makes "AUTOPAY" repayment on "10 January 2021" with 85.63 EUR
transaction amount
+ Then Loan Repayment schedule has 1 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 2021 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | |
| |
+ | 1 | 31 | 01 February 2021 | | 0.0 |
1000.0 | 7.9 | 0.0 | 0.0 | 1007.9 | 85.63 | 85.63
| 0.0 | 922.27 |
+ Then Loan Repayment schedule has the following data in Total row:
+ | Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
+ | 1000.0 | 7.9 | 0.0 | 0.0 | 1007.9 | 85.63 |
85.63 | 0.0 | 922.27 |
+ Then Loan Transactions tab has the following data:
+ | Transaction date | Transaction Type | Amount | Principal |
Interest | Fees | Penalties | Loan Balance | Reverted | Replayed |
+ | 01 January 2021 | Disbursement | 1000.0 | 0.0 | 0.0
| 0.0 | 0.0 | 1000.0 | false | false |
+ | 10 January 2021 | Repayment | 85.63 | 85.63 | 0.0
| 0.0 | 0.0 | 914.37 | false | false |
+ When Admin sets the business date to "22 January 2021"
+ When Customer makes "MERCHANT_ISSUED_REFUND" transaction with "AUTOPAY"
payment type on "22 January 2021" with 1000 EUR transaction amount and
system-generated Idempotency key
+ Then Loan Repayment schedule has 1 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 2021 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | |
| |
+ | 1 | 31 | 01 February 2021 | 22 January 2021 | 0.0 |
1000.0 | 5.42 | 0.0 | 0.0 | 1005.42 | 1005.42 | 1005.42 |
0.0 | 0.0 |
+ Then Loan Repayment schedule has the following data in Total row:
+ | Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
+ | 1000.0 | 5.42 | 0.0 | 0.0 | 1005.42 | 1005.42 |
1005.42 | 0.0 | 0.0 |
+ Then Loan Transactions tab has the following data:
+ | Transaction date | Transaction Type | Amount | Principal |
Interest | Fees | Penalties | Loan Balance | Reverted | Replayed |
+ | 01 January 2021 | Disbursement | 1000.0 | 0.0 | 0.0
| 0.0 | 0.0 | 1000.0 | false | false |
+ | 10 January 2021 | Repayment | 85.63 | 85.63 | 0.0
| 0.0 | 0.0 | 914.37 | false | false |
+ | 22 January 2021 | Merchant Issued Refund | 1000.0 | 914.37 | 5.42
| 0.0 | 0.0 | 0.0 | false | false |
+ | 22 January 2021 | Interest Refund | 5.42 | 0.0 | 0.0
| 0.0 | 0.0 | 0.0 | false | false |
+ | 22 January 2021 | Accrual | 5.42 | 0.0 | 5.42
| 0.0 | 0.0 | 0.0 | false | false |
+ When Admin sets the business date to "23 January 2021"
+ And Admin makes Credit Balance Refund transaction on "23 January 2021"
with 85.63 EUR transaction amount
+ When Customer undo "1"th "Repayment" transaction made on "10 January 2021"
+ Then Loan Repayment schedule has 1 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 2021 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | |
| |
+ | 1 | 31 | 01 February 2021 | | 0.0 |
1085.63 | 5.7 | 0.0 | 0.0 | 1091.33 | 1005.7 | 1005.7 |
0.0 | 85.63 |
+ Then Loan Repayment schedule has the following data in Total row:
+ | Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
+ | 1085.63 | 5.7 | 0.0 | 0.0 | 1091.33 | 1005.7 |
1005.7 | 0.0 | 85.63 |
+ Then Loan Transactions tab has the following data:
+ | Transaction date | Transaction Type | Amount | Principal |
Interest | Fees | Penalties | Loan Balance | Reverted | Replayed |
+ | 01 January 2021 | Disbursement | 1000.0 | 0.0 | 0.0
| 0.0 | 0.0 | 1000.0 | false | false |
+ | 10 January 2021 | Repayment | 85.63 | 85.63 | 0.0
| 0.0 | 0.0 | 914.37 | true | false |
+ | 22 January 2021 | Accrual | 5.42 | 0.0 | 5.42
| 0.0 | 0.0 | 0.0 | false | false |
+ | 22 January 2021 | Merchant Issued Refund | 1000.0 | 1000.0 | 0.0
| 0.0 | 0.0 | 0.0 | false | true |
+ | 22 January 2021 | Interest Refund | 5.7 | 0.0 | 5.7
| 0.0 | 0.0 | 0.0 | false | true |
+ | 23 January 2021 | Credit Balance Refund | 85.63 | 85.63 | 0.0
| 0.0 | 0.0 | 85.63 | false | true |
+ And In Loan Transactions the "2"th Transaction has Transaction
type="Repayment" and is reverted
+
+ @TestRailId:C3303
+ Scenario: UC18-3 - In case of refund reversal the Interest Refund
transaction needs to be recalculated
+ # using 2021 for the test since as per UC - non-leap year with 365 days
should be used
+ When Admin sets the business date to "01 January 2021"
+ When Admin creates a client with random data
+ 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_PYMNT_INTEREST_DAILY_EMI_ACTUAL_ACTUAL_INTEREST_REFUND_FULL |
01 January 2021 | 1000 | 9.9 | DECLINING_BALANCE
| DAILY | EQUAL_INSTALLMENTS | 1 | MONTHS
| 1 | MONTHS | 1 |
0 | 0 | 0 |
ADVANCED_PAYMENT_ALLOCATION |
+ And Admin successfully approves the loan on "01 January 2021" with "1000"
amount and expected disbursement date on "01 January 2021"
+ When Admin successfully disburse the loan on "01 January 2021" with "1000"
EUR transaction amount
+ When Admin sets the business date to "22 January 2021"
+ When Customer makes "MERCHANT_ISSUED_REFUND" transaction with "AUTOPAY"
payment type on "22 January 2021" with 1000 EUR transaction amount and
system-generated Idempotency key
+ Then Loan Repayment schedule has 1 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 2021 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | |
| |
+ | 1 | 31 | 01 February 2021 | 22 January 2021 | 0.0 |
1000.0 | 5.7 | 0.0 | 0.0 | 1005.7 | 1005.7 | 1005.7 |
0.0 | 0.0 |
+ Then Loan Repayment schedule has the following data in Total row:
+ | Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
+ | 1000.0 | 5.7 | 0.0 | 0.0 | 1005.7 | 1005.7 |
1005.7 | 0.0 | 0.0 |
+ Then Loan Transactions tab has the following data:
+ | Transaction date | Transaction Type | Amount | Principal |
Interest | Fees | Penalties | Loan Balance | Reverted | Replayed |
+ | 01 January 2021 | Disbursement | 1000.0 | 0.0 | 0.0
| 0.0 | 0.0 | 1000.0 | false | false |
+ | 22 January 2021 | Merchant Issued Refund | 1000.0 | 1000.0 | 0.0
| 0.0 | 0.0 | 0.0 | false | false |
+ | 22 January 2021 | Interest Refund | 5.7 | 0.0 | 5.7
| 0.0 | 0.0 | 0.0 | false | false |
+ | 22 January 2021 | Accrual | 5.7 | 0.0 | 5.7
| 0.0 | 0.0 | 0.0 | false | false |
+ When Customer undo "1"th "Merchant Issued Refund" transaction made on "22
January 2021"
+ Then Loan Repayment schedule has 1 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 2021 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | |
| |
+ | 1 | 31 | 01 February 2021 | | 0.0 |
1000.0 | 8.41 | 0.0 | 0.0 | 1008.41 | 0.0 | 0.0 |
0.0 | 1008.41 |
+ Then Loan Repayment schedule has the following data in Total row:
+ | Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
+ | 1000.0 | 8.41 | 0.0 | 0.0 | 1008.41 | 0.0 |
0.0 | 0.0 | 1008.41 |
+ Then Loan Transactions tab has the following data:
+ | Transaction date | Transaction Type | Amount | Principal |
Interest | Fees | Penalties | Loan Balance | Reverted | Replayed |
+ | 01 January 2021 | Disbursement | 1000.0 | 0.0 | 0.0
| 0.0 | 0.0 | 1000.0 | false | false |
+ | 22 January 2021 | Merchant Issued Refund | 1000.0 | 1000.0 | 0.0
| 0.0 | 0.0 | 0.0 | true | false |
+ | 22 January 2021 | Interest Refund | 5.7 | 0.0 | 5.7
| 0.0 | 0.0 | 0.0 | true | false |
+ | 22 January 2021 | Accrual | 5.7 | 0.0 | 5.7
| 0.0 | 0.0 | 0.0 | false | false |
+ Then In Loan Transactions the "2"th Transaction has Transaction
type="Merchant Issued Refund" and is reverted
+ Then In Loan Transactions the "3"th Transaction has Transaction
type="Interest Refund" and is reverted
\ No newline at end of file
diff --git a/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
b/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
index f3453e6d1..4ff7af13d 100644
--- a/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
+++ b/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
@@ -5868,7 +5868,7 @@ Feature: Loan
| 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0
| 0.0 | 0.0 | 1000.0 | false | false |
| 22 January 2024 | Merchant Issued Refund | 100.0 | 100.0 | 0.0
| 0.0 | 0.0 | 900.0 | false | false |
| 22 January 2024 | Interest Refund | 0.57 | 0.57 | 0.0
| 0.0 | 0.0 | 899.43 | false | false |
- When Customer undo "1"th transaction made on "22 January 2024"
+ When Customer undo "1"th "Merchant Issued Refund" transaction made on "22
January 2024" with linked "Interest Refund" transaction
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 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
@@ -5912,7 +5912,7 @@ Feature: Loan
| 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 |
0.0 | 0.0 | 1000.0 | false | false |
| 22 January 2024 | Payout Refund | 100.0 | 100.0 | 0.0 |
0.0 | 0.0 | 900.0 | false | false |
| 22 January 2024 | Interest Refund | 0.57 | 0.57 | 0.0 |
0.0 | 0.0 | 899.43 | false | false |
- When Customer undo "1"th transaction made on "22 January 2024"
+ When Customer undo "1"th "Payout Refund" transaction made on "22 January
2024" with linked "Interest Refund" transaction
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 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
@@ -5930,9 +5930,11 @@ Feature: Loan
| 22 January 2024 | Interest Refund | 0.57 | 0.57 | 0.0 |
0.0 | 0.0 | 899.43 | true | false |
Then In Loan Transactions the "3"th Transaction has Transaction
type="Interest Refund" and is reverted
+ @TestRailId:C3300
Scenario: Early pay-off loan with interest, TILL_PRECLOSE product
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
+ When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
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_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE
| 01 January 2024 | 100 | 7 |
DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6
| MONTHS | 1 | MONTHS | 6
| 0 | 0 | 0
| ADVANCED_PAYMENT_ALLOCATION |
diff --git
a/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
b/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
index 5e19a7c79..2e620e887 100644
---
a/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
+++
b/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
@@ -3557,8 +3557,8 @@ Feature: LoanRepayment
When Admin sets the business date to "23 July 2024"
When Admin creates a client with random data
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 |
- | LP1_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL | 23 July 2024
| 150 | 0 | FLAT |
SAME_AS_REPAYMENT_PERIOD | EQUAL_INSTALLMENTS | 1 | MONTHS
| 1 | MONTHS | 1 | 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 |
+ | LP1_ADV_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL | 23 July 2024
| 150 | 0 | FLAT |
SAME_AS_REPAYMENT_PERIOD | EQUAL_INSTALLMENTS | 1 | MONTHS
| 1 | MONTHS | 1 | 0
| 0 | 0 |
ADVANCED_PAYMENT_ALLOCATION |
# --- 7/23 - Disbursement for 111.92 EUR ---
And Admin successfully approves the loan on "23 July 2024" with "111.92"
amount and expected disbursement date on "23 July 2024"
When Admin successfully disburse the loan on "23 July 2024" with "111.92"
EUR transaction amount
@@ -3942,6 +3942,7 @@ Feature: LoanRepayment
| 24 June 2024 | Disbursement | 100.0 | 0.0 | 0.0
| 0.0 | 0.0 | 500.0 |
| 10 September 2024 | Merchant Issued Refund | 200.0 | 200.0 | 0.0
| 0.0 | 0.0 | 300.0 |
+ @TestRailId:C3296
Scenario: Verify the relationship for Interest Refund transaction after
repayment by reverting related transaction
When Admin sets the business date to "30 January 2024"
When Admin creates a client with random data
@@ -3969,7 +3970,7 @@ Feature: LoanRepayment
| 15 January 2024 | Merchant Issued Refund | 50.0 | 48.9 | 1.1
| 0.0 | 0.0 | 126.1 | false |
| 15 January 2024 | Interest Refund | 0.29 | 0.29 | 0.0
| 0.0 | 0.0 | 125.81 | false |
| 16 January 2024 | Payout Refund | 50.0 | 49.95 | 0.05
| 0.0 | 0.0 | 75.86 | false |
- | 16 January 2024 | Interest Refund | 0.3 | 0.3 | 0.0
| 0.0 | 0.0 | 75.56 | false |
+ | 16 January 2024 | Interest Refund | 0.3 | 0.3 | 0.0
| 0.0 | 0.0 | 75.56 | false |
Then In Loan Transactions the "4"th Transaction has relationship
type=RELATED with the "3"th Transaction
Then In Loan Transactions the "6"th Transaction has relationship
type=RELATED with the "5"th Transaction
When Customer undo "1"th "Merchant Issued Refund" transaction made on "15
January 2024"
@@ -3982,3 +3983,79 @@ Feature: LoanRepayment
| 15 January 2024 | Interest Refund | 0.29 | 0.29 | 0.0
| 0.0 | 0.0 | 125.81 | true |
| 16 January 2024 | Payout Refund | 50.0 | 48.83 | 1.17
| 0.0 | 0.0 | 126.17 | true |
| 16 January 2024 | Interest Refund | 0.31 | 0.31 | 0.0
| 0.0 | 0.0 | 125.86 | true |
+
+ @TestRailId:C3293
+ Scenario: Verify that repayment made during downpayment period should not
call payInterest or payPrincipal methods on the EmiCalculator for interest
bearing progressive product with interest recalculation
+ When Admin sets the business date to "23 June 2024"
+ When Admin creates a client with random data
+ 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_PYMNT_INTEREST_RECALCULATION_DAILY_EMI_360_30_MULTIDISBURSE_DOWNPAYMENT
| 23 Jun 2024 | 1000 | 25 |
DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 30
| DAYS | 30 | DAYS | 1
| 0 | 0 | 0
| ADVANCED_PAYMENT_ALLOCATION |
+ And Admin successfully approves the loan on "23 June 2024" with "400"
amount and expected disbursement date on "23 June 2024"
+ And Admin successfully disburse the loan on "23 June 2024" with "400" EUR
transaction amount
+ When Customer makes "AUTOPAY" repayment on "23 June 2024" with 100 EUR
transaction amount
+ Then Loan Repayment schedule has 2 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 |
+ | | | 23 June 2024 | | 400.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
+ | 1 | 0 | 23 June 2024 | 23 June 2024 | 300.0 | 100.0
| 0.0 | 0.0 | 0.0 | 100.0 | 100.0 | 0.0 | 0.0 | 0.0
|
+ | 2 | 30 | 23 July 2024 | | 0.0 | 300.0
| 6.25 | 0.0 | 0.0 | 306.25 | 0.0 | 0.0 | 0.0 | 306.25
|
+ Then Loan Repayment schedule has the following data in Total row:
+ | Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
+ | 400.0 | 6.25 | 0.0 | 0.0 | 406.25 | 100.0 | 0.0
| 0.0 | 306.25 |
+ Then Loan Transactions tab has the following data:
+ | Transaction date | Transaction Type | Amount | Principal |
Interest | Fees | Penalties | Loan Balance |
+ | 23 June 2024 | Disbursement | 400.0 | 0.0 | 0.0
| 0.0 | 0.0 | 400.0 |
+ | 23 June 2024 | Repayment | 100.0 | 100.0 | 0.0
| 0.0 | 0.0 | 300.0 |
+
+ @TestRailId:C3294
+ Scenario: Verify that payment transactions made during downpayment period
should not call payInterest or payPrincipal methods on the EmiCalculator for
interest bearing progressive product with interest recalculation
+ When Admin sets the business date to "23 June 2024"
+ When Admin creates a client with random data
+ 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_PYMNT_INTEREST_RECALCULATION_DAILY_EMI_360_30_MULTIDISBURSE_DOWNPAYMENT
| 23 Jun 2024 | 1000 | 25 |
DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 30
| DAYS | 30 | DAYS | 1
| 0 | 0 | 0
| ADVANCED_PAYMENT_ALLOCATION |
+ And Admin successfully approves the loan on "23 June 2024" with "400"
amount and expected disbursement date on "23 June 2024"
+ And Admin successfully disburse the loan on "23 June 2024" with "400" EUR
transaction amount
+ And Customer makes "MERCHANT_ISSUED_REFUND" transaction with "AUTOPAY"
payment type on "23 June 2024" with 25 EUR transaction amount and
self-generated Idempotency key
+ And Customer makes "GOODWILL_CREDIT" transaction with "AUTOPAY" payment
type on "23 June 2024" with 25 EUR transaction amount and self-generated
Idempotency key
+ And Customer makes "INTEREST_PAYMENT_WAIVER" transaction with "AUTOPAY"
payment type on "23 June 2024" with 25 EUR transaction amount and
self-generated Idempotency key
+ And Customer makes "PAYOUT_REFUND" transaction with "AUTOPAY" payment type
on "23 June 2024" with 25 EUR transaction amount and self-generated Idempotency
key
+ Then Loan Repayment schedule has 2 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 |
+ | | | 23 June 2024 | | 400.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
+ | 1 | 0 | 23 June 2024 | 23 June 2024 | 300.0 | 100.0
| 0.0 | 0.0 | 0.0 | 100.0 | 100.0 | 0.0 | 0.0 | 0.0
|
+ | 2 | 30 | 23 July 2024 | | 0.0 | 300.0
| 6.25 | 0.0 | 0.0 | 306.25 | 0.0 | 0.0 | 0.0 | 306.25
|
+ Then Loan Repayment schedule has the following data in Total row:
+ | Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
+ | 400.0 | 6.25 | 0.0 | 0.0 | 406.25 | 100.0 | 0.0
| 0.0 | 306.25 |
+ Then Loan Transactions tab has the following data:
+ | Transaction date | Transaction Type | Amount | Principal |
Interest | Fees | Penalties | Loan Balance |
+ | 23 June 2024 | Disbursement | 400.0 | 0.0 | 0.0
| 0.0 | 0.0 | 400.0 |
+ | 23 June 2024 | Merchant Issued Refund | 25.0 | 25.0 | 0.0
| 0.0 | 0.0 | 375.0 |
+ | 23 June 2024 | Goodwill Credit | 25.0 | 25.0 | 0.0
| 0.0 | 0.0 | 350.0 |
+ | 23 June 2024 | Interest Payment Waiver | 25.0 | 25.0 | 0.0
| 0.0 | 0.0 | 325.0 |
+ | 23 June 2024 | Payout Refund | 25.0 | 25.0 | 0.0
| 0.0 | 0.0 | 300.0 |
+
+ @TestRailId:C3295
+ Scenario: Verify that backdated repayment made after loan maturity date
should not call payInterest or payPrincipal methods on the EmiCalculator for
interest bearing progressive product with interest recalculation
+ When Admin sets the business date to "23 June 2024"
+ When Admin creates a client with random data
+ 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_PYMNT_INTEREST_RECALCULATION_DAILY_EMI_360_30_MULTIDISBURSE_DOWNPAYMENT
| 23 Jun 2024 | 1000 | 25 |
DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 30
| DAYS | 30 | DAYS | 1
| 0 | 0 | 0
| ADVANCED_PAYMENT_ALLOCATION |
+ And Admin successfully approves the loan on "23 June 2024" with "400"
amount and expected disbursement date on "23 June 2024"
+ And Admin successfully disburse the loan on "23 June 2024" with "400" EUR
transaction amount
+ When Admin sets the business date to "24 July 2024"
+ When Customer makes "AUTOPAY" repayment on "23 June 2024" with 100 EUR
transaction amount
+ Then Loan Repayment schedule has 2 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 |
+ | | | 23 June 2024 | | 400.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
+ | 1 | 0 | 23 June 2024 | 23 June 2024 | 300.0 | 100.0
| 0.0 | 0.0 | 0.0 | 100.0 | 100.0 | 0.0 | 0.0 | 0.0
|
+ | 2 | 30 | 23 July 2024 | | 0.0 | 300.0
| 6.25 | 0.0 | 0.0 | 306.25 | 0.0 | 0.0 | 0.0 | 306.25
|
+ Then Loan Repayment schedule has the following data in Total row:
+ | Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
+ | 400.0 | 6.25 | 0.0 | 0.0 | 406.25 | 100.0 | 0.0
| 0.0 | 306.25 |
+ Then Loan Transactions tab has the following data:
+ | Transaction date | Transaction Type | Amount | Principal |
Interest | Fees | Penalties | Loan Balance |
+ | 23 June 2024 | Disbursement | 400.0 | 0.0 | 0.0
| 0.0 | 0.0 | 400.0 |
+ | 23 June 2024 | Repayment | 100.0 | 100.0 | 0.0
| 0.0 | 0.0 | 300.0 |