This is an automated email from the ASF dual-hosted git repository.
adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new 0c7ef324b FINERACT-2070: COB business step order
0c7ef324b is described below
commit 0c7ef324b924944f95a5055e36f6015f383557ef
Author: Adam Saghy <[email protected]>
AuthorDate: Fri Nov 22 17:53:37 2024 +0100
FINERACT-2070: COB business step order
---
.../core/config/FineractProperties.java | 3 +
.../apache/fineract/test/api/ApiProperties.java | 2 +
.../test/api/FineractClientConfiguration.java | 8 +-
.../fineract/test/helper/WorkFlowJobHelper.java | 44 ++++-
.../base/BaseFineractInitializerConfiguration.java | 6 +-
.../test/initializer/base/FineractInitializer.java | 7 -
.../global/CobBusinessStepInitializerStep.java | 30 +---
.../test/stepdef/common/BusinessStepStepDef.java | 178 ---------------------
.../fineract/test/support/TestContextKey.java | 1 -
.../resources/fineract-test-application.properties | 2 +
.../src/test/resources/features/0_COB.feature | 2 -
.../features/AssetExternalization.feature | 96 -----------
.../test/resources/features/EMICalculation.feature | 70 +-------
.../src/test/resources/features/Loan.feature | 6 -
.../resources/features/LoanAccrualActivity.feature | 24 +--
.../features/LoanAccrualTransaction.feature | 12 +-
.../test/resources/features/LoanRepayment.feature | 2 -
.../infrastructure/core/config/OkHttp3Config.java | 6 +-
.../src/main/resources/application.properties | 3 +
.../src/test/resources/application-test.properties | 4 +
20 files changed, 87 insertions(+), 419 deletions(-)
diff --git
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java
b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java
index c0b648336..39f75109f 100644
---
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java
+++
b/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java
@@ -39,6 +39,9 @@ public class FineractProperties {
private String idempotencyKeyHeaderName;
private Boolean insecureHttpClient;
+ private long clientConnectTimeout;
+ private long clientReadTimeout;
+ private long clientWriteTimeout;
private FineractTenantProperties tenant;
diff --git
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/ApiProperties.java
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/ApiProperties.java
index db76dddc2..099288cc6 100644
---
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/ApiProperties.java
+++
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/ApiProperties.java
@@ -36,4 +36,6 @@ public class ApiProperties {
private String strongPassword;
@Value("${fineract-test.api.tenant-id}")
private String tenantId;
+ @Value("${fineract-test.client-read-timeout}")
+ private long readTimeout;
}
diff --git
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/FineractClientConfiguration.java
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/FineractClientConfiguration.java
index dcdff97c9..5f705b301 100644
---
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/FineractClientConfiguration.java
+++
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/api/FineractClientConfiguration.java
@@ -18,6 +18,7 @@
*/
package org.apache.fineract.test.api;
+import java.time.Duration;
import lombok.extern.slf4j.Slf4j;
import org.apache.fineract.client.util.FineractClient;
import org.springframework.beans.factory.annotation.Autowired;
@@ -37,11 +38,10 @@ public class FineractClientConfiguration {
String username = apiProperties.getUsername();
String password = apiProperties.getPassword();
String tenantId = apiProperties.getTenantId();
-
+ long readTimeout = apiProperties.getReadTimeout();
String apiBaseUrl = baseUrl + "/fineract-provider/api/";
-
log.info("Using base URL '{}'", apiBaseUrl);
-
- return FineractClient.builder().basicAuth(username,
password).tenant(tenantId).baseURL(apiBaseUrl).insecure(true).build();
+ return
FineractClient.builder().readTimeout(Duration.ofSeconds(readTimeout)).basicAuth(username,
password).tenant(tenantId)
+ .baseURL(apiBaseUrl).insecure(true).build();
}
}
diff --git
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkFlowJobHelper.java
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkFlowJobHelper.java
index c77b2e921..431e67b8d 100644
---
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkFlowJobHelper.java
+++
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/helper/WorkFlowJobHelper.java
@@ -21,29 +21,57 @@ package org.apache.fineract.test.helper;
import java.io.IOException;
import java.util.Comparator;
import java.util.List;
+import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.apache.fineract.client.models.BusinessStep;
import org.apache.fineract.client.models.GetBusinessStepConfigResponse;
+import org.apache.fineract.client.models.UpdateBusinessStepConfigRequest;
import org.apache.fineract.client.services.BusinessStepConfigurationApi;
-import org.apache.fineract.test.support.TestContext;
-import org.apache.fineract.test.support.TestContextKey;
import org.springframework.stereotype.Component;
import retrofit2.Response;
@RequiredArgsConstructor
@Component
+@Slf4j
public class WorkFlowJobHelper {
private static final String WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS =
"LOAN_CLOSE_OF_BUSINESS";
private final BusinessStepConfigurationApi businessStepConfigurationApi;
- public void saveOriginalCOBWorkflowJobBusinessStepList() throws
IOException {
- Response<GetBusinessStepConfigResponse> businessStepConfigResponse =
businessStepConfigurationApi
+ public void setWorkflowJobs() throws IOException {
+ List<BusinessStep> businessSteps = List.of(new
BusinessStep().stepName("APPLY_CHARGE_TO_OVERDUE_LOANS").order(1L), //
+ new
BusinessStep().stepName("LOAN_DELINQUENCY_CLASSIFICATION").order(2L), //
+ new
BusinessStep().stepName("CHECK_LOAN_REPAYMENT_DUE").order(3L), //
+ new
BusinessStep().stepName("CHECK_LOAN_REPAYMENT_OVERDUE").order(4L), //
+ new
BusinessStep().stepName("CHECK_DUE_INSTALLMENTS").order(5L), //
+ new
BusinessStep().stepName("UPDATE_LOAN_ARREARS_AGING").order(6L), //
+ new
BusinessStep().stepName("ADD_PERIODIC_ACCRUAL_ENTRIES").order(7L), //
+ new
BusinessStep().stepName("ACCRUAL_ACTIVITY_POSTING").order(8L), //
+ new
BusinessStep().stepName("LOAN_INTEREST_RECALCULATION").order(9L), //
+ new
BusinessStep().stepName("EXTERNAL_ASSET_OWNER_TRANSFER").order(10L)//
+ );
+ UpdateBusinessStepConfigRequest request = new
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
+ Response<Void> response =
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
request)
+ .execute();
+ ErrorHelper.checkSuccessfulApiCall(response);
+ // --- log changes ---
+ logChanges();
+ }
+
+ private void logChanges() throws IOException {
+ // --- log changes ---
+ Response<GetBusinessStepConfigResponse> changesResponse =
businessStepConfigurationApi
.retrieveAllConfiguredBusinessStep(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS).execute();
- ErrorHelper.checkSuccessfulApiCall(businessStepConfigResponse);
- List<BusinessStep> businessSteps =
businessStepConfigResponse.body().getBusinessSteps();
- businessSteps.sort(Comparator.comparingLong(BusinessStep::getOrder));
-
TestContext.GLOBAL.set(TestContextKey.ORIGINAL_COB_WORKFLOW_JOB_BUSINESS_STEP_LIST,
businessSteps);
+ List<BusinessStep> businessStepsChanged =
changesResponse.body().getBusinessSteps();
+ List<String> changes = businessStepsChanged//
+ .stream()//
+ .sorted(Comparator.comparingLong(BusinessStep::getOrder))//
+ .map(BusinessStep::getStepName)//
+ .collect(Collectors.toList());//
+
+ log.debug("Business steps has been CHANGED to the following:");
+ changes.forEach(e -> log.debug(e));
}
}
diff --git
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/BaseFineractInitializerConfiguration.java
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/BaseFineractInitializerConfiguration.java
index afb74e3ec..f1a624e97 100644
---
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/BaseFineractInitializerConfiguration.java
+++
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/BaseFineractInitializerConfiguration.java
@@ -21,7 +21,6 @@ package org.apache.fineract.test.initializer.base;
import java.util.List;
import org.apache.fineract.test.config.CacheConfiguration;
import org.apache.fineract.test.helper.BusinessDateHelper;
-import org.apache.fineract.test.helper.WorkFlowJobHelper;
import
org.apache.fineract.test.initializer.global.FineractGlobalInitializerStep;
import
org.apache.fineract.test.initializer.scenario.FineractScenarioInitializerStep;
import org.apache.fineract.test.initializer.suite.FineractSuiteInitializerStep;
@@ -40,8 +39,7 @@ public class BaseFineractInitializerConfiguration {
@Bean
public FineractInitializer
fineractInitializer(List<FineractGlobalInitializerStep> globalInitializerSteps,
List<FineractSuiteInitializerStep> suiteInitializerSteps,
List<FineractScenarioInitializerStep> scenarioInitializerSteps,
- BusinessDateHelper businessDateHelper, WorkFlowJobHelper
workFlowJobHelper) {
- return new FineractInitializer(globalInitializerSteps,
suiteInitializerSteps, scenarioInitializerSteps, businessDateHelper,
- workFlowJobHelper);
+ BusinessDateHelper businessDateHelper) {
+ return new FineractInitializer(globalInitializerSteps,
suiteInitializerSteps, scenarioInitializerSteps, businessDateHelper);
}
}
diff --git
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/FineractInitializer.java
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/FineractInitializer.java
index a67ce2125..d08129406 100644
---
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/FineractInitializer.java
+++
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/base/FineractInitializer.java
@@ -23,7 +23,6 @@ import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.fineract.test.helper.BusinessDateHelper;
-import org.apache.fineract.test.helper.WorkFlowJobHelper;
import
org.apache.fineract.test.initializer.global.FineractGlobalInitializerStep;
import
org.apache.fineract.test.initializer.scenario.FineractScenarioInitializerStep;
import org.apache.fineract.test.initializer.suite.FineractSuiteInitializerStep;
@@ -39,7 +38,6 @@ public class FineractInitializer implements InitializingBean {
private final List<FineractSuiteInitializerStep> suiteInitializerSteps;
private final List<FineractScenarioInitializerStep>
scenarioInitializerSteps;
private final BusinessDateHelper businessDateHelper;
- private final WorkFlowJobHelper workFlowJobHelper;
@Override
public void afterPropertiesSet() throws Exception {
@@ -63,7 +61,6 @@ public class FineractInitializer implements InitializingBean {
for (FineractGlobalInitializerStep initializerStep :
globalInitializerSteps) {
initializerStep.initialize();
}
-
businessDateHelper.setBusinessDateToday();
}
@@ -71,16 +68,13 @@ public class FineractInitializer implements
InitializingBean {
for (FineractSuiteInitializerStep initializerStep :
suiteInitializerSteps) {
initializerStep.initializeForSuite();
}
-
businessDateHelper.setBusinessDateToday();
- workFlowJobHelper.saveOriginalCOBWorkflowJobBusinessStepList();
}
public void setupDefaultsForScenario() throws Exception {
for (FineractScenarioInitializerStep scenarioInitializerStep :
scenarioInitializerSteps) {
scenarioInitializerStep.initializeForScenario();
}
-
businessDateHelper.setBusinessDateToday();
}
@@ -88,7 +82,6 @@ public class FineractInitializer implements InitializingBean {
for (FineractSuiteInitializerStep initializerStep :
suiteInitializerSteps) {
initializerStep.resetAfterSuite();
}
-
businessDateHelper.setBusinessDateToday();
}
}
diff --git
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/CobBusinessStepInitializerStep.java
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/CobBusinessStepInitializerStep.java
index 4167d36cc..b5f08f40e 100644
---
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/CobBusinessStepInitializerStep.java
+++
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/initializer/global/CobBusinessStepInitializerStep.java
@@ -18,42 +18,18 @@
*/
package org.apache.fineract.test.initializer.global;
-import java.util.Comparator;
-import java.util.List;
import lombok.RequiredArgsConstructor;
-import org.apache.fineract.client.models.BusinessStep;
-import org.apache.fineract.client.models.GetBusinessStepConfigResponse;
-import org.apache.fineract.client.models.UpdateBusinessStepConfigRequest;
-import org.apache.fineract.client.services.BusinessStepConfigurationApi;
-import org.apache.fineract.test.helper.ErrorHelper;
+import org.apache.fineract.test.helper.WorkFlowJobHelper;
import org.springframework.stereotype.Component;
-import retrofit2.Response;
@RequiredArgsConstructor
@Component
public class CobBusinessStepInitializerStep implements
FineractGlobalInitializerStep {
- private static final String WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS =
"LOAN_CLOSE_OF_BUSINESS";
- private static final String BUSINESS_STEP_NAME_ACCRUAL_ACTIVITY_POSTING =
"ACCRUAL_ACTIVITY_POSTING";
- private final BusinessStepConfigurationApi businessStepConfigurationApi;
+ private final WorkFlowJobHelper workFlowJobHelper;
@Override
public void initialize() throws Exception {
- // --- Adding ACCRUAL_ACTIVITY_POSTING to default COB steps ---
- Response<GetBusinessStepConfigResponse> businessStepConfigResponse =
businessStepConfigurationApi
-
.retrieveAllConfiguredBusinessStep(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS).execute();
- ErrorHelper.checkSuccessfulApiCall(businessStepConfigResponse);
- List<BusinessStep> businessSteps =
businessStepConfigResponse.body().getBusinessSteps();
- businessSteps.sort(Comparator.comparingLong(BusinessStep::getOrder));
- Long lastOrder = businessSteps.get(businessSteps.size() -
1).getOrder();
-
- BusinessStep accrualActivityPosting = new
BusinessStep().stepName(BUSINESS_STEP_NAME_ACCRUAL_ACTIVITY_POSTING).order(lastOrder
+ 1);
- businessSteps.add(accrualActivityPosting);
-
- UpdateBusinessStepConfigRequest request = new
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
-
- Response<Void> response =
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
request)
- .execute();
- ErrorHelper.checkSuccessfulApiCall(response);
+ workFlowJobHelper.setWorkflowJobs();
}
}
diff --git
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/BusinessStepStepDef.java
b/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/BusinessStepStepDef.java
deleted file mode 100644
index 554999713..000000000
---
a/fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/common/BusinessStepStepDef.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.test.stepdef.common;
-
-import io.cucumber.java.en.Given;
-import io.cucumber.java.en.Then;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.stream.Collectors;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.fineract.client.models.BusinessStep;
-import org.apache.fineract.client.models.GetBusinessStepConfigResponse;
-import org.apache.fineract.client.models.UpdateBusinessStepConfigRequest;
-import org.apache.fineract.client.services.BusinessStepConfigurationApi;
-import org.apache.fineract.test.data.CobBusinessStep;
-import org.apache.fineract.test.helper.ErrorHelper;
-import org.apache.fineract.test.stepdef.AbstractStepDef;
-import org.apache.fineract.test.support.TestContext;
-import org.apache.fineract.test.support.TestContextKey;
-import org.springframework.beans.factory.annotation.Autowired;
-import retrofit2.Response;
-
-@Slf4j
-public class BusinessStepStepDef extends AbstractStepDef {
-
- private static final String WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS =
"LOAN_CLOSE_OF_BUSINESS";
- private static final String
BUSINESS_STEP_NAME_APPLY_CHARGE_TO_OVERDUE_LOANS =
"APPLY_CHARGE_TO_OVERDUE_LOANS";
- private static final String
BUSINESS_STEP_NAME_LOAN_DELINQUENCY_CLASSIFICATION =
"LOAN_DELINQUENCY_CLASSIFICATION";
- private static final String BUSINESS_STEP_NAME_CHECK_LOAN_REPAYMENT_DUE =
"CHECK_LOAN_REPAYMENT_DUE";
- private static final String
BUSINESS_STEP_NAME_CHECK_LOAN_REPAYMENT_OVERDUE =
"CHECK_LOAN_REPAYMENT_OVERDUE";
- private static final String BUSINESS_STEP_NAME_UPDATE_LOAN_ARREARS_AGING =
"UPDATE_LOAN_ARREARS_AGING";
- private static final String
BUSINESS_STEP_NAME_ADD_PERIODIC_ACCRUAL_ENTRIES =
"ADD_PERIODIC_ACCRUAL_ENTRIES";
- private static final String
BUSINESS_STEP_NAME_EXTERNAL_ASSET_OWNER_TRANSFER =
"EXTERNAL_ASSET_OWNER_TRANSFER";
- private static final String BUSINESS_STEP_NAME_CHECK_DUE_INSTALLMENTS =
"CHECK_DUE_INSTALLMENTS";
- private static final String BUSINESS_STEP_NAME_ACCRUAL_ACTIVITY_POSTING =
"ACCRUAL_ACTIVITY_POSTING";
- private static final List<BusinessStep> ORIGINAL_COB_BUSINESS_STEPS =
TestContext.GLOBAL
- .get(TestContextKey.ORIGINAL_COB_WORKFLOW_JOB_BUSINESS_STEP_LIST);
-
- @Autowired
- private BusinessStepConfigurationApi businessStepConfigurationApi;
-
- @Given("Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow")
- public void putExternalAssetOwnerTransferJobInCOB() throws IOException {
- List<BusinessStep> businessSteps = new
ArrayList<>(ORIGINAL_COB_BUSINESS_STEPS);
- Long lastOrder = businessSteps.get(businessSteps.size() -
1).getOrder();
-
- BusinessStep externalAssetOwnerTransfer = new
BusinessStep().stepName(BUSINESS_STEP_NAME_EXTERNAL_ASSET_OWNER_TRANSFER)
- .order(lastOrder + 1);
- businessSteps.add(externalAssetOwnerTransfer);
-
- UpdateBusinessStepConfigRequest request = new
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
-
- Response<Void> response =
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
request)
- .execute();
- ErrorHelper.checkSuccessfulApiCall(response);
-
- // --- log changes ---
- logChanges();
- }
-
- @Then("Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow")
- public void removeExternalAssetOwnerTransferJobInCOB() throws IOException {
- setBackBusinessStepsToOriginal();
- }
-
- @Given("Admin puts CHECK_DUE_INSTALLMENTS job into LOAN_CLOSE_OF_BUSINESS
workflow")
- public void putCheckDueInstallmentsJobInCOB() throws IOException {
- List<BusinessStep> businessSteps = new
ArrayList<>(ORIGINAL_COB_BUSINESS_STEPS);
- Long lastOrder = businessSteps.get(businessSteps.size() -
1).getOrder();
-
- BusinessStep checkDueInstallments = new
BusinessStep().stepName(BUSINESS_STEP_NAME_CHECK_DUE_INSTALLMENTS).order(lastOrder
+ 1);
- businessSteps.add(checkDueInstallments);
-
- UpdateBusinessStepConfigRequest request = new
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
-
- Response<Void> response =
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
request)
- .execute();
- ErrorHelper.checkSuccessfulApiCall(response);
-
- // --- log changes ---
- logChanges();
- }
-
- @Then("Admin removes CHECK_DUE_INSTALLMENTS job from
LOAN_CLOSE_OF_BUSINESS workflow")
- public void removeCheckDueInstallmentsJobInCOB() throws IOException {
- setBackBusinessStepsToOriginal();
- }
-
- @Given("Admin puts {string} business step into LOAN_CLOSE_OF_BUSINESS
workflow")
- public void putGivenJobInCOB(String businessStepName) throws IOException {
- List<BusinessStep> businessSteps = new
ArrayList<>(ORIGINAL_COB_BUSINESS_STEPS);
- Long lastOrder = businessSteps.get(businessSteps.size() -
1).getOrder();
-
- CobBusinessStep cobBusinessStep =
CobBusinessStep.valueOf(businessStepName);
- String stepName = cobBusinessStep.getValue();
-
- BusinessStep businessStepToAdd = new
BusinessStep().stepName(stepName).order(lastOrder + 1);
- businessSteps.add(businessStepToAdd);
-
- UpdateBusinessStepConfigRequest request = new
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
-
- Response<Void> response =
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
request)
- .execute();
- ErrorHelper.checkSuccessfulApiCall(response);
-
- // --- log changes ---
- logChanges();
- }
-
- @Then("Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial
state")
- public void setBackCOBToInitialState() throws IOException {
- setBackBusinessStepsToOriginal();
- }
-
- @Then("Admin removes {string} business step into LOAN_CLOSE_OF_BUSINESS
workflow")
- public void removeGivenJobInCOB(String businessStepName) throws
IOException {
- List<BusinessStep> businessSteps = new
ArrayList<>(ORIGINAL_COB_BUSINESS_STEPS);
-
- CobBusinessStep cobBusinessStep =
CobBusinessStep.valueOf(businessStepName);
- String stepName = cobBusinessStep.getValue();
-
- businessSteps.removeIf(businessStep ->
businessStep.getStepName().equals(stepName));
-
- UpdateBusinessStepConfigRequest request = new
UpdateBusinessStepConfigRequest().businessSteps(businessSteps);
-
- Response<Void> response =
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
request)
- .execute();
- ErrorHelper.checkSuccessfulApiCall(response);
-
- // --- log changes ---
- logChanges();
- }
-
- private void setBackBusinessStepsToOriginal() throws IOException {
- log.debug("Setting back Business steps to original...");
- UpdateBusinessStepConfigRequest request = new
UpdateBusinessStepConfigRequest().businessSteps(ORIGINAL_COB_BUSINESS_STEPS);
-
- Response<Void> response =
businessStepConfigurationApi.updateJobBusinessStepConfig(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS,
request)
- .execute();
- ErrorHelper.checkSuccessfulApiCall(response);
-
- // --- log changes ---
- logChanges();
- }
-
- private void logChanges() throws IOException {
- // --- log changes ---
- Response<GetBusinessStepConfigResponse> changesResponse =
businessStepConfigurationApi
-
.retrieveAllConfiguredBusinessStep(WORKFLOW_NAME_LOAN_CLOSE_OF_BUSINESS).execute();
- List<BusinessStep> businessStepsChanged =
changesResponse.body().getBusinessSteps();
- List<String> changes = businessStepsChanged//
- .stream()//
- .sorted(Comparator.comparingLong(BusinessStep::getOrder))//
- .map(BusinessStep::getStepName)//
- .collect(Collectors.toList());//
-
- log.debug("Business steps has been CHANGED to the following:");
- changes.forEach(e -> log.debug(e));
- }
-}
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 553b6cf0b..6cc09c694 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
@@ -24,7 +24,6 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public abstract class TestContextKey {
- public static final String ORIGINAL_COB_WORKFLOW_JOB_BUSINESS_STEP_LIST =
"originalCOBWorkflowJobBusinessStepList";
public static final String CLIENT_CREATE_RESPONSE = "clientCreateResponse";
public static final String CLIENT_CREATE_SECOND_CLIENT_RESPONSE =
"clientCreateSecondClientResponse";
public static final String LOAN_CREATE_RESPONSE = "loanCreateResponse";
diff --git
a/fineract-e2e-tests-core/src/test/resources/fineract-test-application.properties
b/fineract-e2e-tests-core/src/test/resources/fineract-test-application.properties
index 63365475e..2561aea99 100644
---
a/fineract-e2e-tests-core/src/test/resources/fineract-test-application.properties
+++
b/fineract-e2e-tests-core/src/test/resources/fineract-test-application.properties
@@ -38,3 +38,5 @@ fineract-test.messaging.jms.topic-name=${ACTIVEMQ_TOPIC_NAME:}
fineract-test.event.wait-timeout-in-sec=${EVENT_WAIT_TIMEOUT_IN_SEC:5}
fineract-test.event.verification-enabled=${EVENT_VERIFICATION_ENABLED:false}
+
+fineract-test.client-read-timeout=${CLIENT_READ_TIMEOUT:60}
diff --git
a/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
b/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
index e67b36b27..3a0cf00c2 100644
--- a/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
+++ b/fineract-e2e-tests-runner/src/test/resources/features/0_COB.feature
@@ -216,7 +216,6 @@ Feature: COBFeature
@TestRailId:C3044 @AdvancedPaymentAllocation
Scenario: Verify that LoanAccountCustomSnapshotBusinessEvent is created with
proper business date when installment is due date and COB runs
- Given Admin puts CHECK_DUE_INSTALLMENTS job into LOAN_CLOSE_OF_BUSINESS
workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set "LP2_DOWNPAYMENT_AUTO_ADVANCED_PAYMENT_ALLOCATION" loan
product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future installment
allocation rule
@@ -228,6 +227,5 @@ Feature: COBFeature
When Admin sets the business date to "17 January 2024"
When Admin runs inline COB job for Loan
Then LoanAccountCustomSnapshotBusinessEvent is created with business date
"17 January 2024"
- Then Admin removes CHECK_DUE_INSTALLMENTS job from LOAN_CLOSE_OF_BUSINESS
workflow
diff --git
a/fineract-e2e-tests-runner/src/test/resources/features/AssetExternalization.feature
b/fineract-e2e-tests-runner/src/test/resources/features/AssetExternalization.feature
index 05f120a12..eb0f9453e 100644
---
a/fineract-e2e-tests-runner/src/test/resources/features/AssetExternalization.feature
+++
b/fineract-e2e-tests-runner/src/test/resources/features/AssetExternalization.feature
@@ -3,7 +3,6 @@ Feature: Asset Externalization
@TestRailId:C2722
Scenario: Verify that all fields and values are correct in case of a SALES
request by loan id and user-generated transferExternalId
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -24,11 +23,9 @@ Feature: Asset Externalization
| settlementDate | purchasePriceRatio | status | effectiveFrom |
effectiveTo | Transaction type |
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
9999-12-31 | SALE |
Then Asset externalization details has the generated transferExternalId
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2723
Scenario: Verify that all fields and values are correct in case of a SALES
request by loan id system-generated transferExternalId
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -49,11 +46,9 @@ Feature: Asset Externalization
| settlementDate | purchasePriceRatio | status | effectiveFrom |
effectiveTo | Transaction type |
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
9999-12-31 | SALE |
Then Asset externalization details has the generated transferExternalId
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2724
Scenario: Verify that all fields and values are correct in case of a SALES
request by loan external id user-generated transferExternalId
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -74,11 +69,9 @@ Feature: Asset Externalization
| settlementDate | purchasePriceRatio | status | effectiveFrom |
effectiveTo | Transaction type |
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
9999-12-31 | SALE |
Then Asset externalization details has the generated transferExternalId
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2725
Scenario: Verify that all fields and values are correct in case of a SALES
request by loan external id system-generated transferExternalId
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -99,11 +92,9 @@ Feature: Asset Externalization
| settlementDate | purchasePriceRatio | status | effectiveFrom |
effectiveTo | Transaction type |
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
9999-12-31 | SALE |
Then Asset externalization details has the generated transferExternalId
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2727
Scenario: Verify that Asset externalization details are correct after CoB in
case of a SALES request by loan id
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -123,11 +114,9 @@ Feature: Asset Externalization
| settlementDate | purchasePriceRatio | status | effectiveFrom |
effectiveTo | Transaction type |
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-21 | SALE |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
9999-12-31 | SALE |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2729
Scenario: Verify that Asset externalization details has the correct data in
case of a BUYBACK request placed before the settlementDate with a same
settlementDate as the sales one
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -159,11 +148,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | BUYBACK | 2023-05-10 |
2023-05-21 | BUYBACK |
| 2023-05-21 | 1 | CANCELLED | 2023-05-21 |
2023-05-21 | SALE |
| 2023-05-21 | 1 | CANCELLED | 2023-05-21 |
2023-05-21 | BUYBACK |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2730
Scenario: Verify that Asset externalization details has the correct data in
case of a BUYBACK request placed on a business date before the settlementDate
of sales request and with a settlementDate for buyback after the sales got
active
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -200,11 +187,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-21 | SALE |
| 2023-05-30 | 1 | BUYBACK | 2023-05-10 |
2023-05-30 | BUYBACK |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
2023-05-30 | SALE |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2731
Scenario: Verify that Asset externalization details has the correct data in
case of a BUYBACK request placed after the settlementDate
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -245,11 +230,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-21 | SALE |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
2023-05-30 | SALE |
| 2023-05-30 | 1 | BUYBACK | 2023-05-25 |
2023-05-30 | BUYBACK |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2732
Scenario: Verify that BUYBACK request on a loan with PENDING ownership where
BUYBACK settlement date is earlier than SALE settlement date results an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -268,11 +251,9 @@ Feature: Asset Externalization
Then BUYBACK transaction results a 403 error and proper error message when
its settlementDate is earlier than the original settlementDate
| Transaction type | settlementDate |
| buyback | 2023-05-15 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2733
Scenario: Verify that SALES request on a fully paid loan results an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -284,11 +265,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
403 error and "LOAN_NOT_ACTIVE" error message
| Transaction type | settlementDate | purchasePriceRatio |
| sale | 2023-05-21 | 1 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2734
Scenario: Verify that SALES request on an overpaid loan results an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -300,11 +279,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
403 error and "LOAN_NOT_ACTIVE" error message
| Transaction type | settlementDate | purchasePriceRatio |
| sale | 2023-05-21 | 1 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2735
Scenario: Verify that SALES request on a loan with ACTIVE ownership results
an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -330,11 +307,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
403 error and "ASSET_OWNED_CANNOT_BE_SOLD" error message
| Transaction type | settlementDate | purchasePriceRatio |
| sale | 2023-05-30 | 1 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2736
Scenario: Verify that BUYBACK request on a fully paid loan can be done
successfully
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -367,11 +342,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-21 | SALE |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
9999-12-31 | SALE |
| 2023-05-30 | 1 | BUYBACK | 2023-05-25 |
9999-12-31 | BUYBACK |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2737
Scenario: Verify that BUYBACK request on an overpaid loan can be done
successfully
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -404,11 +377,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-21 | SALE |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
9999-12-31 | SALE |
| 2023-05-30 | 1 | BUYBACK | 2023-05-25 |
9999-12-31 | BUYBACK |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2738
Scenario: Verify that BUYBACK request on a loan with INACTIVE ownership
results an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -418,11 +389,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
403 error and "ASSET_NOT_OWNED_CANNOT_BE_BOUGHT" error message
| Transaction type | settlementDate | purchasePriceRatio |
| buyback | 2023-05-21 | |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2739
Scenario: Verify that SALES request can NOT be placed on a loan which is not
APPROVED yet
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -430,11 +399,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
403 error and "LOAN_NOT_ACTIVE" error message
| Transaction type | settlementDate | purchasePriceRatio |
| sale | 2023-05-30 | 1 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2740
Scenario: Verify that SALES request can NOT be placed on a loan which is not
DISBURSED yet
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -443,11 +410,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
403 error and "LOAN_NOT_ACTIVE" error message
| Transaction type | settlementDate | purchasePriceRatio |
| sale | 2023-05-30 | 1 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2741
Scenario: Verify that SALES request on a loan with PENDING ownership results
an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -466,11 +431,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
403 error and "ALREADY_PENDING" error message
| Transaction type | settlementDate | purchasePriceRatio |
| sale | 2023-05-30 | 1 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2742
Scenario: Verify that SALES with settlement date earlier than actual
business date results an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -480,11 +443,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
403 error and "SETTLEMENT_DATE_IN_THE_PAST" error message
| Transaction type | settlementDate | purchasePriceRatio |
| sale | 2023-04-21 | 1 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2743
Scenario: Verify that SALES with null owner external id results an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -494,11 +455,9 @@ Feature: Asset Externalization
Then Asset externalization SALES transaction with ownerExternalId = null
and the following data results a 400 error and "INVALID_REQUEST" error message
| settlementDate | purchasePriceRatio |
| 2023-05-21 | 1 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2744
Scenario: Verify that SALES with null purchase price ratio results an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -508,11 +467,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
400 error and "INVALID_REQUEST" error message
| Transaction type | settlementDate | purchasePriceRatio |
| sale | 2023-05-21 | |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2745
Scenario: Verify that SALES with null settlement date results an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -522,11 +479,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
400 error and "INVALID_REQUEST" error message
| Transaction type | settlementDate | purchasePriceRatio |
| sale | | 1 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2746
Scenario: Verify that BUYBACK request on a loan with PENDING BUYBACK
ownership result an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -563,11 +518,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
403 error and "BUYBACK_ALREADY_IN_PROGRESS_CANNOT_BE_BOUGHT" error message
| Transaction type | settlementDate | purchasePriceRatio |
| buyback | 2023-05-30 | |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2747
Scenario: Verify that BUYBACK with settlement date earlier than actual
business date results an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -594,11 +547,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
403 error and "SETTLEMENT_DATE_IN_THE_PAST" error message
| Transaction type | settlementDate | purchasePriceRatio |
| buyback | 2023-05-21 | |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2748
Scenario: Verify that BUYBACK with ownerExternalId=NULL can be placed, and
results a 200OK response
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -628,11 +579,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-21 | SALE |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
9999-12-31 | SALE |
| 2023-05-30 | 1 | BUYBACK | 2023-05-25 |
9999-12-31 | BUYBACK |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2749
Scenario: Verify that BUYBACK with purchasePriceRatio=NULL can be placed,
and results a 200OK response
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -664,11 +613,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-21 | SALE |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
9999-12-31 | SALE |
| 2023-05-30 | 1 | BUYBACK | 2023-05-25 |
9999-12-31 | BUYBACK |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2750
Scenario: Verify that SALES with null settlement date results an error
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -695,11 +642,9 @@ Feature: Asset Externalization
Then Asset externalization transaction with the following data results a
400 error and "INVALID_REQUEST" error message
| Transaction type | settlementDate | purchasePriceRatio |
| buyback | | |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2751 @AssetExternalizationJournalEntry
Scenario: Verify that Asset externalization SALES and BUYBACK has the
correct Journal entries: no other transactions
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -757,11 +702,9 @@ Feature: Asset Externalization
| glAccountType | glAccountCode | glAccountName | entryType | amount
|
| ASSET | 112601 | Loans Receivable | DEBIT | 1000.00
|
| ASSET | 112601 | Loans Receivable | CREDIT | 1000.00
|
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2752 @AssetExternalizationJournalEntry
Scenario: Verify that Asset externalization SALES and BUYBACK has the
correct Journal entries: fee applied before sale, and penalty applied before
buyback
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -834,11 +777,9 @@ Feature: Asset Externalization
| INCOME | 404007 | Fee Income | CREDIT |
20.00 |
| ASSET | 112601 | Loans Receivable | CREDIT |
1000.00 |
| ASSET | 112603 | Interest/Fee Receivable | CREDIT |
30.00 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2753 @AssetExternalizationJournalEntry
Scenario: Verify that Asset externalization SALES and BUYBACK has the
correct Journal entries: Repyment while status is ACTIVE
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -899,11 +840,9 @@ Feature: Asset Externalization
| ASSET | 112601 | Loans Receivable | CREDIT
| 200.00 |
| LIABILITY | 145023 | Suspense/Clearing account | DEBIT
| 200.00 |
| ASSET | 112601 | Loans Receivable | CREDIT
| 800.00 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2754 @AssetExternalizationJournalEntry
Scenario: Verify that Asset externalization SALES and BUYBACK has the
correct Journal entries: GOODWILL_CREDIT transaction while status is ACTIVE
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -964,11 +903,9 @@ Feature: Asset Externalization
| ASSET | 112601 | Loans Receivable | CREDIT |
200.00 |
| EXPENSE | 744003 | Goodwill Expense Account | DEBIT |
200.00 |
| ASSET | 112601 | Loans Receivable | CREDIT |
800.00 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2755 @AssetExternalizationJournalEntry
Scenario: Verify that Asset externalization SALES and BUYBACK has the
correct Journal entries: MERCHANT_ISSUED_REFUND transaction while status is
ACTIVE
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1029,11 +966,9 @@ Feature: Asset Externalization
| ASSET | 112601 | Loans Receivable | CREDIT
| 200.00 |
| LIABILITY | 145023 | Suspense/Clearing account | DEBIT
| 200.00 |
| ASSET | 112601 | Loans Receivable | CREDIT
| 800.00 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2756 @AssetExternalizationJournalEntry
Scenario: Verify that Asset externalization SALES and BUYBACK has the
correct Journal entries: PAYOUT_REFUND transaction while status is ACTIVE
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1094,11 +1029,9 @@ Feature: Asset Externalization
| ASSET | 112601 | Loans Receivable | CREDIT
| 200.00 |
| LIABILITY | 145023 | Suspense/Clearing account | DEBIT
| 200.00 |
| ASSET | 112601 | Loans Receivable | CREDIT
| 800.00 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2757 @AssetExternalizationJournalEntry
Scenario: Verify that Asset externalization SALES and BUYBACK has the
correct Journal entries: REPAYMENT_ADJUSTMENT_REFUND chargeback transaction
while status is ACTIVE
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1164,11 +1097,9 @@ Feature: Asset Externalization
| ASSET | 112601 | Loans Receivable | DEBIT
| 800.00 |
| LIABILITY | 145023 | Suspense/Clearing account | CREDIT
| 800.00 |
| ASSET | 112601 | Loans Receivable | CREDIT
| 800.00 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2758 @AssetExternalizationJournalEntry
Scenario: Verify that Asset externalization SALES and BUYBACK has the
correct Journal entries: CHARGE ADJUSTMENT transaction while status is ACTIVE
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1237,11 +1168,9 @@ Feature: Asset Externalization
| INCOME | 404007 | Fee Income | DEBIT |
100.00 |
| ASSET | 112601 | Loans Receivable | CREDIT |
1000.00 |
| ASSET | 112603 | Interest/Fee Receivable | CREDIT |
200.00 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2759
Scenario: Verify that LoanOwnershipTransferBusinessEvent and
LoanAccountSnapshotBusinessEvent is created with correct data
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1277,11 +1206,9 @@ Feature: Asset Externalization
| 2023-05-30 | 1 | BUYBACK | 2023-05-25 |
2023-05-30 | BUYBACK |
Then LoanOwnershipTransferBusinessEvent is created
Then LoanAccountSnapshotBusinessEvent is created
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2760
Scenario: Verify that LoanOwnershipTransferBusinessEvent and
LoanAccountSnapshotBusinessEvent is created with correct data for partial
repayment, fee, penalty
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1320,11 +1247,9 @@ Feature: Asset Externalization
| 2023-05-30 | 1 | BUYBACK | 2023-05-25 |
2023-05-30 | BUYBACK |
Then LoanOwnershipTransferBusinessEvent is created
Then LoanAccountSnapshotBusinessEvent is created
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2771
Scenario: Verify that SALE and BUYBACK can be cancelled in right order
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1361,11 +1286,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | BUYBACK | 2023-05-10 |
2023-05-10 |
| 2023-05-21 | 1 | CANCELLED | 2023-05-10 |
2023-05-10 |
| 2023-05-21 | 1 | CANCELLED | 2023-05-01 |
2023-05-10 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2772
Scenario: Verify that SALE can be cancelled
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1385,11 +1308,9 @@ Feature: Asset Externalization
| settlementDate | purchasePriceRatio | status | effectiveFrom |
effectiveTo |
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-10 |
| 2023-05-21 | 1 | CANCELLED | 2023-05-01 |
2023-05-10 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2773
Scenario: Verify that active SALE can not be cancelled
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1410,11 +1331,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-21 | SALE |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
9999-12-31 | SALE |
When Admin send "cancel" command on "SALE" transaction it will throw an
error
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2774
Scenario: Verify that Asset cannot be cancelled after SALE and BUYBACK is
completed
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1452,11 +1371,9 @@ Feature: Asset Externalization
| 2023-05-30 | 1 | BUYBACK | 2023-05-10 |
2023-05-30 | BUYBACK |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
2023-05-30 | SALE |
When Admin send "cancel" command on "SALE" transaction it will throw an
error
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2775
Scenario: Verify that SALE and BUYBACK can be cancelled in right order with
double cancel test
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1513,11 +1430,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | BUYBACK | 2023-05-10 |
2023-05-10 |
| 2023-05-21 | 1 | CANCELLED | 2023-05-10 |
2023-05-10 |
| 2023-05-21 | 1 | CANCELLED | 2023-05-01 |
2023-05-10 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2785
Scenario: Verify that when a loan with PENDING SALES is fully paid asset
transfer status will be DECLINED
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1539,11 +1454,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-15 | SALE |
| 2023-05-21 | 1 | DECLINED | 2023-05-15 |
2023-05-15 | SALE |
Then LoanOwnershipTransferBusinessEvent with transfer status: "DECLINED"
and transfer status reason "BALANCE_ZERO" is created
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2786
Scenario: Verify that when a loan with PENDING SALES is overpaid asset
transfer status will be DECLINED
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1565,11 +1478,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-15 | SALE |
| 2023-05-21 | 1 | DECLINED | 2023-05-15 |
2023-05-15 | SALE |
Then LoanOwnershipTransferBusinessEvent with transfer status: "DECLINED"
and transfer status reason "BALANCE_NEGATIVE" is created
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2787
Scenario: Verify that when a loan with PENDING BUYBACK is fully paid BUYBACK
transaction can be done successfully
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1607,11 +1518,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-21 | SALE |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
2023-05-25 | SALE |
| 2023-05-30 | 1 | BUYBACK | 2023-05-22 |
2023-05-25 | BUYBACK |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2788
Scenario: Verify that when a loan with PENDING BUYBACK is overpaid BUYBACK
transaction can be done successfully
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1649,11 +1558,9 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | PENDING | 2023-05-01 |
2023-05-21 | SALE |
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
2023-05-25 | SALE |
| 2023-05-30 | 1 | BUYBACK | 2023-05-22 |
2023-05-25 | BUYBACK |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C2811
Scenario: Verify that transaction and transaction adjustment events has the
proper external owner
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 May 2023"
@@ -1676,12 +1583,10 @@ Feature: Asset Externalization
| 2023-05-21 | 1 | ACTIVE | 2023-05-22 |
9999-12-31 | SALE |
And Customer makes "AUTOPAY" repayment on "22 May 2023" with 10 EUR
transaction amount and check external owner
When Customer adjust "1"th repayment on "22 May 2023" with amount "9" and
check external owner
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
@TestRailId:C3193
Scenario: Verify that Asset externalization SALES and BUYBACK has the
correct Journal entries: no other transactions - interest bearing loan
- Given Admin puts EXTERNAL_ASSET_OWNER_TRANSFER job into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "1 May 2023"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -1774,4 +1679,3 @@ Feature: Asset Externalization
| INCOME | 404000 | Interest Income | CREDIT |
0.33 |
| ASSET | 112603 | Interest/Fee Receivable | DEBIT |
0.33 |
| INCOME | 404000 | Interest Income | CREDIT |
0.33 |
- Then Admin removes EXTERNAL_ASSET_OWNER_TRANSFER job from
LOAN_CLOSE_OF_BUSINESS workflow
diff --git
a/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
b/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
index b406dd041..632bd2004 100644
---
a/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
+++
b/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature
@@ -1871,7 +1871,6 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
@TestRailId:C3226
Scenario: Verify interest recalculation in case of overdue installments: UC1
- 1st installment overdue, interest recalculation: daily, till preclose
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -1914,11 +1913,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 |
0.0 | 0.0 | 100.0 | false | false |
| 01 February 2024 | Accrual | 0.58 | 0.0 | 0.58 |
0.0 | 0.0 | 0.0 | false | false |
| 14 February 2024 | Accrual | 0.24 | 0.0 | 0.24 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3227
Scenario: Verify interest recalculation in case of overdue installments: UC2
- 1st installment overdue, interest recalculation: daily, till rest frequency
date
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -1961,11 +1958,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 |
0.0 | 0.0 | 100.0 | false | false |
| 01 February 2024 | Accrual | 0.58 | 0.0 | 0.58 |
0.0 | 0.0 | 0.0 | false | false |
| 14 February 2024 | Accrual | 0.24 | 0.0 | 0.24 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3228
Scenario: Verify interest recalculation in case of overdue installments: UC3
- 1st installment overdue, interest recalculation: same as repayment period,
till preclose
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2008,11 +2003,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 |
0.0 | 0.0 | 100.0 | false | false |
| 01 February 2024 | Accrual | 0.58 | 0.0 | 0.58 |
0.0 | 0.0 | 0.0 | false | false |
| 14 February 2024 | Accrual | 0.26 | 0.0 | 0.26 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3229
Scenario: Verify interest recalculation in case of overdue installments: UC4
- 1st installment overdue, interest recalculation: same as repayment period,
till rest frequency date
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2055,11 +2048,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 |
0.0 | 0.0 | 100.0 | false | false |
| 01 February 2024 | Accrual | 0.58 | 0.0 | 0.58 |
0.0 | 0.0 | 0.0 | false | false |
| 14 February 2024 | Accrual | 0.26 | 0.0 | 0.26 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3230
Scenario: Verify interest recalculation in case of overdue installments: UC5
- 1st and 2nd installment overdue, interest recalculation: daily, till preclose
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2104,11 +2095,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 01 March 2024 | Accrual | 0.09 | 0.0 | 0.09 |
0.0 | 0.0 | 0.0 | false | false |
| 09 March 2024 | Accrual | 0.12 | 0.0 | 0.12 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3231
Scenario: Verify interest recalculation in case of overdue installments: UC6
- 1st and 2nd installment overdue, interest recalculation: daily, till rest
frequency date
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2153,11 +2142,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 01 March 2024 | Accrual | 0.09 | 0.0 | 0.09 |
0.0 | 0.0 | 0.0 | false | false |
| 09 March 2024 | Accrual | 0.12 | 0.0 | 0.12 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3232
Scenario: Verify interest recalculation in case of overdue installments: UC7
- 1st and 2nd installment overdue, interest recalculation: same as repayment
period, till preclose
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2202,11 +2189,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 01 March 2024 | Accrual | 0.09 | 0.0 | 0.09 |
0.0 | 0.0 | 0.0 | false | false |
| 09 March 2024 | Accrual | 0.15 | 0.0 | 0.15 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3233
Scenario: Verify interest recalculation in case of overdue installments: UC8
- 1st and 2nd installment overdue, interest recalculation: same as repayment
period, till rest frequency date
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2251,11 +2236,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 01 March 2024 | Accrual | 0.09 | 0.0 | 0.09 |
0.0 | 0.0 | 0.0 | false | false |
| 09 March 2024 | Accrual | 0.15 | 0.0 | 0.15 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3234
Scenario: Verify interest recalculation in case of overdue installments: UC9
- 1st installment paid on due date, 2nd installment overdue, interest
recalculation: daily, till preclose
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2319,11 +2302,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 February 2024 | Accrual | 0.58 | 0.0 | 0.58 |
0.0 | 0.0 | 0.0 | false | false |
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 09 March 2024 | Accrual | 0.11 | 0.0 | 0.11 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3235
Scenario: Verify interest recalculation in case of overdue installments:
UC10 - 1st installment paid on due date, 2nd installment overdue, interest
recalculation: daily, till rest frequency date
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2387,11 +2368,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 February 2024 | Accrual | 0.58 | 0.0 | 0.58 |
0.0 | 0.0 | 0.0 | false | false |
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 09 March 2024 | Accrual | 0.11 | 0.0 | 0.11 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3236
Scenario: Verify interest recalculation in case of overdue installments:
UC11 - 1st installment paid on due date, 2nd installment overdue, interest
recalculation: same as repayment period, till preclose
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2455,11 +2434,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 February 2024 | Accrual | 0.58 | 0.0 | 0.58 |
0.0 | 0.0 | 0.0 | false | false |
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 09 March 2024 | Accrual | 0.13 | 0.0 | 0.13 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3237
Scenario: Verify interest recalculation in case of overdue installments:
UC12 - 1st installment paid on due date, 2nd installment overdue, interest
recalculation: same as repayment period, till rest frequency date
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2523,11 +2500,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 February 2024 | Accrual | 0.58 | 0.0 | 0.58 |
0.0 | 0.0 | 0.0 | false | false |
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 09 March 2024 | Accrual | 0.13 | 0.0 | 0.13 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3238
Scenario: Verify interest recalculation in case of overdue installments:
UC13 - 1st installment paid on due date, 2nd installment overdue with partial
late repayment, interest recalculation: daily, till preclose
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2612,11 +2587,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 05 March 2024 | Repayment | 10.0 | 10.0 | 0.0 |
0.0 | 0.0 | 73.57 | false | false |
| 09 March 2024 | Accrual | 0.11 | 0.0 | 0.11 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3239
Scenario: Verify interest recalculation in case of overdue installments:
UC14 - 1st installment paid on due date, 2nd installment overdue with partial
late repayment, interest recalculation: daily, till rest frequency date
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2701,11 +2674,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 05 March 2024 | Repayment | 10.0 | 10.0 | 0.0 |
0.0 | 0.0 | 73.57 | false | false |
| 09 March 2024 | Accrual | 0.11 | 0.0 | 0.11 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3240
Scenario: Verify interest recalculation in case of overdue installments:
UC15 - 1st installment paid on due date, 2nd installment overdue, interest
recalculation: same as repayment period, till preclose
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2790,11 +2761,9 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 05 March 2024 | Repayment | 10.0 | 10.0 | 0.0 |
0.0 | 0.0 | 73.57 | false | false |
| 09 March 2024 | Accrual | 0.13 | 0.0 | 0.13 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3241
Scenario: Verify interest recalculation in case of overdue installments:
UC16 - 1st installment paid on due date, 2nd installment overdue, interest
recalculation: same as repayment period, till rest frequency date
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -2879,7 +2848,6 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 March 2024 | Accrual | 0.49 | 0.0 | 0.49 |
0.0 | 0.0 | 0.0 | false | false |
| 05 March 2024 | Repayment | 10.0 | 10.0 | 0.0 |
0.0 | 0.0 | 73.57 | false | false |
| 09 March 2024 | Accrual | 0.13 | 0.0 | 0.13 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3244
Scenario: Verify support of interest rate calculation with frequency Whole
term configured for progressive loan
@@ -3266,7 +3234,6 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
# TODO unskip and check when PS-2076 and PS-2106 is done
@Skip @TestRailId:C3251
Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT
installment - UC1: 360/30, early repayment with amount less then due interest
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -3324,12 +3291,10 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 13 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
| 14 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
| 15 January 2024 | Repayment | 0.2 | 0.0 | 0.2 |
0.0 | 0.0 | 100.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
# TODO unskip and check when PS-2076 and PS-2106 is done
@Skip @TestRailId:C3252
Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT
installment - UC2: 360/30, early repayment with amount 1 cent more then due
interest
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -3387,12 +3352,10 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 13 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
| 14 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
| 15 January 2024 | Repayment | 0.27 | 0.01 | 0.26 |
0.0 | 0.0 | 99.99 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
# TODO unskip and check when PS-2076 and PS-2106 is done
@Skip @TestRailId:C3253
Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT
installment - UC3: 360/30, early repayment with less than EMI amount
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -3450,12 +3413,10 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 13 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
| 14 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
| 15 January 2024 | Repayment | 15.0 | 14.74 | 0.26 |
0.0 | 0.0 | 85.26 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
# TODO unskip and check when PS-2076 and PS-2106 is done
@Skip @TestRailId:C3254
Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT
installment - UC4: 360/30, early repayment with only 1 cent less than EMI amount
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -3511,12 +3472,10 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 13 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
| 14 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
| 15 January 2024 | Repayment | 17.0 | 16.74 | 0.26 |
0.0 | 0.0 | 83.26 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
# TODO unskip and check when PS-2076 and PS-2106 is done
@Skip @TestRailId:C3255
Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT
installment - UC5: 360/30, multiple early repayments for the same installment
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -3578,12 +3537,10 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 13 January 2024 | Accrual | 0.02 | 0.0 | 0.02 |
0.0 | 0.0 | 0.0 | false | false |
| 15 January 2024 | Repayment | 15.0 | 14.74 | 0.26 |
0.0 | 0.0 | 85.26 | false | false |
| 20 January 2024 | Repayment | 2.01 | 1.93 | 0.08 |
0.0 | 0.0 | 83.33 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
# TODO unskip and check when PS-2076 and PS-2106 is done
@Skip @TestRailId:C3256
Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT
installment - UC6: 360/30, early repayment with exact EMI amount
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -3639,12 +3596,10 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 13 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
| 14 January 2024 | Accrual | 0.01 | 0.0 | 0.01 |
0.0 | 0.0 | 0.0 | false | false |
| 15 January 2024 | Repayment | 17.01 | 16.75 | 0.26 |
0.0 | 0.0 | 83.25 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
# TODO unskip and check when PS-2076 and PS-2106 is done
@Skip @TestRailId:C3257
Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT
installment - UC7: 360/30, early repayment with twice than EMI amount
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -3689,12 +3644,10 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| Transaction date | Transaction Type | Amount | Principal | Interest |
Fees | Penalties | Loan Balance | Reverted | Replayed |
| 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 |
0.0 | 0.0 | 100.0 | false | false |
| 15 January 2024 | Repayment | 34.02 | 33.76 | 0.26 |
0.0 | 0.0 | 66.24 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
# TODO unskip and check when PS-2076 and PS-2106 is done
@Skip @TestRailId:C3258
Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT
installment - UC8: 360/30, preclose after early repayment
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -3744,13 +3697,11 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 |
0.0 | 0.0 | 100.0 | false | false |
| 15 January 2024 | Repayment | 17.01 | 16.75 | 0.26 |
0.0 | 0.0 | 83.25 | false | false |
| 20 January 2024 | Repayment | 83.33 | 83.25 | 0.08 |
0.0 | 0.0 | 0.0 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
# TODO unskip and check when PS-2076 and PS-2106 is done
# TODO is it till preclose or tillrestperiod?
@Skip @TestRailId:C3259
Scenario: Verify Interest recalculation - EARLY repayment, adjust NEXT
installment - UC9: 360/30, interest modification after early repayment
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE_PMT_ALLOC_1"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -3800,7 +3751,6 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| Transaction date | Transaction Type | Amount | Principal | Interest |
Fees | Penalties | Loan Balance | Reverted | Replayed |
| 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 |
0.0 | 0.0 | 100.0 | false | false |
| 15 January 2024 | Repayment | 17.01 | 16.75 | 0.26 |
0.0 | 0.0 | 83.25 | false | false |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3269
Scenario: UC1 - Single disbursement, full refund within first installment
period
@@ -4383,7 +4333,6 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
@TestRailId:C3288
Scenario: Verify the recalculated EMI after interest rate change on the
repayment schedule
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -4404,8 +4353,7 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
When Admin runs inline COB job for Loan
When Admin sets the business date to "02 February 2024"
When Admin runs inline COB job for Loan
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
- Then Loan Repayment schedule has 6 periods, with the following data for
periods:
+ Then Loan Repayment schedule has 6 periods, with the following data
for periods:
| Nr | Days | Date | Paid date | Balance of loan |
Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late
| Outstanding |
| | | 01 January 2024 | | 100.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
| 1 | 31 | 01 February 2024 | 01 February 2024 | 83.57 |
16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 0.0
| 0.0 |
@@ -4735,7 +4683,6 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
@TestRailId:C3297
Scenario: Verify the Loan reschedule - Interest modification - UC1: Interest
modification after early payment with Adjustment to NEXT installment
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -4785,8 +4732,7 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
When Admin runs inline COB job for Loan
When Admin sets the business date to "20 January 2024"
When Admin runs inline COB job for Loan
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
- Then Loan Repayment schedule has 6 periods, with the following data for
periods:
+ Then Loan Repayment schedule has 6 periods, with the following data
for periods:
| Nr | Days | Date | Paid date | Balance of loan |
Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late
| Outstanding |
| | | 01 January 2024 | | 100.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
| 1 | 31 | 01 February 2024 | 15 January 2024 | 83.25 |
16.75 | 0.26 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0
| 0.0 |
@@ -4807,7 +4753,6 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
@TestRailId:C3298
Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest
modification after early partial payment with Adjustment to NEXT installment
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -4857,8 +4802,7 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
When Admin runs inline COB job for Loan
When Admin sets the business date to "20 January 2024"
When Admin runs inline COB job for Loan
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
- Then Loan Repayment schedule has 6 periods, with the following data for
periods:
+ Then Loan Repayment schedule has 6 periods, with the following data
for periods:
| Nr | Days | Date | Paid date | Balance of loan |
Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late
| Outstanding |
| | | 01 January 2024 | | 100.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
| 1 | 31 | 01 February 2024 | | 83.24 | 16.76
| 0.25 | 0.0 | 0.0 | 17.01 | 17.0 | 17.0 | 0.0 | 0.01
|
@@ -4879,7 +4823,6 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
@TestRailId:C3311
Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest
modification after early partial payment with Adjustment to LAST installment
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "LAST_INSTALLMENT" future
installment allocation rule
@@ -4930,8 +4873,7 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
When Admin runs inline COB job for Loan
When Admin sets the business date to "20 January 2024"
When Admin runs inline COB job for Loan
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
- Then Loan Repayment schedule has 6 periods, with the following data for
periods:
+ Then Loan Repayment schedule has 6 periods, with the following data
for periods:
| Nr | Days | Date | Paid date | Balance of loan |
Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late
| Outstanding |
| | | 01 January 2024 | | 100.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
| 1 | 31 | 01 February 2024 | | 83.64 |
16.36 | 0.44 | 0.0 | 0.0 | 16.8 | 0.0 | 0.0 | 0.0
| 16.8 |
@@ -4953,7 +4895,6 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
@TestRailId:C3299
Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest
modification after first installment with Adjustment to NEXT installment
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 January 2024"
When Admin creates a client with random data
When Admin set
"LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE"
loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future
installment allocation rule
@@ -5004,7 +4945,6 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
When Admin runs inline COB job for Loan
When Admin sets the business date to "16 February 2024"
When Admin runs inline COB job for Loan
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
Then Loan Repayment schedule has 6 periods, with the following data for
periods:
| Nr | Days | Date | Paid date | Balance of loan |
Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late
| Outstanding |
| | | 01 January 2024 | | 100.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
@@ -5164,4 +5104,4 @@ Feature: EMI calculation and repayment schedule checks
for interest bearing loan
| 22 January 2021 | Interest Refund | 5.7 | 0.0 | 5.7
| 0.0 | 0.0 | 0.0 | true | false |
| 22 January 2021 | Accrual | 5.7 | 0.0 | 5.7
| 0.0 | 0.0 | 0.0 | false | false |
Then In Loan Transactions the "2"th Transaction has Transaction
type="Merchant Issued Refund" and is reverted
- Then In Loan Transactions the "3"th Transaction has Transaction
type="Interest Refund" and is reverted
\ No newline at end of file
+ Then In Loan Transactions the "3"th Transaction has Transaction
type="Interest Refund" and is reverted
diff --git a/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
b/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
index 4ff7af13d..e07a9f224 100644
--- a/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
+++ b/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature
@@ -6062,7 +6062,6 @@ Feature: Loan
And Admin successfully approves the loan on "1 January 2024" with "100"
amount and expected disbursement date on "1 January 2024"
When Admin successfully disburse the loan on "1 January 2024" with "100"
EUR transaction amount
When Admin sets the business date to "15 July 2024"
- When Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin runs inline COB job for Loan
Then Loan Repayment schedule has 6 periods, with the following data for
periods:
| Nr | Days | Date | Paid date | Balance of loan | Principal
due | Interest | Fees | Penalties | Due | Paid | In advance | Late |
Outstanding |
@@ -6073,7 +6072,6 @@ Feature: Loan
| 4 | 30 | 01 May 2024 | | 34.28 | 16.43
| 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
| 5 | 31 | 01 June 2024 | | 17.85 | 16.43
| 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
| 6 | 30 | 01 July 2024 | | 0.0 | 17.85
| 0.58 | 0.0 | 0.0 | 18.43 | 0.0 | 0.0 | 0.0 | 18.43
|
- When Admin removes "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
Scenario: Interest recalculation - S2 2 overdue
Given Global configuration "enable-business-date" is enabled
@@ -6085,7 +6083,6 @@ Feature: Loan
And Admin successfully approves the loan on "1 January 2024" with "100"
amount and expected disbursement date on "1 January 2024"
When Admin successfully disburse the loan on "1 January 2024" with "100"
EUR transaction amount
When Admin sets the business date to "10 March 2024"
- When Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin runs inline COB job for Loan
Then Loan Repayment schedule has 6 periods, with the following data for
periods:
| Nr | Days | Date | Paid date | Balance of loan | Principal
due | Interest | Fees | Penalties | Due | Paid | In advance | Late |
Outstanding |
@@ -6096,7 +6093,6 @@ Feature: Loan
| 4 | 30 | 01 May 2024 | | 33.87 | 16.71
| 0.3 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
| 5 | 31 | 01 June 2024 | | 17.06 | 16.81
| 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01
|
| 6 | 30 | 01 July 2024 | | 0.0 | 17.06
| 0.1 | 0.0 | 0.0 | 17.16 | 0.0 | 0.0 | 0.0 | 17.16
|
- When Admin removes "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
Scenario: Interest recalculation - S3 1 paid, 1 overdue
Given Global configuration "enable-business-date" is enabled
@@ -6110,7 +6106,6 @@ Feature: Loan
When Admin sets the business date to "1 February 2024"
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01
EUR transaction amount
When Admin sets the business date to "10 March 2024"
- When Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin runs inline COB job for Loan
Then Loan Repayment schedule has 6 periods, with the following data for
periods:
| Nr | Days | Date | Paid date | Balance of loan |
Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late
| Outstanding |
@@ -6121,7 +6116,6 @@ Feature: Loan
| 4 | 30 | 01 May 2024 | | 33.74 |
16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
| 5 | 31 | 01 June 2024 | | 16.93 |
16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0
| 17.01 |
| 6 | 30 | 01 July 2024 | | 0.0 |
16.93 | 0.1 | 0.0 | 0.0 | 17.03 | 0.0 | 0.0 | 0.0
| 17.03 |
- When Admin removes "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
Scenario: Loan Details Emi Amount Variations - AssociationsAll
Given Global configuration
"is-interest-to-be-recovered-first-when-greater-than-emi" is enabled
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 0f5cad26c..20b8eb89c 100644
---
a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature
+++
b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature
@@ -1778,12 +1778,12 @@ Feature: LoanAccrualActivity
| Nr | Days | Date | Paid date | Balance of loan | Principal
due | Interest | Fees | Penalties | Due | Paid | In advance | Late |
Outstanding |
| | | 01 January 2024 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
| 1 | 5 | 06 January 2024 | | 750.64 | 249.36
| 1.64 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
- | 2 | 5 | 11 January 2024 | | 500.87 | 249.77
| 1.23 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
- | 3 | 5 | 16 January 2024 | | 250.69 | 250.18
| 0.82 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
- | 4 | 5 | 21 January 2024 | | 0.0 | 250.69
| 0.41 | 0.0 | 0.0 | 251.1 | 0.0 | 0.0 | 0.0 | 251.1
|
+ | 2 | 5 | 11 January 2024 | | 500.96 | 249.68
| 1.32 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
+ | 3 | 5 | 16 January 2024 | | 250.78 | 250.18
| 0.82 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
+ | 4 | 5 | 21 January 2024 | | 0.0 | 250.78
| 0.41 | 0.0 | 0.0 | 251.19| 0.0 | 0.0 | 0.0 | 251.19
|
Then Loan Repayment schedule has the following data in Total row:
| Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
- | 1000.0 | 4.1 | 0.0 | 0.0 | 1004.1 | 0.0 | 0.0
| 0.0 | 1004.1 |
+ | 1000.0 | 4.19 | 0.0 | 0.0 | 1004.19| 0.0 | 0.0
| 0.0 | 1004.19 |
Then Loan Transactions tab has the following data:
| Transaction date | Transaction Type | Amount | Principal | Interest |
Fees | Penalties | Loan Balance | Reverted | Replayed |
| 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 |
0.0 | 0.0 | 1000.0 | false | false |
@@ -1866,12 +1866,12 @@ Feature: LoanAccrualActivity
| Nr | Days | Date | Paid date | Balance of loan | Principal
due | Interest | Fees | Penalties | Due | Paid | In advance | Late |
Outstanding |
| | | 01 January 2024 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
| 1 | 5 | 06 January 2024 | | 750.5 | 249.5
| 1.5 | 0.0 | 0.0 | 251.0 | 150.0 | 150.0 | 0.0 | 101.0
|
- | 2 | 5 | 11 January 2024 | | 500.73 | 249.77
| 1.23 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
- | 3 | 5 | 16 January 2024 | | 250.55 | 250.18
| 0.82 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
- | 4 | 5 | 21 January 2024 | | 0.0 | 250.55
| 0.41 | 0.0 | 0.0 | 250.96 | 0.0 | 0.0 | 0.0 | 250.96
|
+ | 2 | 5 | 11 January 2024 | | 500.77 | 249.73
| 1.27 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
+ | 3 | 5 | 16 January 2024 | | 250.59 | 250.18
| 0.82 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
+ | 4 | 5 | 21 January 2024 | | 0.0 | 250.59
| 0.41 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
Then Loan Repayment schedule has the following data in Total row:
| Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
- | 1000.0 | 3.96 | 0.0 | 0.0 | 1003.96 | 150.0 | 150.0
| 0.0 | 853.96 |
+ | 1000.0 | 4.0 | 0.0 | 0.0 | 1004.0 | 150.0 | 150.0
| 0.0 | 854.0 |
Then Loan Transactions tab has the following data:
| Transaction date | Transaction Type | Amount | Principal | Interest |
Fees | Penalties | Loan Balance | Reverted | Replayed |
| 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 |
0.0 | 0.0 | 1000.0 | false | false |
@@ -1928,12 +1928,12 @@ Feature: LoanAccrualActivity
| Nr | Days | Date | Paid date | Balance of loan | Principal
due | Interest | Fees | Penalties | Due | Paid | In advance | Late |
Outstanding |
| | | 01 January 2024 | | 1000.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
| 1 | 5 | 06 January 2024 | | 750.5 | 249.5
| 1.5 | 0.0 | 0.0 | 251.0 | 150.0 | 150.0 | 0.0 | 101.0
|
- | 2 | 5 | 11 January 2024 | | 500.73 | 249.77
| 1.23 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
- | 3 | 5 | 16 January 2024 | | 250.55 | 250.18
| 0.82 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
- | 4 | 5 | 21 January 2024 | | 0.0 | 250.55
| 0.41 | 0.0 | 0.0 | 250.96 | 0.0 | 0.0 | 0.0 | 250.96
|
+ | 2 | 5 | 11 January 2024 | | 500.77 | 249.73
| 1.27 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
+ | 3 | 5 | 16 January 2024 | | 250.59 | 250.18
| 0.82 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
+ | 4 | 5 | 21 January 2024 | | 0.0 | 250.59
| 0.41 | 0.0 | 0.0 | 251.0 | 0.0 | 0.0 | 0.0 | 251.0
|
Then Loan Repayment schedule has the following data in Total row:
| Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
- | 1000.0 | 3.96 | 0.0 | 0.0 | 1003.96 | 150.0 | 150.0
| 0.0 | 853.96 |
+ | 1000.0 | 4.0 | 0.0 | 0.0 | 1004.0 | 150.0 | 150.0
| 0.0 | 854.0 |
Then Loan Transactions tab has the following data:
| Transaction date | Transaction Type | Amount | Principal | Interest |
Fees | Penalties | Loan Balance | Reverted | Replayed |
| 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 |
0.0 | 0.0 | 1000.0 | false | false |
diff --git
a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualTransaction.feature
b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualTransaction.feature
index 0c95d1a03..71a8415ab 100644
---
a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualTransaction.feature
+++
b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualTransaction.feature
@@ -916,16 +916,16 @@ Feature: LoanAccrualTransaction
| Nr | Days | Date | Paid date | Balance of loan | Principal
due | Interest | Fees | Penalties | Due | Paid | In advance | Late |
Outstanding |
| | | 05 April 2024 | | 500.0 |
| | 0.0 | | 0.0 | 0.0 | | |
|
| 1 | 15 | 20 April 2024 | | 334.47 | 165.53
| 2.47 | 0.0 | 0.0 | 168.0 | 0.0 | 0.0 | 0.0 | 168.0
|
- | 2 | 15 | 05 May 2024 | | 168.12 | 166.35
| 1.65 | 0.0 | 0.0 | 168.0 | 0.0 | 0.0 | 0.0 | 168.0
|
- | 3 | 15 | 20 May 2024 | | 0.0 | 168.12
| 0.83 | 0.0 | 0.0 | 168.95 | 0.0 | 0.0 | 0.0 | 168.95
|
+ | 2 | 15 | 05 May 2024 | | 168.94 | 165.53
| 2.47 | 0.0 | 0.0 | 168.0 | 0.0 | 0.0 | 0.0 | 168.0
|
+ | 3 | 15 | 20 May 2024 | | 0.0 | 168.94
| 0.83 | 0.0 | 0.0 | 169.77 | 0.0 | 0.0 | 0.0 | 169.77
|
Then Loan Transactions tab has the following data:
| Transaction date | Transaction Type | Amount | Principal | Interest |
Fees | Penalties | Loan Balance |
| 05 April 2024 | Disbursement | 500.0 | 0.0 | 0.0 |
0.0 | 0.0 | 500.0 |
- | 24 April 2024 | Accrual | 2.47 | 0.0 | 2.47 |
0.0 | 0.0 | 0.0 |
- | 24 April 2024 | Accrual | 0.44 | 0.0 | 0.44 |
0.0 | 0.0 | 0.0 |
+ | 24 April 2024 | Accrual | 0.66 | 0.0 | 0.66 |
0.0 | 0.0 | 0.0 |
+ | 25 April 2024 | Accrual | 2.47 | 0.0 | 2.47 |
0.0 | 0.0 | 0.0 |
Then Loan Repayment schedule has the following data in Total row:
| Principal due | Interest | Fees | Penalties | Due | Paid | In
advance | Late | Outstanding |
- | 500.0 | 4.95 | 0.0 | 0.0 | 504.95 | 0.0 | 0.0
| 0.0 | 504.95 |
+ | 500.0 | 5.77 | 0.0 | 0.0 | 505.77 | 0.0 | 0.0
| 0.0 | 505.77 |
When Admin sets the business date to "26 April 2024"
And Admin successfully disburse the loan on "26 April 2024" with "500" EUR
transaction amount
Then Loan Repayment schedule has 3 periods, with the following data for
periods:
@@ -938,7 +938,7 @@ Feature: LoanAccrualTransaction
Then Loan Transactions tab has the following data:
| Transaction date | Transaction Type | Amount | Principal | Interest |
Fees | Penalties | Loan Balance |
| 05 April 2024 | Disbursement | 500.0 | 0.0 | 0.0 |
0.0 | 0.0 | 500.0 |
- | 24 April 2024 | Accrual | 1.05 | 0.0 | 1.05 |
0.0 | 0.0 | 0.0 |
+ | 25 April 2024 | Accrual | 2.47 | 0.0 | 2.47 |
0.0 | 0.0 | 0.0 |
| 26 April 2024 | Disbursement | 500.0 | 0.0 | 0.0 |
0.0 | 0.0 | 1000.0 |
| 26 April 2024 | Accrual | 2.47 | 0.0 | 2.47 |
0.0 | 0.0 | 0.0 |
Then Loan Repayment schedule has the following data in Total row:
diff --git
a/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
b/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
index 2e620e887..78fb7bfd3 100644
---
a/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
+++
b/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature
@@ -3501,7 +3501,6 @@ Feature: LoanRepayment
@TestRailId:C3224
Scenario: Verify that interest recalculation works properly when triggered
by COB
- Given Admin puts "LOAN_INTEREST_RECALCULATION" business step into
LOAN_CLOSE_OF_BUSINESS workflow
When Admin sets the business date to "01 April 2024"
When Admin creates a client with random data
When Admin creates a fully customized loan with the following data:
@@ -3549,7 +3548,6 @@ Feature: LoanRepayment
| Transaction date | Transaction Type | Amount | Principal | Interest |
Fees | Penalties | Loan Balance |
| 05 April 2024 | Disbursement | 500.0 | 0.0 | 0.0 |
0.0 | 0.0 | 500.0 |
| 20 April 2024 | Accrual | 2.47 | 0.0 | 2.47 |
0.0 | 0.0 | 0.0 |
- Then Admin sets back LOAN_CLOSE_OF_BUSINESS workflow to its initial state
@TestRailId:C3225
Scenario: Verify that payment allocation is correct in case of fee charged
on an OVERPAID Loan and payment is backdated
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java
index eb5d81c1b..cfae68f35 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/OkHttp3Config.java
@@ -22,6 +22,7 @@ package org.apache.fineract.infrastructure.core.config;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
+import java.time.Duration;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
@@ -41,7 +42,10 @@ public class OkHttp3Config {
@Bean
public OkHttpClient okHttpClient() throws Exception {
- var okBuilder = new OkHttpClient.Builder();
+ var okBuilder = new OkHttpClient.Builder()//
+
.connectTimeout(Duration.ofSeconds(fineractProperties.getClientConnectTimeout()))//
+
.readTimeout(Duration.ofSeconds(fineractProperties.getClientReadTimeout()))//
+
.writeTimeout(Duration.ofSeconds(fineractProperties.getClientWriteTimeout()));
//
if (Boolean.TRUE.equals(fineractProperties.getInsecureHttpClient())) {
final X509TrustManager insecureX509TrustManager = new
X509TrustManager() {
diff --git a/fineract-provider/src/main/resources/application.properties
b/fineract-provider/src/main/resources/application.properties
index 877b05ba9..2d5cbbafd 100644
--- a/fineract-provider/src/main/resources/application.properties
+++ b/fineract-provider/src/main/resources/application.properties
@@ -181,6 +181,9 @@
fineract.sampling.resetPeriodSec=${FINERACT_SAMPLING_RESET_PERIOD_IN_SEC:60}
fineract.module.investor.enabled=${FINERACT_MODULE_INVESTOR_ENABLED:true}
fineract.insecure-http-client=${FINERACT_INSECURE_HTTP_CLIENT:true}
+fineract.client-connect-timeout=${FINERACT_CLIENT_CONNECT_TIMEOUT:30}
+fineract.client-read-timeout=${FINERACT_CLIENT_READ_TIMEOUT:30}
+fineract.client-write-timeout=${FINERACT_CLIENT_WRITE_TIMEOUT:30}
# sql validation
diff --git a/fineract-provider/src/test/resources/application-test.properties
b/fineract-provider/src/test/resources/application-test.properties
index 56ee77356..243d4d36c 100644
--- a/fineract-provider/src/test/resources/application-test.properties
+++ b/fineract-provider/src/test/resources/application-test.properties
@@ -274,3 +274,7 @@
resilience4j.retry.instances.postInterest.exponential-backoff-multiplier=2
resilience4j.retry.instances.postInterest.retryExceptions=org.springframework.dao.CannotAcquireLockException,org.springframework.orm.ObjectOptimisticLockingFailureException
spring.cloud.aws.region.static=eu-central-1
+fineract.insecure-http-client=true
+fineract.client-connect-timeout=30
+fineract.client-read-timeout=30
+fineract.client-write-timeout=30