Update client KYC and AML changes
Fineract Build & Cucumber tests (without E2E tests) / verify (main, cucumber) (push) Canceled after 0s
Fineract Build & Cucumber tests (without E2E tests) / verify (progressive-loan, build-progressive-loan) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 8 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 9 of 10) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MariaDB / test (test-core-1) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MariaDB / test (test-core-2) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MariaDB / test (test-core-3) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MariaDB / test (test-core-4) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MariaDB / test (test-core-5) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MySQL / test (test-core-1) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MySQL / test (test-core-2) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MySQL / test (test-core-3) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MySQL / test (test-core-4) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - MySQL / test (test-core-5) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - PostgreSQL / test (test-core-1) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - PostgreSQL / test (test-core-2) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - PostgreSQL / test (test-core-3) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - PostgreSQL / test (test-core-4) (push) Canceled after 0s
Fineract Cargo & Unit- & Integration tests - PostgreSQL / test (test-core-5) (push) Canceled after 0s
Fineract Build & Cucumber tests (without E2E tests) / verify (main, build-core) (push) Canceled after 0s
Fineract Docker Builds / build (false, docker-compose-postgresql.yml, postgresql) (push) Canceled after 0s
Fineract Docker Builds / build (true, docker-compose.yml, mariadb) (push) Canceled after 0s
Fineract Documentation build / build (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 1 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 10 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 2 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 3 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 4 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 5 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 6 of 10) (push) Canceled after 0s
Fineract E2E Tests / E2E Tests (Shard 7 of 10) (push) Canceled after 0s
Fineract Liquibase Only mode - PostgreSQL / test (push) Canceled after 0s
Fineract Messaging Smoke Tests / Smoke Test with ActiveMQ (push) Canceled after 0s
Fineract Messaging Smoke Tests / Smoke Test with Kafka (push) Canceled after 0s

This commit is contained in:
Anshul Rathore
2026-08-14 12:54:43 +05:30
parent a8ca7dd948
commit a2fa8688ae
6 changed files with 101 additions and 47 deletions
@@ -159,6 +159,13 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
this.clientNonPersonRepository.delete(clientNonPerson);
}
// Safely cascade-delete child records that have foreign keys pointing to this client
this.jdbcTemplate.update("delete from m_client_identifier where client_id = ?", clientId);
this.jdbcTemplate.update("delete from m_family_members where client_id = ?", clientId);
this.jdbcTemplate.update("delete from m_client_address where client_id = ?", clientId);
this.jdbcTemplate.update("delete from m_address where client_id = ?", clientId);
this.jdbcTemplate.update("delete from m_client_kyc where client_id = ?", clientId);
this.clientRepository.delete(client);
this.clientRepository.flush();
return new CommandProcessingResultBuilder() //
@@ -46,7 +46,7 @@ fineract.security.oauth2.client.registrations.frontend-client.require-authorizat
fineract.tenant.host=${FINERACT_DEFAULT_TENANTDB_HOSTNAME:localhost}
fineract.tenant.port=${FINERACT_DEFAULT_TENANTDB_PORT:5432}
fineract.tenant.username=${FINERACT_DEFAULT_TENANTDB_UID:postgres}
fineract.tenant.password=${FINERACT_DEFAULT_TENANTDB_PWD:Keshav@898966}
fineract.tenant.password=${FINERACT_DEFAULT_TENANTDB_PWD:anshul@9009}
fineract.tenant.parameters=${FINERACT_DEFAULT_TENANTDB_CONN_PARAMS:}
fineract.tenant.timezone=${FINERACT_DEFAULT_TENANTDB_TIMEZONE:Asia/Kolkata}
fineract.tenant.identifier=${FINERACT_DEFAULT_TENANTDB_IDENTIFIER:default}
@@ -407,7 +407,7 @@ server.tomcat.mbeanregistry.enabled=${FINERACT_SERVER_TOMCAT_MBEANREGISTRY_ENABL
spring.datasource.hikari.driverClassName=${FINERACT_HIKARI_DRIVER_SOURCE_CLASS_NAME:org.postgresql.Driver}
spring.datasource.hikari.jdbcUrl=${FINERACT_HIKARI_JDBC_URL:jdbc:postgresql://localhost:5432/fineract_tenants}
spring.datasource.hikari.username=${FINERACT_HIKARI_USERNAME:postgres}
spring.datasource.hikari.password=${FINERACT_HIKARI_PASSWORD:Keshav@898966}
spring.datasource.hikari.password=${FINERACT_HIKARI_PASSWORD:anshul@9009}
spring.datasource.hikari.minimumIdle=${FINERACT_HIKARI_MINIMUM_IDLE:3}
spring.datasource.hikari.maximumPoolSize=${FINERACT_HIKARI_MAXIMUM_POOL_SIZE:10}
spring.datasource.hikari.idleTimeout=${FINERACT_HIKARI_IDLE_TIMEOUT:60000}
@@ -23,24 +23,31 @@
<!-- Dedicated income GL account for charges/commission collected on sponsor bank DD issuance,
as a child of the existing "INCOME HEAD" account (gl_code 10), matching the pattern
already used by "INCOME FROM LOAN" (gl_code 10.1) / "INCOME FROM ALL" (gl_code 10.2). -->
already used by "INCOME FROM LOAN" (gl_code 10.1) / "INCOME FROM ALL" (gl_code 10.2).
parent_id is resolved dynamically via subquery (not hardcoded) because the numeric id of
the "INCOME HEAD" row is not guaranteed to be the same across environments/fresh DBs. -->
<changeSet author="fineract" id="0348-1-insert-dd-charges-income-gl-account">
<!-- Accept checksum from older DBs that ran the hardcoded parent_id=25 version before this file was fixed -->
<validCheckSum>9:c2bc9949d0b0ab1972d1de1fb0131bd5</validCheckSum>
<preConditions onFail="MARK_RAN">
<not>
<sqlCheck expectedResult="1">select count(*) from acc_gl_account where gl_code = '10.3'</sqlCheck>
</not>
</preConditions>
<insert tableName="acc_gl_account">
<column name="name" value="DD Issuance Charges Income"/>
<column name="gl_code" value="10.3"/>
<column name="parent_id" valueNumeric="25"/>
<column name="hierarchy" value="."/>
<column name="account_usage" valueNumeric="1"/>
<column name="classification_enum" valueNumeric="4"/>
<column name="disabled" valueBoolean="false"/>
<column name="manual_journal_entries_allowed" valueBoolean="true"/>
<column name="description" value="Commission/charges income collected from customers and walk-in purchasers when issuing a sponsor bank demand draft."/>
</insert>
<sql>
INSERT INTO acc_gl_account (name, gl_code, parent_id, hierarchy, account_usage, classification_enum, disabled, manual_journal_entries_allowed, description)
VALUES (
'DD Issuance Charges Income',
'10.3',
(SELECT id FROM acc_gl_account WHERE gl_code = '10'),
'.',
1,
4,
FALSE,
TRUE,
'Commission/charges income collected from customers and walk-in purchasers when issuing a sponsor bank demand draft.'
);
</sql>
</changeSet>
<!-- Fineract's GL hierarchy path embeds the row's own auto-generated id, so it can only be
@@ -74,4 +81,4 @@
</sql>
</changeSet>
</databaseChangeLog>
</databaseChangeLog>
@@ -27,23 +27,29 @@
immediately (the teller's cash-in-hand balance is correct as soon as cash is taken),
without prematurely crediting the Sponsor DD Payable liability, which is only actually
owed to the sponsor bank once the draft is approved/issued. -->
<!-- parent_id was previously hardcoded to 22, which only matched the default tenant's
auto-increment sequence. Resolved via gl_code subquery (like 0345-1) so this works
on any fresh or differently-seeded tenant. runOnChange lets existing databases whose
databasechangelog recorded the old checksum re-validate without a mismatch error;
the '9.4 already exists' precondition ensures it is MARK_RAN rather than re-inserted. -->
<changeSet author="fineract" id="0350-1-insert-dd-cash-suspense-gl-account">
<!-- Accept checksum from older DBs that ran the hardcoded parent_id=22 version before this file was fixed -->
<validCheckSum>9:0a94b7ae03cdf15952a416c3f1a6434f</validCheckSum>
<preConditions onFail="MARK_RAN">
<not>
<sqlCheck expectedResult="1">select count(*) from acc_gl_account where gl_code = '9.4'</sqlCheck>
</not>
<and>
<not>
<sqlCheck expectedResult="1">select count(*) from acc_gl_account where gl_code = '9.4'</sqlCheck>
</not>
<sqlCheck expectedResult="1">select count(*) from acc_gl_account where gl_code = '9'</sqlCheck>
</and>
</preConditions>
<insert tableName="acc_gl_account">
<column name="name" value="DD Cash Received - Pending Approval"/>
<column name="gl_code" value="9.4"/>
<column name="parent_id" valueNumeric="22"/>
<column name="hierarchy" value="."/>
<column name="account_usage" valueNumeric="1"/>
<column name="classification_enum" valueNumeric="2"/>
<column name="disabled" valueBoolean="false"/>
<column name="manual_journal_entries_allowed" valueBoolean="true"/>
<column name="description" value="Interim liability for cash physically received from a walk-in DD purchaser at submission time, pending manager approval of the issuance request. Cleared into Sponsor DD Payable + Charges Income on approval, or reversed back to Cash at Tellers on rejection."/>
</insert>
<sql>
INSERT INTO acc_gl_account (name, gl_code, parent_id, hierarchy, account_usage, classification_enum, disabled, manual_journal_entries_allowed, description)
SELECT 'DD Cash Received - Pending Approval', '9.4', parent.id, '.', 1, 2, FALSE, TRUE,
'Interim liability for cash physically received from a walk-in DD purchaser at submission time, pending manager approval of the issuance request. Cleared into Sponsor DD Payable + Charges Income on approval, or reversed back to Cash at Tellers on rejection.'
FROM acc_gl_account parent
WHERE parent.gl_code = '9';
</sql>
</changeSet>
<changeSet author="fineract" id="0350-2-fix-dd-cash-suspense-hierarchy">
@@ -23,23 +23,29 @@
<!-- GST collected on DD issuance charges is money owed to the government, not bank income -
it gets its own liability GL account, separate from Charges Income. -->
<!-- parent_id was previously hardcoded to 22, which only matched the default tenant's
auto-increment sequence. Resolved via gl_code subquery (like 0345-1 and 0350-1) so
this works on any fresh or differently-seeded tenant. runOnChange lets existing
databases re-validate without a checksum mismatch; the '9.5 already exists'
precondition ensures it is MARK_RAN rather than re-inserted. -->
<changeSet author="fineract" id="0353-1-insert-gst-payable-gl-account">
<!-- Accept checksum from older DBs that ran the hardcoded parent_id=22 version before this file was fixed -->
<validCheckSum>9:b235f4e341d21adee8e1d2d280a2b0f4</validCheckSum>
<preConditions onFail="MARK_RAN">
<not>
<sqlCheck expectedResult="1">select count(*) from acc_gl_account where gl_code = '9.5'</sqlCheck>
</not>
<and>
<not>
<sqlCheck expectedResult="1">select count(*) from acc_gl_account where gl_code = '9.5'</sqlCheck>
</not>
<sqlCheck expectedResult="1">select count(*) from acc_gl_account where gl_code = '9'</sqlCheck>
</and>
</preConditions>
<insert tableName="acc_gl_account">
<column name="name" value="GST Payable on DD Charges"/>
<column name="gl_code" value="9.5"/>
<column name="parent_id" valueNumeric="22"/>
<column name="hierarchy" value="."/>
<column name="account_usage" valueNumeric="1"/>
<column name="classification_enum" valueNumeric="2"/>
<column name="disabled" valueBoolean="false"/>
<column name="manual_journal_entries_allowed" valueBoolean="true"/>
<column name="description" value="GST collected from customers/purchasers on Sponsor DD issuance charges, held pending remittance to the government - not bank income."/>
</insert>
<sql>
INSERT INTO acc_gl_account (name, gl_code, parent_id, hierarchy, account_usage, classification_enum, disabled, manual_journal_entries_allowed, description)
SELECT 'GST Payable on DD Charges', '9.5', parent.id, '.', 1, 2, FALSE, TRUE,
'GST collected from customers/purchasers on Sponsor DD issuance charges, held pending remittance to the government - not bank income.'
FROM acc_gl_account parent
WHERE parent.gl_code = '9';
</sql>
</changeSet>
<changeSet author="fineract" id="0353-2-fix-gst-payable-hierarchy">