diff --git a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/GlobalConfigurationStepDef.java b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/GlobalConfigurationStepDef.java index 810695c29..7ae6f52f6 100644 --- a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/GlobalConfigurationStepDef.java +++ b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/GlobalConfigurationStepDef.java @@ -78,16 +78,6 @@ public class GlobalConfigurationStepDef { assertThat(errorDetails.getSingleError().getDeveloperMessage()).isEqualTo(ErrorMessageHelper.setCurrencyEmptyValueFailure()); } - @When("Update currency with incorrect null value outcomes with an error") - public void updateCurrencyIncorrectNullValueFailure() throws IOException { - var request = new CurrencyUpdateRequest(); - var currencyResponse = currencyApi.updateCurrencies(request.currencies(Collections.singletonList(null))).execute(); - final ErrorResponse errorDetails = ErrorResponse.from(currencyResponse); - assertThat(errorDetails.getHttpStatusCode()).as(ErrorMessageHelper.setCurrencyIncorrectValueFailure("null")).isEqualTo(404); - assertThat(errorDetails.getSingleError().getDeveloperMessage()) - .isEqualTo(ErrorMessageHelper.setCurrencyIncorrectValueFailure("null")); - } - @When("Update currency as NULL value outcomes with an error") public void updateCurrencyNullValueFailure() throws IOException { var request = new CurrencyUpdateRequest(); 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 dd8970326..841e9f4f6 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 @@ -60,6 +60,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.fineract.avro.loan.v1.LoanAccountDataV1; import org.apache.fineract.avro.loan.v1.LoanChargePaidByDataV1; import org.apache.fineract.avro.loan.v1.LoanStatusEnumDataV1; +import org.apache.fineract.avro.loan.v1.LoanTransactionAdjustmentDataV1; import org.apache.fineract.avro.loan.v1.LoanTransactionDataV1; import org.apache.fineract.client.models.AdvancedPaymentData; import org.apache.fineract.client.models.AmortizationMappingData; @@ -2424,12 +2425,17 @@ public class LoanStepDef extends AbstractStepDef { .as(ErrorMessageHelper.transactionHasNullResourceValue("", "external-id")).isTrue(); } - @Then("Check required transaction for non-null eternal-id") - public void loanTransactionHasNonNullExternalId() throws IOException { + @Then("Check required {string}th transaction for non-null eternal-id") + public void loanTransactionHasNonNullExternalId(String nThNumber) throws IOException { Response loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE); long loanId = loanCreateResponse.body().getLoanId(); - GetLoansLoanIdTransactions targetTransaction = testContext().get(TestContextKey.LOAN_TRANSACTION_RESPONSE); + GetLoansLoanIdTransactions targetTransaction; + if (nThNumber.equals("1")) { + targetTransaction = testContext().get(TestContextKey.LOAN_TRANSACTION_RESPONSE); + } else { + targetTransaction = testContext().get(TestContextKey.LOAN_SECOND_TRANSACTION_RESPONSE); + } Long targetTransactionId = targetTransaction.getId(); Response transactionResponse = loanTransactionsApi @@ -2890,11 +2896,11 @@ public class LoanStepDef extends AbstractStepDef { List transactions = loanDetailsResponse.body().getTransactions(); - GetLoansLoanIdTransactions loadTransaction = transactions.stream() + GetLoansLoanIdTransactions loanTransaction = transactions.stream() .filter(t -> date.equals(FORMATTER.format(t.getDate())) && "Charge Adjustment".equals(t.getType().getValue())).findFirst() .orElseThrow(() -> new IllegalStateException(String.format("No Charge Adjustment transaction found on %s", date))); - eventAssertion.assertEventRaised(LoanChargeAdjustmentPostBusinessEvent.class, loadTransaction.getId()); + eventAssertion.assertEventRaised(LoanChargeAdjustmentPostBusinessEvent.class, loanTransaction.getId()); } @Then("BulkBusinessEvent is not raised on {string}") @@ -2919,9 +2925,7 @@ public class LoanStepDef extends AbstractStepDef { em -> FORMATTER.format(em.getBusinessDate()).equals(date)); } - @Then("{string} transaction on {string} got reverse-replayed on {string}") - public void checkLoanAdjustTransactionBusinessEvent(String transactionType, String transactionDate, String submittedOnDate) - throws IOException { + public GetLoansLoanIdTransactions getLoanTransactionIdByDate(String transactionType, String transactionDate) throws IOException { Response loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE); long loanId = loanCreateResponse.body().getLoanId(); @@ -2930,41 +2934,96 @@ public class LoanStepDef extends AbstractStepDef { List transactions = loanDetailsResponse.body().getTransactions(); - GetLoansLoanIdTransactions loadTransaction = transactions.stream() + GetLoansLoanIdTransactions loanTransaction = transactions.stream() .filter(t -> transactionDate.equals(FORMATTER.format(t.getDate())) && transactionType.equals(t.getType().getValue())) .findFirst().orElseThrow( () -> new IllegalStateException(String.format("No %s transaction found on %s", transactionType, transactionDate))); + return loanTransaction; + } - Set transactionRelations = loadTransaction.getTransactionRelations(); + public GetLoansLoanIdTransactionsTransactionIdResponse getLoanTransactionIdById(Long transactionId) throws IOException { + Response loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE); + long loanId = loanCreateResponse.body().getLoanId(); + + Response loanTransactionResponse = loanTransactionsApi + .retrieveTransaction(loanId, transactionId, "").execute(); + GetLoansLoanIdTransactionsTransactionIdResponse loanTransaction = loanTransactionResponse.body(); + return loanTransaction; + } + + @Then("{string} transaction on {string} got reverse-replayed on {string}") + public void checkLoanAdjustTransactionBusinessEvent(String transactionType, String transactionDate, String submittedOnDate) + throws IOException { + GetLoansLoanIdTransactions loanTransaction = getLoanTransactionIdByDate(transactionType, transactionDate); + + Set transactionRelations = loanTransaction.getTransactionRelations(); Long originalTransactionId = transactionRelations.stream().map(GetLoansLoanIdLoanTransactionRelation::getToLoanTransaction) .filter(Objects::nonNull).findFirst() .orElseThrow(() -> new IllegalStateException("Transaction was reversed, but not replayed!")); // Check whether reverse-replay event got occurred - eventAssertion.assertEvent(LoanAdjustTransactionBusinessEvent.class, originalTransactionId).extractingData( - e -> e.getNewTransactionDetail() != null && e.getNewTransactionDetail().getId().equals(loadTransaction.getId())); + eventAssertion.assertEvent(LoanAdjustTransactionBusinessEvent.class, originalTransactionId) + .extractingData(LoanTransactionAdjustmentDataV1::getNewTransactionDetail).isNotEqualTo(null) + .extractingData(e -> e.getNewTransactionDetail().getId()).isEqualTo(loanTransaction.getId()); // Check whether there was just ONE event related to this transaction eventAssertion.assertEventNotRaised(LoanAdjustTransactionBusinessEvent.class, originalTransactionId); - assertThat(FORMATTER.format(loadTransaction.getSubmittedOnDate())) - .as("Loan got replayed on %s", loadTransaction.getSubmittedOnDate()).isEqualTo(submittedOnDate); + assertThat(FORMATTER.format(loanTransaction.getSubmittedOnDate())) + .as("Loan got replayed on %s", loanTransaction.getSubmittedOnDate()).isEqualTo(submittedOnDate); + } + + @Then("Store {string} transaction created on {string} date as {string}th transaction") + public void storeLoanTransactionId(String transactionType, String transactionDate, String nthTrnOrderNumber) throws IOException { + GetLoansLoanIdTransactions loanTransaction = getLoanTransactionIdByDate(transactionType, transactionDate); + if (nthTrnOrderNumber.equals("1")) { + testContext().set(TestContextKey.LOAN_TRANSACTION_RESPONSE, loanTransaction); + } else { + testContext().set(TestContextKey.LOAN_SECOND_TRANSACTION_RESPONSE, loanTransaction); + } + } + + @Then("LoanAdjustTransactionBusinessEvent is raised with transaction got reversed on {string}") + public void checkLoanAdjustTransactionBusinessEventWithReversedTrn(String submittedOnDate) throws IOException { + GetLoansLoanIdTransactions originalTransaction = testContext().get(TestContextKey.LOAN_TRANSACTION_RESPONSE); + Long originalTransactionId = originalTransaction.getId(); + GetLoansLoanIdTransactionsTransactionIdResponse loanTransaction = getLoanTransactionIdById(originalTransactionId); + + // Check whether reversed event got occurred + eventAssertion.assertEvent(LoanAdjustTransactionBusinessEvent.class, originalTransactionId) + .extractingData(LoanTransactionAdjustmentDataV1::getNewTransactionDetail).isEqualTo(null) + .extractingData(e -> e.getTransactionToAdjust().getId()).isEqualTo(originalTransactionId); + // Check whether there was just ONE event related to this transaction + eventAssertion.assertEventNotRaised(LoanAdjustTransactionBusinessEvent.class, originalTransactionId); + assertThat(FORMATTER.format(loanTransaction.getReversedOnDate())).as("Loan got replayed on %s", loanTransaction.getReversedOnDate()) + .isEqualTo(submittedOnDate); + } + + @Then("LoanAdjustTransactionBusinessEvent is raised with transaction on {string} got reversed on {string}") + public void checkLoanAdjustTransactionBusinessEventWithReversedTrn(String transactionDate, String submittedOnDate) throws IOException { + Long originalTransactionId; + GetLoansLoanIdTransactions loanTransaction1 = testContext().get(TestContextKey.LOAN_TRANSACTION_RESPONSE); + GetLoansLoanIdTransactions loanTransaction2 = testContext().get(TestContextKey.LOAN_SECOND_TRANSACTION_RESPONSE); + if (FORMATTER.format(loanTransaction1.getDate()).equals(transactionDate)) { + originalTransactionId = loanTransaction1.getId(); + } else { + originalTransactionId = loanTransaction2.getId(); + } + GetLoansLoanIdTransactionsTransactionIdResponse loanTransaction = getLoanTransactionIdById(originalTransactionId); + + // Check whether reversedevent got occurred + eventAssertion.assertEvent(LoanAdjustTransactionBusinessEvent.class, originalTransactionId) + .extractingData(e -> e.getTransactionToAdjust().getId()).isEqualTo(originalTransactionId) + .extractingData(LoanTransactionAdjustmentDataV1::getNewTransactionDetail).isEqualTo(null); + // Check whether there was just ONE event related to this transaction + eventAssertion.assertEventNotRaised(LoanAdjustTransactionBusinessEvent.class, originalTransactionId); + assertThat(FORMATTER.format(loanTransaction.getReversedOnDate())).as("Loan got replayed on %s", loanTransaction.getReversedOnDate()) + .isEqualTo(submittedOnDate); } @When("Save external ID of {string} transaction made on {string} as {string}") public void saveExternalIdForTransaction(String transactionName, String transactionDate, String externalIdKey) throws IOException { - Response loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE); - long loanId = loanCreateResponse.body().getLoanId(); + GetLoansLoanIdTransactions loanTransaction = getLoanTransactionIdByDate(transactionName, transactionDate); - Response loanDetailsResponse = loansApi.retrieveLoan(loanId, false, "transactions", "", "").execute(); - ErrorHelper.checkSuccessfulApiCall(loanDetailsResponse); - - List transactions = loanDetailsResponse.body().getTransactions(); - - GetLoansLoanIdTransactions loadTransaction = transactions.stream() - .filter(t -> transactionDate.equals(FORMATTER.format(t.getDate())) && transactionName.equals(t.getType().getValue())) - .findFirst().orElseThrow( - () -> new IllegalStateException(String.format("No %s transaction found on %s", transactionName, transactionDate))); - - String externalId = loadTransaction.getExternalId(); + String externalId = loanTransaction.getExternalId(); testContext().set(externalIdKey, externalId); log.debug("Transaction external ID: {} saved to testContext", externalId); } @@ -2975,15 +3034,7 @@ public class LoanStepDef extends AbstractStepDef { Response loanCreateResponse = testContext().get(TestContextKey.LOAN_CREATE_RESPONSE); long loanId = loanCreateResponse.body().getLoanId(); - Response loanDetailsResponse = loansApi.retrieveLoan(loanId, false, "transactions", "", "").execute(); - ErrorHelper.checkSuccessfulApiCall(loanDetailsResponse); - - List transactions = loanDetailsResponse.body().getTransactions(); - - GetLoansLoanIdTransactions transactionDetails = transactions.stream() - .filter(t -> transactionDate.equals(FORMATTER.format(t.getDate())) && transactionType.equals(t.getType().getValue())) - .findFirst().orElseThrow( - () -> new IllegalStateException(String.format("No %s transaction found on %s", transactionType, transactionDate))); + GetLoansLoanIdTransactions transactionDetails = getLoanTransactionIdByDate(transactionType, transactionDate); Set transactionRelations = transactionDetails.getTransactionRelations(); Long originalTransactionId = transactionRelations.stream().map(GetLoansLoanIdLoanTransactionRelation::getToLoanTransaction) 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 08bb6cbae..d7c1d9eaa 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 @@ -245,6 +245,7 @@ public abstract class TestContextKey { public static final String LOAN_WRITE_OFF_RESPONSE = "loanWriteOffResponse"; public static final String LOAN_DELINQUENCY_ACTION_RESPONSE = "loanDelinquencyActionResponse"; public static final String LOAN_TRANSACTION_RESPONSE = "loanTransactionResponse"; + public static final String LOAN_SECOND_TRANSACTION_RESPONSE = "loanSecondTransactionResponse"; public static final String LOAN_CAPITALIZED_INCOME_RESPONSE = "loanCapitalizedIncomeResponse"; public static final String LOAN_DISBURSEMENT_DETAIL_RESPONSE = "loanDisbursementDetailResponse"; public static final String LOAN_CAPITALIZED_INCOME_AMORTIZATION_ID = "loanCapitalizedIncomeAmortizationId"; diff --git a/fineract-e2e-tests-runner/src/test/resources/features/BusinessDate.feature b/fineract-e2e-tests-runner/src/test/resources/features/BusinessDate.feature index b4feb6a57..2e9df035f 100644 --- a/fineract-e2e-tests-runner/src/test/resources/features/BusinessDate.feature +++ b/fineract-e2e-tests-runner/src/test/resources/features/BusinessDate.feature @@ -27,27 +27,23 @@ Feature: BusinessDate When Admin runs the Increase Business Date by 1 day job Then Admin checks that the business date is correctly set to "11 July 2022" - @TestRailId:C3953 - Scenario: Verify set incorrect business date with empty value handled correct with accordance error message - UC1 - When Set incorrect business date with empty value "null" outcomes with an error - @TestRailId:C3954 - Scenario: Verify set incorrect business date with null value handled correct with accordance error message - UC2 - When Set incorrect business date with empty value "" outcomes with an error + Scenario Outline: Verify set incorrect business date with null or empty value handled correct with accordance error message - UC1 + When Set incorrect business date with empty value outcomes with an error - @TestRailId:C3955 - Scenario: Verify set incorrect business date value handled correct with accordance error message - UC3 - When Set incorrect business date value "15" outcomes with an error - - @TestRailId:C3956 - Scenario: Verify set incorrect business date value handled correct with accordance error message - UC4 - When Set incorrect business date value "11 15 2025" outcomes with an error - - @TestRailId:C_3957 - Scenario: Verify set incorrect business date value handled correct with accordance error message - UC5 - When Set incorrect business date value "August 12 2025" outcomes with an error + Examples: + | empty_biz_date_value | + | "" | + | "null" | @TestRailId:C3958 - Scenario: Verify set incorrect business date value handled correct with accordance error message - UC6 - When Set incorrect business date value "33 August 2025" outcomes with an error + Scenario Outline: Verify set incorrect business date value handled correct with accordance error message - UC2 + When Set incorrect business date value "" outcomes with an error + + Examples: + | incorrect_biz_date_value | + | 33 August 2025 | + | August 12 2025 | + | 11 15 2025 | + | 15 | diff --git a/fineract-e2e-tests-runner/src/test/resources/features/Configuration.feature b/fineract-e2e-tests-runner/src/test/resources/features/Configuration.feature index a86925035..e487e9235 100644 --- a/fineract-e2e-tests-runner/src/test/resources/features/Configuration.feature +++ b/fineract-e2e-tests-runner/src/test/resources/features/Configuration.feature @@ -5,14 +5,15 @@ Feature: Configuration Scenario: Verify update currency with empty value handled correct with accordance error message - UC1 When Update currency with incorrect empty value outcomes with an error - @TestRailId:C3960 - Scenario: Verify update currency with null value handled correct with accordance error message - UC2 - When Update currency with incorrect null value outcomes with an error - @TestRailId:C3961 - Scenario: Verify update currency as NULL value handled correct with accordance error message - UC3 + Scenario: Verify update currency as NULL value handled correct with accordance error message - UC2 When Update currency as NULL value outcomes with an error @TestRailId:C3962 - Scenario: Verify update currency with incorrect value handled correct with accordance error message - UC4 - When Update currency as "string" value outcomes with an error + Scenario Outline: Verify update currency with incorrect/null value handled correct with accordance error message - UC3 + When Update currency as value outcomes with an error + + Examples: + | incorrect_config_value | + | "string" | + | "null" | diff --git a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature index 66de39202..812004fbe 100644 --- a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature +++ b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature @@ -3455,7 +3455,7 @@ Feature: LoanAccrualActivity | 16 January 2025 | Repayment | 10.0 | 0.32 | 0.0 | 0.0 | 0.0 | 0.0 | true | false | | 16 January 2025 | Accrual | 0.32 | 0.0 | 0.32 | 0.0 | 0.0 | 0.0 | false | false | # --- check if 'Accrual Activity' is reversed and has non-null external-id - Then Check required transaction for non-null eternal-id + Then Check required "1"th transaction for non-null eternal-id Then In Loan Transactions all transactions have non-null external-id @TestRailId:C3398 @@ -5343,7 +5343,6 @@ Feature: LoanAccrualActivity | 01 July 2024 | Repayment | 340.17 | 336.11 | 1.96 | 0.0 | 0.0 | 0.0 | false | false | | 01 July 2024 | Accrual Activity | 1.96 | 0.0 | 1.96 | 0.0 | 0.0 | 0.0 | false | false | - @TestRailId:C3525 Scenario: Verify accrual activity behavior in case of backdated repayment - UC1 When Admin sets the business date to "01 January 2025" @@ -7785,7 +7784,7 @@ Feature: LoanAccrualActivity When Admin sets the business date to "13 June 2025" And Admin creates a client with random data And 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 | + | 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_REFUND_INTEREST_RECALC_ACCRUAL_ACTIVITY | 13 June 2025 | 135.94 | 11.32 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION | And Admin successfully approves the loan on "13 June 2025" with "135.94" amount and expected disbursement date on "13 June 2025" And Admin successfully disburse the loan on "13 June 2025" with "135.94" EUR transaction amount @@ -8244,4 +8243,853 @@ Feature: LoanAccrualActivity | 18 July 2025 | Accrual Adjustment | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 18 July 2025 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + @TestRailId:C3955 + Scenario: Verify accrual activity trn just reversed but nt replayed with backdated repayment that overpays loan - UC1 + When Admin sets the business date to "01 August 2025" + And Admin creates a client with random data + And 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_REFUND_INTEREST_RECALC_ACCRUAL_ACTIVITY | 01 August 2025 | 135.94 | 11.32 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 4 | MONTHS | 1 | MONTHS | 4 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION | + And Admin successfully approves the loan on "01 August 2025" with "135.94" amount and expected disbursement date on "01 August 2025" + And Admin successfully disburse the loan on "01 August 2025" with "135.94" EUR transaction amount + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | | 102.43 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 2 | 30 | 01 October 2025 | | 68.61 | 33.82 | 0.97 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 3 | 31 | 01 November 2025 | | 34.47 | 34.14 | 0.65 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 4 | 30 | 01 December 2025 | | 0.0 | 34.47 | 0.33 | 0.0 | 0.0 | 34.8 | 0.0 | 0.0 | 0.0 | 34.8 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 3.23 | 0.0 | 0.0 | 139.17 | 0.0 | 0.0 | 0.0 | 139.17 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + When Admin sets the business date to "02 August 2025" + When Admin runs inline COB job for Loan + + When Admin sets the business date to "06 October 2025" + When Admin runs inline COB job for Loan + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | | 102.43 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 2 | 30 | 01 October 2025 | | 68.92 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 3 | 31 | 01 November 2025 | | 34.88 | 34.04 | 0.75 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 4 | 30 | 01 December 2025 | | 0.0 | 34.88 | 0.33 | 0.0 | 0.0 | 35.21 | 0.0 | 0.0 | 0.0 | 35.21 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 3.64 | 0.0 | 0.0 | 139.58 | 0.0 | 0.0 | 0.0 | 139.58 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + | 02 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 08 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 12 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 13 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 15 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 19 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 21 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 23 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 26 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 30 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 01 September 2025 | Accrual Activity | 1.28 | 0.0 | 1.28 | 0.0 | 0.0 | 0.0 | false | false | + | 02 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 04 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 06 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 08 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 12 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 13 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 15 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 19 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 21 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 23 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 26 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 28 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 30 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 01 October 2025 | Accrual Activity | 1.28 | 0.0 | 1.28 | 0.0 | 0.0 | 0.0 | false | false | + | 02 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 October 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + And Store "Accrual Activity" transaction created on "01 September 2025" date as "1"th transaction + And Store "Accrual Activity" transaction created on "01 October 2025" date as "2"th transaction + +# --- backdated repayment on 01 August 2025 --- + And Admin makes "REPAYMENT" transaction with "AUTOPAY" payment type on "01 August 2025" with 140 EUR transaction amount + And Loan status will be "OVERPAID" + And Loan has 4.06 overpaid amount + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | 01 August 2025 | 101.15 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | 34.79 | 34.79 | 0.0 | 0.0 | + | 2 | 30 | 01 October 2025 | 01 August 2025 | 66.36 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | 34.79 | 34.79 | 0.0 | 0.0 | + | 3 | 31 | 01 November 2025 | 01 August 2025 | 31.57 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | 34.79 | 34.79 | 0.0 | 0.0 | + | 4 | 30 | 01 December 2025 | 01 August 2025 | 0.0 | 31.57 | 0.0 | 0.0 | 0.0 | 31.57 | 31.57 | 31.57 | 0.0 | 0.0 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 0.0 | 0.0 | 0.0 | 135.94 | 135.94 | 135.94 | 0.0 | 0.0 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + | 01 August 2025 | Repayment | 140.0 | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | + | 02 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 08 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 12 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 13 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 15 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 19 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 21 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 23 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 26 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 30 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 02 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 04 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 06 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 08 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 12 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 13 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 15 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 19 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 21 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 23 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 26 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 28 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 30 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 02 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 October 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 October 2025 | Accrual Adjustment | 2.73 | 0.0 | 2.73 | 0.0 | 0.0 | 0.0 | false | false | + + And LoanAdjustTransactionBusinessEvent is raised with transaction on "01 September 2025" got reversed on "06 October 2025" + And LoanAdjustTransactionBusinessEvent is raised with transaction on "01 October 2025" got reversed on "06 October 2025" + + And Check required "1"th transaction for non-null eternal-id + And Check required "2"th transaction for non-null eternal-id + And In Loan Transactions all transactions have non-null external-id + + When Admin makes Credit Balance Refund transaction on "06 October 2025" with 4.06 EUR transaction amount + Then Loan's all installments have obligations met + + @TestRailId:C3956 + Scenario: Verify accrual activity trn just reversed but not replayed with backdated repayment that fully pays loan and charge - UC2 + When Admin sets the business date to "01 August 2025" + And Admin creates a client with random data + And 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_REFUND_INTEREST_RECALC_ACCRUAL_ACTIVITY | 01 August 2025 | 135.94 | 11.32 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 4 | MONTHS | 1 | MONTHS | 4 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION | + And Admin successfully approves the loan on "01 August 2025" with "135.94" amount and expected disbursement date on "01 August 2025" + And Admin successfully disburse the loan on "01 August 2025" with "135.94" EUR transaction amount + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | | 102.43 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 2 | 30 | 01 October 2025 | | 68.61 | 33.82 | 0.97 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 3 | 31 | 01 November 2025 | | 34.47 | 34.14 | 0.65 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 4 | 30 | 01 December 2025 | | 0.0 | 34.47 | 0.33 | 0.0 | 0.0 | 34.8 | 0.0 | 0.0 | 0.0 | 34.8 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 3.23 | 0.0 | 0.0 | 139.17 | 0.0 | 0.0 | 0.0 | 139.17 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + When Admin sets the business date to "02 August 2025" + When Admin runs inline COB job for Loan + + When Admin sets the business date to "06 October 2025" + When Admin runs inline COB job for Loan + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | | 102.43 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 2 | 30 | 01 October 2025 | | 68.92 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 3 | 31 | 01 November 2025 | | 34.88 | 34.04 | 0.75 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 4 | 30 | 01 December 2025 | | 0.0 | 34.88 | 0.33 | 0.0 | 0.0 | 35.21 | 0.0 | 0.0 | 0.0 | 35.21 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 3.64 | 0.0 | 0.0 | 139.58 | 0.0 | 0.0 | 0.0 | 139.58 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + | 02 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 08 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 12 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 13 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 15 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 19 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 21 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 23 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 26 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 30 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 01 September 2025 | Accrual Activity | 1.28 | 0.0 | 1.28 | 0.0 | 0.0 | 0.0 | false | false | + | 02 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 04 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 06 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 08 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 12 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 13 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 15 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 19 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 21 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 23 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 26 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 28 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 30 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 01 October 2025 | Accrual Activity | 1.28 | 0.0 | 1.28 | 0.0 | 0.0 | 0.0 | false | false | + | 02 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 October 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + And Store "Accrual Activity" transaction created on "01 September 2025" date as "1"th transaction + And Store "Accrual Activity" transaction created on "01 October 2025" date as "2"th transaction + + When Admin adds "LOAN_NSF_FEE" due date charge with "06 October 2025" due date and 9.8 EUR transaction amount + Then Loan Charges tab has the following data: + | Name | isPenalty | Payment due at | Due as of | Calculation type | Due | Paid | Waived | Outstanding | + | NSF fee | true | Specified due date | 06 October 2025 | Flat | 9.8 | 0.0 | 0.0 | 9.8 | + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | | 102.43 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 2 | 30 | 01 October 2025 | | 68.92 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 3 | 31 | 01 November 2025 | | 34.88 | 34.04 | 0.75 | 0.0 | 9.8 | 44.59 | 0.0 | 0.0 | 0.0 | 44.59 | + | 4 | 30 | 01 December 2025 | | 0.0 | 34.88 | 0.33 | 0.0 | 0.0 | 35.21 | 0.0 | 0.0 | 0.0 | 35.21 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 3.64 | 0.0 | 9.8 | 149.38 | 0.0 | 0.0 | 0.0 | 149.38 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + | 02 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 08 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 12 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 13 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 15 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 19 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 21 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 23 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 26 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 30 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 01 September 2025 | Accrual Activity | 1.28 | 0.0 | 1.28 | 0.0 | 0.0 | 0.0 | false | false | + | 02 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 04 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 06 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 08 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 12 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 13 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 15 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 19 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 21 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 23 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 26 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 28 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 30 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 01 October 2025 | Accrual Activity | 1.28 | 0.0 | 1.28 | 0.0 | 0.0 | 0.0 | false | false | + | 02 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 October 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + + When Admin sets the business date to "07 October 2025" + When Admin runs inline COB job for Loan +# --- backdated repayment on 01 August 2025 --- + And Admin makes "REPAYMENT" transaction with "AUTOPAY" payment type on "01 August 2025" with 145.74 EUR transaction amount + Then Loan status will be "CLOSED_OBLIGATIONS_MET" + Then Loan has 0 outstanding amount + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | 01 August 2025 | 101.15 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | 34.79 | 34.79 | 0.0 | 0.0 | + | 2 | 30 | 01 October 2025 | 01 August 2025 | 66.36 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | 34.79 | 34.79 | 0.0 | 0.0 | + | 3 | 31 | 01 November 2025 | 01 August 2025 | 31.57 | 34.79 | 0.0 | 0.0 | 9.8 | 44.59 | 44.59 | 44.59 | 0.0 | 0.0 | + | 4 | 30 | 01 December 2025 | 01 August 2025 | 0.0 | 31.57 | 0.0 | 0.0 | 0.0 | 31.57 | 31.57 | 31.57 | 0.0 | 0.0 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 0.0 | 0.0 | 9.8 | 145.74 | 145.74 | 145.74 | 0.0 | 0.0 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + | 01 August 2025 | Repayment | 145.74 | 135.94 | 0.0 | 0.0 | 9.8 | 0.0 | false | false | + | 01 August 2025 | Accrual Activity | 9.8 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | false | false | + | 02 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 08 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 12 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 13 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 15 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 19 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 21 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 23 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 26 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 30 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 02 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 04 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 06 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 08 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 12 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 13 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 15 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 19 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 21 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 23 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 26 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 28 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 30 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 02 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 October 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 October 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 October 2025 | Accrual | 9.84 | 0.0 | 0.04 | 0.0 | 9.8 | 0.0 | false | false | + | 07 October 2025 | Accrual Adjustment | 2.77 | 0.0 | 2.77 | 0.0 | 0.0 | 0.0 | false | false | + + And LoanAdjustTransactionBusinessEvent is raised with transaction on "01 September 2025" got reversed on "07 October 2025" + And LoanAdjustTransactionBusinessEvent is raised with transaction on "01 October 2025" got reversed on "07 October 2025" + + And Check required "1"th transaction for non-null eternal-id + And Check required "2"th transaction for non-null eternal-id + And In Loan Transactions all transactions have non-null external-id + + @TestRailId:C3957 + Scenario: Verify accrual activity trn just reversed but not replayed with backdated repayment that fully pays loan - UC3 + When Admin sets the business date to "01 August 2025" + And Admin creates a client with random data + And 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_REFUND_INTEREST_RECALC_ACCRUAL_ACTIVITY | 01 August 2025 | 135.94 | 11.32 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 4 | MONTHS | 1 | MONTHS | 4 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION | + And Admin successfully approves the loan on "01 August 2025" with "135.94" amount and expected disbursement date on "01 August 2025" + And Admin successfully disburse the loan on "01 August 2025" with "135.94" EUR transaction amount + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | | 102.43 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 2 | 30 | 01 October 2025 | | 68.61 | 33.82 | 0.97 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 3 | 31 | 01 November 2025 | | 34.47 | 34.14 | 0.65 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 4 | 30 | 01 December 2025 | | 0.0 | 34.47 | 0.33 | 0.0 | 0.0 | 34.8 | 0.0 | 0.0 | 0.0 | 34.8 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 3.23 | 0.0 | 0.0 | 139.17 | 0.0 | 0.0 | 0.0 | 139.17 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + When Admin sets the business date to "02 August 2025" + When Admin runs inline COB job for Loan + + When Admin sets the business date to "06 September 2025" + When Admin runs inline COB job for Loan + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | | 102.43 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 2 | 30 | 01 October 2025 | | 68.66 | 33.77 | 1.02 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 3 | 31 | 01 November 2025 | | 34.52 | 34.14 | 0.65 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 4 | 30 | 01 December 2025 | | 0.0 | 34.52 | 0.33 | 0.0 | 0.0 | 34.85 | 0.0 | 0.0 | 0.0 | 34.85 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 3.28 | 0.0 | 0.0 | 139.22 | 0.0 | 0.0 | 0.0 | 139.22 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + | 02 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 08 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 12 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 13 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 15 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 19 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 21 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 23 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 26 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 30 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 01 September 2025 | Accrual Activity | 1.28 | 0.0 | 1.28 | 0.0 | 0.0 | 0.0 | false | false | + | 02 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 04 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + And Store "Accrual Activity" transaction created on "01 September 2025" date as "1"th transaction + +# --- backdated repayment on 01 August 2025 --- + And Admin makes "REPAYMENT" transaction with "AUTOPAY" payment type on "01 August 2025" with 135.94 EUR transaction amount + Then Loan status will be "CLOSED_OBLIGATIONS_MET" + Then Loan has 0 outstanding amount + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | 01 August 2025 | 101.15 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | 34.79 | 34.79 | 0.0 | 0.0 | + | 2 | 30 | 01 October 2025 | 01 August 2025 | 66.36 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | 34.79 | 34.79 | 0.0 | 0.0 | + | 3 | 31 | 01 November 2025 | 01 August 2025 | 31.57 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | 34.79 | 34.79 | 0.0 | 0.0 | + | 4 | 30 | 01 December 2025 | 01 August 2025 | 0.0 | 31.57 | 0.0 | 0.0 | 0.0 | 31.57 | 31.57 | 31.57 | 0.0 | 0.0 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 0.0 | 0.0 | 0.0 | 135.94 | 135.94 | 135.94 | 0.0 | 0.0 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + | 01 August 2025 | Repayment | 135.94 | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | + | 02 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 08 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 12 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 13 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 15 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 19 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 21 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 23 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 26 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 30 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 02 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 04 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 06 September 2025 | Accrual Adjustment | 1.45 | 0.0 | 1.45 | 0.0 | 0.0 | 0.0 | false | false | + + And LoanAdjustTransactionBusinessEvent is raised with transaction got reversed on "06 September 2025" + And LoanAccrualAdjustmentTransactionBusinessEvent is raised on "06 September 2025" + + And Check required "1"th transaction for non-null eternal-id + And In Loan Transactions all transactions have non-null external-id + + @TestRailId:C3953 + Scenario: Verify accrual activity trn just reversed but not replayed with backdated repayment that overpays loan and Snooze fee charge - UC4 + When Admin sets the business date to "01 August 2025" + And Admin creates a client with random data + And 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_REFUND_INTEREST_RECALC_ACCRUAL_ACTIVITY | 01 August 2025 | 135.94 | 11.32 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 4 | MONTHS | 1 | MONTHS | 4 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION | + And Admin successfully approves the loan on "01 August 2025" with "135.94" amount and expected disbursement date on "01 August 2025" + And Admin successfully disburse the loan on "01 August 2025" with "135.94" EUR transaction amount + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | | 102.43 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 2 | 30 | 01 October 2025 | | 68.61 | 33.82 | 0.97 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 3 | 31 | 01 November 2025 | | 34.47 | 34.14 | 0.65 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 4 | 30 | 01 December 2025 | | 0.0 | 34.47 | 0.33 | 0.0 | 0.0 | 34.8 | 0.0 | 0.0 | 0.0 | 34.8 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 3.23 | 0.0 | 0.0 | 139.17 | 0.0 | 0.0 | 0.0 | 139.17 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + When Admin sets the business date to "02 August 2025" + When Admin runs inline COB job for Loan + + When Admin sets the business date to "06 September 2025" + When Admin runs inline COB job for Loan + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | | 102.43 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 2 | 30 | 01 October 2025 | | 68.66 | 33.77 | 1.02 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 3 | 31 | 01 November 2025 | | 34.52 | 34.14 | 0.65 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 4 | 30 | 01 December 2025 | | 0.0 | 34.52 | 0.33 | 0.0 | 0.0 | 34.85 | 0.0 | 0.0 | 0.0 | 34.85 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 3.28 | 0.0 | 0.0 | 139.22 | 0.0 | 0.0 | 0.0 | 139.22 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + | 02 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 08 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 12 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 13 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 15 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 19 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 21 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 23 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 26 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 30 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 01 September 2025 | Accrual Activity | 1.28 | 0.0 | 1.28 | 0.0 | 0.0 | 0.0 | false | false | + | 02 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 04 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + And Store "Accrual Activity" transaction created on "01 September 2025" date as "1"th transaction + + # --- NSF fee charge on current date --- # + And Admin adds "LOAN_SNOOZE_FEE" due date charge with "06 September 2025" due date and 10.15 EUR transaction amount + Then Loan Charges tab has the following data: + | Name | isPenalty | Payment due at | Due as of | Calculation type | Due | Paid | Waived | Outstanding | + | Snooze fee | false | Specified due date | 06 September 2025 | Flat | 10.15 | 0.0 | 0.0 | 10.15 | + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | | 102.43 | 33.51 | 1.28 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 2 | 30 | 01 October 2025 | | 68.66 | 33.77 | 1.02 | 10.15| 0.0 | 44.94 | 0.0 | 0.0 | 0.0 | 44.94 | + | 3 | 31 | 01 November 2025 | | 34.52 | 34.14 | 0.65 | 0.0 | 0.0 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | + | 4 | 30 | 01 December 2025 | | 0.0 | 34.52 | 0.33 | 0.0 | 0.0 | 34.85 | 0.0 | 0.0 | 0.0 | 34.85 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 3.28 | 10.15 | 0.0 | 149.37 | 0.0 | 0.0 | 0.0 | 149.37 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + | 02 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 08 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 12 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 13 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 15 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 19 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 21 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 23 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 26 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 30 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 01 September 2025 | Accrual Activity | 1.28 | 0.0 | 1.28 | 0.0 | 0.0 | 0.0 | false | false | + | 02 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 04 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + +# --- backdated repayment on 01 August 2025 --- + And Admin makes "REPAYMENT" transaction with "AUTOPAY" payment type on "01 August 2025" with 150 EUR transaction amount + And Loan status will be "OVERPAID" + And Loan has 3.91 overpaid amount + 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 August 2025 | | 135.94 | | | 0.0 | | 0.0 | 0.0 | | | | + | 1 | 31 | 01 September 2025 | 01 August 2025 | 101.15 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | 34.79| 34.79 | 0.0 | 0.0 | + | 2 | 30 | 01 October 2025 | 01 August 2025 | 66.36 | 34.79 | 0.0 | 10.15| 0.0 | 44.94 | 44.94| 44.94 | 0.0 | 0.0 | + | 3 | 31 | 01 November 2025 | 01 August 2025 | 31.57 | 34.79 | 0.0 | 0.0 | 0.0 | 34.79 | 34.79| 34.79 | 0.0 | 0.0 | + | 4 | 30 | 01 December 2025 | 01 August 2025 | 0.0 | 31.57 | 0.0 | 0.0 | 0.0 | 31.57 | 31.57| 31.57 | 0.0 | 0.0 | + And Loan Repayment schedule has the following data in Total row: + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 135.94 | 0.0 | 10.15 | 0.0 | 146.09 | 146.09 | 146.09 | 0.0 | 0.0 | + And Loan Transactions tab has the following data: + | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | + | 01 August 2025 | Disbursement | 135.94 | 0.0 | 0.0 | 0.0 | 0.0 | 135.94 | false | false | + | 01 August 2025 | Repayment | 150.0 | 135.94 | 0.0 | 10.15| 0.0 | 0.0 | false | false | + | 01 August 2025 | Accrual Activity | 10.15 | 0.0 | 0.0 | 10.15| 0.0 | 0.0 | false | false | + | 02 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 04 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 06 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 07 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 08 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 09 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 10 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 11 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 12 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 13 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 14 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 15 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 16 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 17 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 18 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 19 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 20 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 21 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 22 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 23 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 24 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 26 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 27 August 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 29 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 30 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 August 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + + | 01 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 02 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 03 September 2025 | Accrual | 0.05 | 0.0 | 0.05 | 0.0 | 0.0 | 0.0 | false | false | + | 04 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 05 September 2025 | Accrual | 0.04 | 0.0 | 0.04 | 0.0 | 0.0 | 0.0 | false | false | + | 06 September 2025 | Accrual | 10.15 | 0.0 | 0.0 | 10.15| 0.0 | 0.0 | false | false | + | 06 September 2025 | Accrual Adjustment | 1.45 | 0.0 | 1.45 | 0.0 | 0.0 | 0.0 | false | false | + + And LoanAdjustTransactionBusinessEvent is raised with transaction got reversed on "06 September 2025" + And LoanAccrualAdjustmentTransactionBusinessEvent is raised on "06 September 2025" + + And Check required "1"th transaction for non-null eternal-id + And In Loan Transactions all transactions have non-null external-id + + When Admin makes Credit Balance Refund transaction on "06 September 2025" with 3.91 EUR transaction amount + Then Loan's all installments have obligations met +