feat: Denomination Master backend - master, audit, soft delete, txn breakdown
- m_denomination_master CRUD API with duplicate (denomination+kind) validation, soft delete + restore, and a full audit trail (m_denomination_master_audit logs CREATE/UPDATE/ACTIVATE/DEACTIVATE/ DELETE/RESTORE with snapshot, changes, user and timestamp) - m_savings_txn_denomination: persist per-transaction cash denomination breakdown on savings deposit; allow denominationBreakdown request param - Liquibase 0012_denomination_master registered in tenant changelog Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
7d4f409202
commit
ee915e395a
@@ -318,4 +318,5 @@
|
||||
<include file="parts/0299_seed_indian_states.xml" relativeToChangelogFile="true"/>
|
||||
<include file="parts/0300_rename_fd_base_interest_rate_tables_to_cbs.xml" relativeToChangelogFile="true"/>
|
||||
<include file="parts/0301_add_current_account_to_transfer_details.xml" relativeToChangelogFile="true"/>
|
||||
<include file="parts/0012_denomination_master.xml" relativeToChangelogFile="true"/>
|
||||
</databaseChangeLog>
|
||||
|
||||
+180
@@ -0,0 +1,180 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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.1.xsd">
|
||||
|
||||
<changeSet id="denomination_master_table_001" author="CBS">
|
||||
<createTable tableName="m_denomination_master">
|
||||
<column name="id" type="BIGINT" autoIncrement="true">
|
||||
<constraints primaryKey="true" nullable="false"/>
|
||||
</column>
|
||||
<column name="denomination" type="INT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="kind" type="VARCHAR(10)">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="description" type="VARCHAR(100)"/>
|
||||
<column name="is_active" type="BOOLEAN" defaultValueBoolean="true">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="introduced_on" type="DATE"/>
|
||||
<column name="discontinued_on" type="DATE"/>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="denomination_master_initial_data_001" author="CBS">
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="2000"/>
|
||||
<column name="kind" value="note"/>
|
||||
<column name="description" value="2000 Rupee Note"/>
|
||||
<column name="is_active" valueBoolean="false"/>
|
||||
<column name="introduced_on" value="2016-11-08"/>
|
||||
<column name="discontinued_on" value="2023-09-30"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="500"/>
|
||||
<column name="kind" value="note"/>
|
||||
<column name="description" value="500 Rupee Note"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2016-11-08"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="200"/>
|
||||
<column name="kind" value="note"/>
|
||||
<column name="description" value="200 Rupee Note"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2017-08-25"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="100"/>
|
||||
<column name="kind" value="note"/>
|
||||
<column name="description" value="100 Rupee Note"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2018-07-19"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="50"/>
|
||||
<column name="kind" value="note"/>
|
||||
<column name="description" value="50 Rupee Note"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2017-08-25"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="20"/>
|
||||
<column name="kind" value="note"/>
|
||||
<column name="description" value="20 Rupee Note"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2019-08-26"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="10"/>
|
||||
<column name="kind" value="note"/>
|
||||
<column name="description" value="10 Rupee Note"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2018-01-01"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="20"/>
|
||||
<column name="kind" value="coin"/>
|
||||
<column name="description" value="20 Rupee Coin"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2019-01-01"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="10"/>
|
||||
<column name="kind" value="coin"/>
|
||||
<column name="description" value="10 Rupee Coin"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2009-01-01"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="5"/>
|
||||
<column name="kind" value="coin"/>
|
||||
<column name="description" value="5 Rupee Coin"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2009-01-01"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="2"/>
|
||||
<column name="kind" value="coin"/>
|
||||
<column name="description" value="2 Rupee Coin"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2009-01-01"/>
|
||||
</insert>
|
||||
<insert tableName="m_denomination_master">
|
||||
<column name="denomination" value="1"/>
|
||||
<column name="kind" value="coin"/>
|
||||
<column name="description" value="1 Rupee Coin"/>
|
||||
<column name="is_active" valueBoolean="true"/>
|
||||
<column name="introduced_on" value="2009-01-01"/>
|
||||
</insert>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="savings_txn_denomination_table_001" author="CBS">
|
||||
<createTable tableName="m_savings_txn_denomination">
|
||||
<column name="id" type="BIGINT" autoIncrement="true">
|
||||
<constraints primaryKey="true" nullable="false"/>
|
||||
</column>
|
||||
<column name="txn_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="savings_account_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="account_no" type="VARCHAR(50)"/>
|
||||
<column name="client_id" type="BIGINT"/>
|
||||
<column name="cif_no" type="VARCHAR(50)"/>
|
||||
<column name="denomination_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="denomination_value" type="INT">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="count" type="INT" defaultValueNumeric="0">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="total_amount" type="DECIMAL(19,6)">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="txn_date" type="DATE"/>
|
||||
<column name="created_at" type="TIMESTAMP" defaultValueComputed="CURRENT_TIMESTAMP"/>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="denomination_master_audit_table_001" author="CBS">
|
||||
<createTable tableName="m_denomination_master_audit">
|
||||
<column name="id" type="BIGINT" autoIncrement="true">
|
||||
<constraints primaryKey="true" nullable="false"/>
|
||||
</column>
|
||||
<column name="denomination_id" type="BIGINT"/>
|
||||
<column name="action" type="VARCHAR(20)">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="denomination" type="INT"/>
|
||||
<column name="kind" type="VARCHAR(10)"/>
|
||||
<column name="description" type="VARCHAR(100)"/>
|
||||
<column name="is_active" type="BOOLEAN"/>
|
||||
<column name="introduced_on" type="DATE"/>
|
||||
<column name="discontinued_on" type="DATE"/>
|
||||
<column name="changes" type="VARCHAR(1000)"/>
|
||||
<column name="performed_by" type="BIGINT"/>
|
||||
<column name="performed_by_username" type="VARCHAR(100)"/>
|
||||
<column name="performed_on" type="TIMESTAMP" defaultValueComputed="CURRENT_TIMESTAMP">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
</createTable>
|
||||
<createIndex tableName="m_denomination_master_audit" indexName="idx_denom_audit_denom_id">
|
||||
<column name="denomination_id"/>
|
||||
</createIndex>
|
||||
</changeSet>
|
||||
|
||||
<changeSet id="denomination_master_soft_delete_001" author="CBS">
|
||||
<addColumn tableName="m_denomination_master">
|
||||
<column name="deleted" type="BOOLEAN" defaultValueBoolean="false">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
</addColumn>
|
||||
</changeSet>
|
||||
|
||||
</databaseChangeLog>
|
||||
Reference in New Issue
Block a user