This is an automated email from the ASF dual-hosted git repository.
adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new 2620c61afa FINERACT-2418: add originator global config
2620c61afa is described below
commit 2620c61afaf5bcd8cbc6debf4c7723828b942f26
Author: Attila Budai <[email protected]>
AuthorDate: Tue Feb 3 15:30:50 2026 +0100
FINERACT-2418: add originator global config
---
.../api/GlobalConfigurationConstants.java | 1 +
.../loanorigination/module-changelog-master.xml | 1 +
.../0004_add_global_config_originator_creation.xml | 44 ++++++++++++++++++++++
.../integrationtests/GlobalConfigurationTest.java | 31 +++++++++++++++
.../common/GlobalConfigurationHelper.java | 8 ++++
5 files changed, 85 insertions(+)
diff --git
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationConstants.java
b/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationConstants.java
index 979eea042c..b41bf8a90f 100644
---
a/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationConstants.java
+++
b/fineract-core/src/main/java/org/apache/fineract/infrastructure/configuration/api/GlobalConfigurationConstants.java
@@ -79,6 +79,7 @@ public final class GlobalConfigurationConstants {
public static final String
ASSET_OWNER_TRANSFER_OUTSTANDING_INTEREST_CALCULATION_STRATEGY =
"outstanding-interest-calculation-strategy-for-external-asset-transfer";
public static final String
ALLOWED_LOAN_STATUSES_FOR_EXTERNAL_ASSET_TRANSFER =
"allowed-loan-statuses-for-external-asset-transfer";
public static final String
ALLOWED_LOAN_STATUSES_OF_DELAYED_SETTLEMENT_FOR_EXTERNAL_ASSET_TRANSFER =
"allowed-loan-statuses-of-delayed-settlement-for-external-asset-transfer";
+ public static final String
ENABLE_ORIGINATOR_CREATION_DURING_LOAN_APPLICATION =
"enable-originator-creation-during-loan-application";
private GlobalConfigurationConstants() {}
}
diff --git
a/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/module-changelog-master.xml
b/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/module-changelog-master.xml
index 0aa875a3fe..b2e74e5084 100644
---
a/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/module-changelog-master.xml
+++
b/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/module-changelog-master.xml
@@ -25,4 +25,5 @@
<include relativeToChangelogFile="true"
file="parts/0001_initial_schema.xml"/>
<include relativeToChangelogFile="true" file="parts/0002_permissions.xml"/>
<include relativeToChangelogFile="true"
file="parts/0003_mapping_permissions.xml"/>
+ <include relativeToChangelogFile="true"
file="parts/0004_add_global_config_originator_creation.xml"/>
</databaseChangeLog>
diff --git
a/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/parts/0004_add_global_config_originator_creation.xml
b/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/parts/0004_add_global_config_originator_creation.xml
new file mode 100644
index 0000000000..79a87679d2
--- /dev/null
+++
b/fineract-loan-origination/src/main/resources/db/changelog/tenant/module/loanorigination/parts/0004_add_global_config_originator_creation.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
+
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.3.xsd">
+ <changeSet author="fineract" id="1" context="postgresql">
+ <sql>
+ SELECT SETVAL('c_configuration_id_seq', COALESCE(MAX(id), 0)+1,
false)
+ FROM c_configuration;
+ </sql>
+ </changeSet>
+ <changeSet author="fineract" id="2">
+ <insert tableName="c_configuration">
+ <column name="name"
value="enable-originator-creation-during-loan-application"/>
+ <column name="value"/>
+ <column name="date_value"/>
+ <column name="string_value"/>
+ <column name="enabled" valueBoolean="false"/>
+ <column name="is_trap_door" valueBoolean="false"/>
+ <column name="description"
+ value="When enabled, allows creating new loan originators
on-the-fly during loan application if the provided externalId does not exist in
the registry"/>
+ </insert>
+ </changeSet>
+</databaseChangeLog>
diff --git
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java
index a4e0f702e8..c0ddce87c9 100644
---
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java
+++
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/GlobalConfigurationTest.java
@@ -125,4 +125,35 @@ public class GlobalConfigurationTest {
assertEquals(403, exception.getResponse().code());
assertTrue(exception.getMessage().contains("error.msg.password.reset.days.value.must.be.greater.than.zero"));
}
+
+ @Test
+ public void testOriginatorCreationConfigurationExists() {
+ String configName =
GlobalConfigurationConstants.ENABLE_ORIGINATOR_CREATION_DURING_LOAN_APPLICATION;
+ GlobalConfigurationPropertyData config =
globalConfigurationHelper.getGlobalConfigurationByName(configName);
+
+ Assertions.assertNotNull(config, "Configuration should exist");
+ assertEquals(configName, config.getName(), "Configuration name should
match");
+ assertEquals(false, config.getEnabled(), "Configuration should be
disabled by default");
+ assertEquals(false, config.getTrapDoor(), "Configuration should not be
a trap door");
+ }
+
+ @Test
+ public void testOriginatorCreationConfigurationCanBeEnabled() {
+ String configName =
GlobalConfigurationConstants.ENABLE_ORIGINATOR_CREATION_DURING_LOAN_APPLICATION;
+ GlobalConfigurationPropertyData config =
globalConfigurationHelper.getGlobalConfigurationByName(configName);
+ Assertions.assertNotNull(config);
+
+ try {
+ globalConfigurationHelper.updateGlobalConfiguration(configName,
new PutGlobalConfigurationsRequest().enabled(true));
+ GlobalConfigurationPropertyData enabledConfig =
globalConfigurationHelper.getGlobalConfigurationByName(configName);
+ assertEquals(true, enabledConfig.getEnabled(), "Configuration
should be enabled after update");
+
+ globalConfigurationHelper.updateGlobalConfiguration(configName,
new PutGlobalConfigurationsRequest().enabled(false));
+ GlobalConfigurationPropertyData disabledConfig =
globalConfigurationHelper.getGlobalConfigurationByName(configName);
+ assertEquals(false, disabledConfig.getEnabled(), "Configuration
should be disabled after update");
+ } finally {
+ globalConfigurationHelper.updateGlobalConfiguration(configName,
+ new
PutGlobalConfigurationsRequest().enabled(config.getEnabled()));
+ }
+ }
}
diff --git
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
index 831ae45fc7..10f3290aa3 100644
---
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
+++
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/GlobalConfigurationHelper.java
@@ -585,6 +585,14 @@ public class GlobalConfigurationHelper {
"ACTIVE,TRANSFER_IN_PROGRESS,TRANSFER_ON_HOLD,OVERPAID,CLOSED_OBLIGATIONS_MET");
defaults.add(allowedLoanStatusesForDelayedSettlementExternalAssetTransfer);
+ HashMap<String, Object> enableOriginatorCreationDuringLoanApplication
= new HashMap<>();
+ enableOriginatorCreationDuringLoanApplication.put("name",
+
GlobalConfigurationConstants.ENABLE_ORIGINATOR_CREATION_DURING_LOAN_APPLICATION);
+ enableOriginatorCreationDuringLoanApplication.put("value", 0L);
+ enableOriginatorCreationDuringLoanApplication.put("enabled", false);
+ enableOriginatorCreationDuringLoanApplication.put("trapDoor", false);
+ defaults.add(enableOriginatorCreationDuringLoanApplication);
+
return defaults;
}