feat: add 11 banking compliance & accounting report modules

Adds dialog components and feature modules for RBI/banking compliance,
KYC, and accounting reports. Wires them into the shell menu (RBI,
General Ledger, CKYC Mgmt, Others, Insurance) and dashboard cards.

Dialog components (lazy-loaded MatDialog):
- PSL Returns (Form III) — dashboard card + RBI menu
- ALM Statement of Structural Liquidity (Form ALM-1) — RBI menu
- CIMS / XBRL Returns (OSS-2 / PSA / RAL / RCP-UCB) — RBI menu, shared
  dialog with form-pill switcher
- CIC DQR (CIBIL / Experian / Equifax / CRIF, 72-col TUDF) — Others menu
  + dashboard card
- CKYC Compliance Reports (Re-KYC / Risk Review / CERSAI) — CKYC Mgmt
- Accounting Reports (P&L / Balance Sheet / Comparative B/S / GL DR/CR
  / Misc Expense Ledger) — General Ledger menu

Feature modules (Route.withShell):
- DEAF (/deaf): Form I, Form II, Annex 4, accounts register
- DICGC (/dicgc): Slab Report, SAHAY Depositor List
- FIU-IND (/fiu): FINnet 2.0 Statement of Financial Transactions
- SFT (/sft): Income Tax Section 285BA SFT
- CKYC Reports (/ckyc/ckyc-reports): standalone dashboard

UI:
- Theme-colored icons on 22 wired menu links across 5 menus —
  visually distinguishes wired (colored) from placeholder (gray) links.
- Backdrop classes per dialog in main.scss.

All using dummy data (Bharat Urban Bank Ltd, Karthik Kamath as Principal
Officer, dummy customer names) — no real bank or customer references.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Aditya
2026-04-29 18:59:50 +05:30
co-authored by Claude Opus 4.7
parent 634003a75c
commit 12bfc81219
61 changed files with 22207 additions and 725 deletions
+485
View File
@@ -0,0 +1,485 @@
/**
* Copyright since 2025 Mifos Initiative
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
/**
* DICGC (Deposit Insurance and Credit Guarantee Corporation) sample data.
* Schema reproduces the actual report formats but bank/customer names are dummy.
*
* Two reports:
* Slab-wise A/C Report — accounts grouped by deposit-amount slabs
* (≤1L, 1L-2L, 2L-3L, >3L) for both deposits and loans
* SAHAY Depositor List — customer/account-wise CSV input template DICGC consumes
* when paying out claims after a bank failure
*/
/** Single product row in the slab-wise table */
export interface SlabRow {
sl: number;
description: string;
upto1Lakh: { amount: number; accounts: number };
oneTo2Lakh: { amount: number; accounts: number };
twoTo3Lakh: { amount: number; accounts: number };
above3Lakh: { amount: number; accounts: number };
total: { amount: number; accounts: number };
}
/** SAHAY depositor input record (19 columns) */
export interface SahayDepositor {
inputSerialNumber: number;
customerIdUcic: string;
accountNumber: string;
typeOfAccount: string;
natureOfAccount: string;
numberOfHolders: number;
nameFirst: string;
nameSecond: string;
nameThird: string;
dateOfBirthOrIncorporation: string;
amountOfDeposit: number;
insuredAmount: number;
loanAgainstDeposit: 'LAD' | 'LAFD' | '';
panNumber: string;
aadhaarNumber: string;
otherKycType: string;
otherKycNumber: string;
mobileNumber: string;
typeOfDeposit: string;
lastCustomerInducedTxnDate: string;
}
export const DICGC_BANK = {
name: 'Bharat Urban Bank Ltd',
branch: 'Head Office',
reportAsOn: '29-01-2026',
printDate: '29-01-2026 04:19 PM',
reportRefNo: '1290/2',
userCode: 'JTU',
insuranceLimit: 500000, // ₹5 lakh per depositor
premiumRatePer100: 0.12, // 12 paise per ₹100 of deposits
registrationNo: 'REG-CO-1290'
};
/** ── DEPOSITS — Section 1 (Credit Balance) ── */
export const DEPOSIT_SLABS: SlabRow[] = [
{
sl: 1,
description: 'CURRENT DEPOSIT INDIVIDUAL A/C',
upto1Lakh: { amount: 4161663.56, accounts: 231 },
oneTo2Lakh: { amount: 1104137.57, accounts: 7 },
twoTo3Lakh: { amount: 953186.92, accounts: 4 },
above3Lakh: { amount: 8451113.76, accounts: 12 },
total: { amount: 14670101.81, accounts: 254 }
},
{
sl: 2,
description: 'FIX DEPOSIT DOUBLE A/C',
upto1Lakh: { amount: 38612382.0, accounts: 824 },
oneTo2Lakh: { amount: 50661835.0, accounts: 371 },
twoTo3Lakh: { amount: 41999156.0, accounts: 175 },
above3Lakh: { amount: 204955057.0, accounts: 324 },
total: { amount: 336228430.0, accounts: 1694 }
},
{
sl: 3,
description: 'FIXED DEPOSIT SINGLE A/C',
upto1Lakh: { amount: 5488157.0, accounts: 694 },
oneTo2Lakh: { amount: 689874.0, accounts: 6 },
twoTo3Lakh: { amount: 250000.0, accounts: 1 },
above3Lakh: { amount: 1018485.0, accounts: 2 },
total: { amount: 7446516.0, accounts: 703 }
},
{
sl: 4,
description: 'FIXED DEPOSIT MONTHLY',
upto1Lakh: { amount: 445000.0, accounts: 6 },
oneTo2Lakh: { amount: 400000.0, accounts: 2 },
twoTo3Lakh: { amount: 1400000.0, accounts: 5 },
above3Lakh: { amount: 14500000.0, accounts: 14 },
total: { amount: 16745000.0, accounts: 27 }
},
{
sl: 5,
description: 'FIXED DEPOSIT QUARTERLY',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 3250000.0, accounts: 3 },
total: { amount: 3250000.0, accounts: 3 }
},
{
sl: 6,
description: 'GENERAL LEDGER',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
},
{
sl: 7,
description: 'LINKING SHARE',
upto1Lakh: { amount: 11600908.0, accounts: 937 },
oneTo2Lakh: { amount: 8580300.0, accounts: 61 },
twoTo3Lakh: { amount: 3290000.0, accounts: 13 },
above3Lakh: { amount: 2876800.0, accounts: 7 },
total: { amount: 26348008.0, accounts: 1018 }
},
{
sl: 8,
description: 'MANGAL PARINAY A/C',
upto1Lakh: { amount: 197496.0, accounts: 2 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 197496.0, accounts: 2 }
},
{
sl: 9,
description: 'RECURRING DEPOSIT',
upto1Lakh: { amount: 558352.0, accounts: 22 },
oneTo2Lakh: { amount: 206756.0, accounts: 2 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 765108.0, accounts: 24 }
},
{
sl: 10,
description: 'SUNDRY CREDITORS A/C',
upto1Lakh: { amount: 46000.0, accounts: 2 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 607913.3, accounts: 1 },
total: { amount: 653913.3, accounts: 3 }
},
{
sl: 11,
description: 'SAVINGS DEPOSIT INDIVIDUAL A/C',
upto1Lakh: { amount: 37172591.62, accounts: 3954 },
oneTo2Lakh: { amount: 28097261.58, accounts: 199 },
twoTo3Lakh: { amount: 19583645.69, accounts: 84 },
above3Lakh: { amount: 108860739.06, accounts: 191 },
total: { amount: 193714237.95, accounts: 4428 }
}
];
/** ── LOANS — Section A (Credit Balance Loan A/c) ── */
export const LOAN_SLABS: SlabRow[] = [
{
sl: 1,
description: 'CC AGAINST DEPOSIT',
upto1Lakh: { amount: 10214.45, accounts: 4 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 10214.45, accounts: 4 }
},
{
sl: 2,
description: 'CASH CREDIT LOAN A/C',
upto1Lakh: { amount: 37223.99, accounts: 5 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 257039.67, accounts: 1 },
above3Lakh: { amount: 3869523.24, accounts: 3 },
total: { amount: 4163786.9, accounts: 9 }
},
{
sl: 3,
description: 'OVER DRAFT BMC',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
},
{
sl: 4,
description: 'LOAN AGAINST GODOWN PLEDGE',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
},
{
sl: 5,
description: 'KISHAN CREDIT CARD',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
},
{
sl: 6,
description: 'LOAN AGAINST SECURITIES',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
},
{
sl: 7,
description: 'LOAN AGAINST DEPOSIT',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
},
{
sl: 8,
description: 'LOAN AGAINST GOLD',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
},
{
sl: 9,
description: 'LOAN AGAINST WAREHOUSE',
upto1Lakh: { amount: 13265.0, accounts: 1 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 13265.0, accounts: 1 }
},
{
sl: 10,
description: 'SUNDRY DEBTORS',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
},
{
sl: 11,
description: 'ADVANCE TO EMPLOYEES',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
},
{
sl: 12,
description: 'LONG TERM LOAN A/C',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
},
{
sl: 13,
description: 'PROPERTY MORTGAGE LIMIT',
upto1Lakh: { amount: 37564.07, accounts: 2 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 37564.07, accounts: 2 }
},
{
sl: 14,
description: 'MEDIUM TERM LOAN',
upto1Lakh: { amount: 0, accounts: 0 },
oneTo2Lakh: { amount: 0, accounts: 0 },
twoTo3Lakh: { amount: 0, accounts: 0 },
above3Lakh: { amount: 0, accounts: 0 },
total: { amount: 0, accounts: 0 }
}
];
/** Section D: Final summary */
export const SUMMARY_D = [
{ sl: 1, description: 'CREDIT BALANCE (1 to 16)', amount: 600018811.06, accounts: 8156 },
{ sl: 2, description: 'CREDIT BALANCE (LOAN A/C)', amount: 4224830.42, accounts: 16 },
{ sl: 3, description: 'OTHER LIABILITY', amount: 3436255.94, accounts: 18 }
];
/** SAHAY depositor list — sample customers (same dummy set used in CKYC + DEAF) */
export const SAHAY_DEPOSITORS: SahayDepositor[] = [
{
inputSerialNumber: 1,
customerIdUcic: 'UCIC0010078',
accountNumber: '110001302000312',
typeOfAccount: 'SAVINGS',
natureOfAccount: 'INDIVIDUAL',
numberOfHolders: 1,
nameFirst: 'RAVI KUMAR SHARMA',
nameSecond: '',
nameThird: '',
dateOfBirthOrIncorporation: '10-08-1985',
amountOfDeposit: 425000,
insuredAmount: 425000,
loanAgainstDeposit: '',
panNumber: 'AAQPS8560J',
aadhaarNumber: 'XXXXXXXX1234',
otherKycType: '',
otherKycNumber: '',
mobileNumber: '9892011001',
typeOfDeposit: 'SB',
lastCustomerInducedTxnDate: '05-04-2026'
},
{
inputSerialNumber: 2,
customerIdUcic: 'UCIC0010079',
accountNumber: '110001302000418',
typeOfAccount: 'FIXED',
natureOfAccount: 'INDIVIDUAL',
numberOfHolders: 1,
nameFirst: 'PRIYA PATEL',
nameSecond: '',
nameThird: '',
dateOfBirthOrIncorporation: '22-03-1990',
amountOfDeposit: 320000,
insuredAmount: 320000,
loanAgainstDeposit: '',
panNumber: 'AKLPS9933P',
aadhaarNumber: 'XXXXXXXX2210',
otherKycType: '',
otherKycNumber: '',
mobileNumber: '9822055002',
typeOfDeposit: 'FD',
lastCustomerInducedTxnDate: '15-03-2026'
},
{
inputSerialNumber: 3,
customerIdUcic: 'UCIC0010080',
accountNumber: '110001303000522',
typeOfAccount: 'RECURRING',
natureOfAccount: 'JOINT',
numberOfHolders: 2,
nameFirst: 'ARJUN DESHMUKH',
nameSecond: 'REKHA DESHMUKH',
nameThird: '',
dateOfBirthOrIncorporation: '15-01-1978',
amountOfDeposit: 148500,
insuredAmount: 148500,
loanAgainstDeposit: '',
panNumber: 'AGTPD1144K',
aadhaarNumber: 'XXXXXXXX5544',
otherKycType: '',
otherKycNumber: '',
mobileNumber: '9823033003',
typeOfDeposit: 'RD',
lastCustomerInducedTxnDate: '10-04-2026'
},
{
inputSerialNumber: 4,
customerIdUcic: 'UCIC0020101',
accountNumber: '110001302000711',
typeOfAccount: 'FIXED',
natureOfAccount: 'INDIVIDUAL',
numberOfHolders: 1,
nameFirst: 'VIKRAM REDDY',
nameSecond: '',
nameThird: '',
dateOfBirthOrIncorporation: '07-07-1982',
amountOfDeposit: 600000,
insuredAmount: 500000,
loanAgainstDeposit: 'LAFD',
panNumber: 'AAEPR9352L',
aadhaarNumber: 'XXXXXXXX6622',
otherKycType: '',
otherKycNumber: '',
mobileNumber: '9845022004',
typeOfDeposit: 'FD',
lastCustomerInducedTxnDate: '20-02-2026'
},
{
inputSerialNumber: 5,
customerIdUcic: 'UCIC0020102',
accountNumber: '110001301000814',
typeOfAccount: 'SAVINGS',
natureOfAccount: 'INDIVIDUAL',
numberOfHolders: 1,
nameFirst: 'LAKSHMI IYER',
nameSecond: '',
nameThird: '',
dateOfBirthOrIncorporation: '14-09-1986',
amountOfDeposit: 280000,
insuredAmount: 280000,
loanAgainstDeposit: '',
panNumber: '',
aadhaarNumber: 'XXXXXXXX5511',
otherKycType: 'VOTER_ID',
otherKycNumber: 'KA09KL5544',
mobileNumber: '9845066005',
typeOfDeposit: 'SB',
lastCustomerInducedTxnDate: '01-04-2026'
},
{
inputSerialNumber: 6,
customerIdUcic: 'UCIC0040301',
accountNumber: '110001302001012',
typeOfAccount: 'FIXED',
natureOfAccount: 'JOINT',
numberOfHolders: 2,
nameFirst: 'NIRAV SHAH',
nameSecond: 'RITA SHAH',
nameThird: '',
dateOfBirthOrIncorporation: '18-05-1992',
amountOfDeposit: 750000,
insuredAmount: 500000,
loanAgainstDeposit: '',
panNumber: 'AHKPS5544Z',
aadhaarNumber: 'XXXXXXXX9933',
otherKycType: 'PASSPORT',
otherKycNumber: 'M5544321',
mobileNumber: '9824012010',
typeOfDeposit: 'FD',
lastCustomerInducedTxnDate: '20-12-2025'
},
{
inputSerialNumber: 7,
customerIdUcic: 'UCIC0050401',
accountNumber: '110001301001145',
typeOfAccount: 'SAVINGS',
natureOfAccount: 'INDIVIDUAL',
numberOfHolders: 1,
nameFirst: 'KAVITA VERMA',
nameSecond: '',
nameThird: '',
dateOfBirthOrIncorporation: '01-04-1988',
amountOfDeposit: 95000,
insuredAmount: 95000,
loanAgainstDeposit: '',
panNumber: 'AKHPV2244R',
aadhaarNumber: 'XXXXXXXX1144',
otherKycType: '',
otherKycNumber: '',
mobileNumber: '9415055014',
typeOfDeposit: 'SB',
lastCustomerInducedTxnDate: '15-03-2026'
},
{
inputSerialNumber: 8,
customerIdUcic: 'UCIC0070601',
accountNumber: '110001304001458',
typeOfAccount: 'TERM_LOAN',
natureOfAccount: 'INDIVIDUAL',
numberOfHolders: 1,
nameFirst: 'SAMEER KAPOOR',
nameSecond: '',
nameThird: '',
dateOfBirthOrIncorporation: '03-02-1987',
amountOfDeposit: 1200000,
insuredAmount: 500000,
loanAgainstDeposit: 'LAD',
panNumber: 'AHKPK7788Q',
aadhaarNumber: 'XXXXXXXX8877',
otherKycType: '',
otherKycNumber: '',
mobileNumber: '9811022019',
typeOfDeposit: 'TL',
lastCustomerInducedTxnDate: '12-04-2026'
}
];