FINERACT-2070: COB business step order

This commit is contained in:
Adam Saghy
2024-11-24 17:30:32 +01:00
parent 34b165aa0e
commit 0c7ef324b9
20 changed files with 87 additions and 419 deletions
@@ -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;
@@ -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;
}
@@ -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();
}
}
@@ -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));
}
}
@@ -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);
}
}
@@ -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();
}
}
@@ -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();
}
}
@@ -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));
}
}
@@ -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";
@@ -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}
@@ -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
@@ -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
@@ -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
Then In Loan Transactions the "3"th Transaction has Transaction type="Interest Refund" and is reverted
@@ -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
@@ -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 |
@@ -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:
@@ -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
@@ -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() {
@@ -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
@@ -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