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
+560
View File
@@ -0,0 +1,560 @@
/**
* 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/.
*/
/**
* Sample FIU-IND data — schema mirrors the FINnet 2.0 CSV submission templates
* (TC1, TC2, KC1, KC2, Account_Detail, Account_Person_Relation).
* Bank/customer names are dummy placeholders.
*
* Reports filed with FIU-IND under PMLA 2002:
* CTR — Cash Transaction Report (≥ ₹10 L cash, monthly by 15th)
* STR — Suspicious Transaction Report (within 7 days of detection)
* CCR — Counterfeit Currency Report
* NTR — NPO Transaction Report (≥ ₹10 L, NGO/NPO clients)
* CBWTR — Cross-Border Wire Transfer Report (≥ ₹5 L)
*/
export type ReportType = 'CTR' | 'STR' | 'CCR' | 'NTR' | 'CBWTR';
export type StrStatus = 'draft' | 'po-review' | 'filed' | 'rejected';
/** TC2 — Branch / cash transaction record */
export interface CtrTransaction {
reportType: ReportType;
reportRefNo: number;
branchCode: string;
accountNumber: string;
txnBranchCode: string;
depositOrWithdrawal: 'Deposit' | 'Withdrawal';
txnId: number;
txnDate: string;
txnTime: string;
txnAmount: number;
instrumentType: 'Cash' | 'Cheque' | 'DD' | 'NEFT' | 'RTGS' | 'Others';
instrumentId: string;
nonCustomerRef: string;
relationshipFlag: 'Customer' | 'Non-Customer';
thirdPartyPan: string;
declaration: string;
/** Customer name resolved from KC1 (UI convenience, not in actual TC2 schema) */
customerName?: string;
}
/** STR record — workflow extension on top of TC2 */
export interface StrTransaction extends CtrTransaction {
detectedOn: string;
flaggedBy: string;
riskCategory:
| 'structuring'
| 'dormant-revival'
| 'high-risk-country'
| 'unusual-pattern'
| 'pep-related'
| 'sanctions-hit';
narrative: string;
status: StrStatus;
poRemarks?: string;
}
/** KC1 — Individual customer card (subset of the 70+ fields, only what UI shows) */
export interface KycIndividual {
reportRefNo: number;
ucic: string;
pan: string;
ckycNumber: string;
firstName: string;
middleName: string;
lastName: string;
fatherName: string;
motherName: string;
gender: 'Male' | 'Female' | 'Other';
dob: string;
mobileNumber: string;
email: string;
primaryAddress: string;
state: string;
city: string;
pincode: string;
customerType: string;
annualIncome: number;
occupation: string;
onboardingDate: string;
lastKycDate: string;
riskLevel: 'Low' | 'Medium' | 'High';
reportType: ReportType;
otherIdentifierName?: string;
otherIdentifierNumber?: string;
}
/** KC2 — Entity / non-individual customer card */
export interface KycEntity {
reportRefNo: number;
ucic: string;
entityName: string;
panNumber: string;
gstin: string;
mobileNumber: string;
address: string;
state: string;
city: string;
pincode: string;
dateOfIncorporation: string;
customerType: string;
riskLevel: 'Low' | 'Medium' | 'High';
onboardingDate: string;
lastKycDate: string;
isSoleProprietor: boolean;
ownerUcic: string;
ownerName: string;
reportType: ReportType;
}
export const FIU_BANK = {
name: 'Bharat Urban Bank Ltd',
branch: 'Head Office',
reBankingFlag: 'SCB',
reportingMonth: 'January 2026',
reBuid: 'REBANK-2031',
principalOfficer: 'Karthik Kamath',
principalOfficerEmail: 'po.fiu@bharaturbanbank.example',
filerUserId: 'PO-001',
cashThreshold: 1000000, // ₹10 L per single cash txn
monthlyAggThreshold: 1000000, // aggregate ≥ ₹10 L in a month
cbwtrThreshold: 500000 // CBWTR threshold ₹5 L
};
/** ── Sample CTR transactions (FINnet TC2-style) ── */
export const CTR_TXNS: CtrTransaction[] = [
{
reportType: 'CTR',
reportRefNo: 1,
branchCode: '1',
accountNumber: '110001101000838',
txnBranchCode: '1',
depositOrWithdrawal: 'Withdrawal',
txnId: 1,
txnDate: '20-01-2026',
txnTime: '16:51:28',
txnAmount: 1500000,
instrumentType: 'Cheque',
instrumentId: '24304',
nonCustomerRef: '',
relationshipFlag: 'Customer',
thirdPartyPan: '',
declaration: 'NA',
customerName: 'RAVI KUMAR SHARMA'
},
{
reportType: 'CTR',
reportRefNo: 1,
branchCode: '1',
accountNumber: '110001101000838',
txnBranchCode: '1',
depositOrWithdrawal: 'Withdrawal',
txnId: 2,
txnDate: '27-01-2026',
txnTime: '16:14:22',
txnAmount: 932000,
instrumentType: 'Cheque',
instrumentId: '24305',
nonCustomerRef: '',
relationshipFlag: 'Customer',
thirdPartyPan: '',
declaration: 'NA',
customerName: 'RAVI KUMAR SHARMA'
},
{
reportType: 'CTR',
reportRefNo: 2,
branchCode: '1',
accountNumber: '110001352000357',
txnBranchCode: '1',
depositOrWithdrawal: 'Withdrawal',
txnId: 3,
txnDate: '02-01-2026',
txnTime: '15:05:36',
txnAmount: 600000,
instrumentType: 'Cheque',
instrumentId: '100039',
nonCustomerRef: '',
relationshipFlag: 'Customer',
thirdPartyPan: '',
declaration: 'NA',
customerName: 'PRIYA PATEL'
},
{
reportType: 'CTR',
reportRefNo: 2,
branchCode: '1',
accountNumber: '110001352000357',
txnBranchCode: '1',
depositOrWithdrawal: 'Withdrawal',
txnId: 4,
txnDate: '07-01-2026',
txnTime: '14:14:17',
txnAmount: 700000,
instrumentType: 'Cheque',
instrumentId: '100040',
nonCustomerRef: '',
relationshipFlag: 'Customer',
thirdPartyPan: '',
declaration: 'NA',
customerName: 'PRIYA PATEL'
},
{
reportType: 'CTR',
reportRefNo: 3,
branchCode: '7',
accountNumber: '110001352000420',
txnBranchCode: '7',
depositOrWithdrawal: 'Deposit',
txnId: 5,
txnDate: '12-01-2026',
txnTime: '11:28:50',
txnAmount: 1200000,
instrumentType: 'Cash',
instrumentId: 'CASH',
nonCustomerRef: '',
relationshipFlag: 'Customer',
thirdPartyPan: '',
declaration: 'NA',
customerName: 'VIKRAM REDDY'
},
{
reportType: 'CTR',
reportRefNo: 4,
branchCode: '4',
accountNumber: '110001352000511',
txnBranchCode: '4',
depositOrWithdrawal: 'Deposit',
txnId: 6,
txnDate: '18-01-2026',
txnTime: '10:14:05',
txnAmount: 2500000,
instrumentType: 'Cash',
instrumentId: 'CASH',
nonCustomerRef: '',
relationshipFlag: 'Customer',
thirdPartyPan: '',
declaration: 'NA',
customerName: 'NIRAV SHAH'
},
{
reportType: 'CTR',
reportRefNo: 5,
branchCode: '11',
accountNumber: '110001352000604',
txnBranchCode: '11',
depositOrWithdrawal: 'Withdrawal',
txnId: 7,
txnDate: '24-01-2026',
txnTime: '13:42:11',
txnAmount: 1100000,
instrumentType: 'Cheque',
instrumentId: '88123',
nonCustomerRef: 'NCR-001',
relationshipFlag: 'Non-Customer',
thirdPartyPan: 'AKHPV2244R',
declaration: 'NA',
customerName: 'KAVITA VERMA'
}
];
/** ── Sample STR transactions ── */
export const STR_TXNS: StrTransaction[] = [
{
reportType: 'STR',
reportRefNo: 101,
branchCode: '1',
accountNumber: '110001101000841',
txnBranchCode: '1',
depositOrWithdrawal: 'Deposit',
txnId: 8,
txnDate: '15-01-2026',
txnTime: '11:32:00',
txnAmount: 950000,
instrumentType: 'Cash',
instrumentId: 'CASH',
nonCustomerRef: '',
relationshipFlag: 'Customer',
thirdPartyPan: '',
declaration: 'NA',
customerName: 'ARJUN DESHMUKH',
detectedOn: '16-01-2026',
flaggedBy: 'AML Engine — Rule R-007',
riskCategory: 'structuring',
narrative:
'Three sub-₹10L cash deposits within 5 days totalling ₹28.4L; pattern indicative of structuring to avoid CTR threshold.',
status: 'po-review'
},
{
reportType: 'STR',
reportRefNo: 102,
branchCode: '7',
accountNumber: '110001101000922',
txnBranchCode: '7',
depositOrWithdrawal: 'Deposit',
txnId: 9,
txnDate: '21-01-2026',
txnTime: '14:18:30',
txnAmount: 4800000,
instrumentType: 'NEFT',
instrumentId: 'N1264821',
nonCustomerRef: '',
relationshipFlag: 'Customer',
thirdPartyPan: '',
declaration: 'NA',
customerName: 'LAKSHMI IYER',
detectedOn: '22-01-2026',
flaggedBy: 'Branch Compliance Officer',
riskCategory: 'dormant-revival',
narrative:
'Account dormant for 18 months suddenly received ₹48L NEFT followed by 4 immediate cash withdrawals of ₹2L each.',
status: 'filed',
poRemarks: 'STR filed with FIU-IND. Acknowledgement no: STR-2026-9821.'
},
{
reportType: 'STR',
reportRefNo: 103,
branchCode: '2',
accountNumber: '110001302001012',
txnBranchCode: '2',
depositOrWithdrawal: 'Withdrawal',
txnId: 10,
txnDate: '23-01-2026',
txnTime: '15:42:18',
txnAmount: 1800000,
instrumentType: 'RTGS',
instrumentId: 'R889013',
nonCustomerRef: '',
relationshipFlag: 'Customer',
thirdPartyPan: '',
declaration: 'NA',
customerName: 'SAMEER KAPOOR',
detectedOn: '24-01-2026',
flaggedBy: 'AML Engine — Rule R-014',
riskCategory: 'high-risk-country',
narrative:
'RTGS transfer to beneficiary in jurisdiction listed under FATF grey list (Cayman Islands intermediary). KYC documentation incomplete.',
status: 'draft'
},
{
reportType: 'STR',
reportRefNo: 104,
branchCode: '13',
accountNumber: '110001352001145',
txnBranchCode: '13',
depositOrWithdrawal: 'Deposit',
txnId: 11,
txnDate: '08-01-2026',
txnTime: '12:55:42',
txnAmount: 6500000,
instrumentType: 'Cash',
instrumentId: 'CASH',
nonCustomerRef: '',
relationshipFlag: 'Customer',
thirdPartyPan: '',
declaration: 'NA',
customerName: 'MANMOHAN SINGH GILL',
detectedOn: '09-01-2026',
flaggedBy: 'AML Engine — Rule R-022',
riskCategory: 'unusual-pattern',
narrative:
'Account avg monthly turnover ₹1.5L; received ₹65L cash in single deposit, source-of-funds documentation pending.',
status: 'po-review'
}
];
/** ── KC1 sample individual customers ── */
export const KC1_INDIVIDUALS: KycIndividual[] = [
{
reportRefNo: 1,
ucic: '10078',
pan: 'AAQPS8560J',
ckycNumber: '60011225033445',
firstName: 'RAVI',
middleName: 'KUMAR',
lastName: 'SHARMA',
fatherName: 'RAJESH KUMAR SHARMA',
motherName: 'SUNITA DEVI',
gender: 'Male',
dob: '10-08-1985',
mobileNumber: '91-9892011001',
email: 'ravi.sharma@example.com',
primaryAddress: 'FLAT 402 SUNRISE TOWERS MAROL ANDHERI EAST',
state: 'MH',
city: 'MUMBAI',
pincode: '400069',
customerType: 'Individual',
annualIncome: 750000,
occupation: 'Service',
onboardingDate: '15-03-2020',
lastKycDate: '12-04-2025',
riskLevel: 'Medium',
reportType: 'CTR',
otherIdentifierName: 'AADHAAR',
otherIdentifierNumber: 'XXXXXXXX1234'
},
{
reportRefNo: 2,
ucic: '10079',
pan: 'AKLPS9933P',
ckycNumber: '60022144558899',
firstName: 'PRIYA',
middleName: '',
lastName: 'PATEL',
fatherName: 'HARISH PATEL',
motherName: 'MEENA PATEL',
gender: 'Female',
dob: '22-03-1990',
mobileNumber: '91-9822055002',
email: 'priya.patel@example.com',
primaryAddress: 'B-12 SHIVAJI NAGAR FC ROAD',
state: 'MH',
city: 'PUNE',
pincode: '411005',
customerType: 'Individual',
annualIncome: 480000,
occupation: 'Self-Employed',
onboardingDate: '10-09-2023',
lastKycDate: '15-03-2025',
riskLevel: 'Low',
reportType: 'CTR',
otherIdentifierName: 'AADHAAR',
otherIdentifierNumber: 'XXXXXXXX2210'
},
{
reportRefNo: 3,
ucic: '20101',
pan: 'AAEPR9352L',
ckycNumber: '',
firstName: 'VIKRAM',
middleName: '',
lastName: 'REDDY',
fatherName: 'SURESH REDDY',
motherName: 'LAKSHMI REDDY',
gender: 'Male',
dob: '07-07-1982',
mobileNumber: '91-9845022004',
email: '',
primaryAddress: 'NO 23 4TH CROSS JAYANAGAR 5TH BLOCK',
state: 'KA',
city: 'BENGALURU',
pincode: '560041',
customerType: 'Individual',
annualIncome: 950000,
occupation: 'Profession',
onboardingDate: '12-11-2021',
lastKycDate: '20-02-2025',
riskLevel: 'Medium',
reportType: 'CTR',
otherIdentifierName: 'AADHAAR',
otherIdentifierNumber: 'XXXXXXXX6622'
},
{
reportRefNo: 4,
ucic: '40301',
pan: 'AHKPS5544Z',
ckycNumber: '60040301229988',
firstName: 'NIRAV',
middleName: '',
lastName: 'SHAH',
fatherName: 'JAYESH SHAH',
motherName: 'RITA SHAH',
gender: 'Male',
dob: '18-05-1992',
mobileNumber: '91-9824012010',
email: 'nirav.shah@example.com',
primaryAddress: 'A-401 ATLANTIS APARTMENTS SATELLITE ROAD',
state: 'GJ',
city: 'AHMEDABAD',
pincode: '380015',
customerType: 'Individual',
annualIncome: 1800000,
occupation: 'Service',
onboardingDate: '14-02-2018',
lastKycDate: '20-12-2024',
riskLevel: 'High',
reportType: 'CTR',
otherIdentifierName: 'PASSPORT',
otherIdentifierNumber: 'M5544321'
},
{
reportRefNo: 5,
ucic: '50402',
pan: 'AKHPV2244R',
ckycNumber: '',
firstName: 'KAVITA',
middleName: '',
lastName: 'VERMA',
fatherName: 'DEEPAK VERMA',
motherName: 'USHA VERMA',
gender: 'Female',
dob: '01-04-1988',
mobileNumber: '91-9415055014',
email: '',
primaryAddress: '45 CIVIL LINES MALL ROAD',
state: 'UP',
city: 'KANPUR',
pincode: '208001',
customerType: 'Individual',
annualIncome: 540000,
occupation: 'Service',
onboardingDate: '08-09-2022',
lastKycDate: '15-09-2024',
riskLevel: 'Low',
reportType: 'CTR',
otherIdentifierName: 'AADHAAR',
otherIdentifierNumber: 'XXXXXXXX2244'
}
];
/** ── KC2 sample entity customers ── */
export const KC2_ENTITIES: KycEntity[] = [
{
reportRefNo: 11,
ucic: 'E10101',
entityName: 'BHARAT TRADING COMPANY',
panNumber: 'ABCFB1234N',
gstin: '27ABCFB1234N1ZT',
mobileNumber: '91-9892011010',
address: 'GALA 22 LOWER PAREL',
state: 'MH',
city: 'MUMBAI',
pincode: '400013',
dateOfIncorporation: '24-03-2008',
customerType: 'Sole Proprietor',
riskLevel: 'High',
onboardingDate: '24-03-2008',
lastKycDate: '03-09-2025',
isSoleProprietor: true,
ownerUcic: '10078',
ownerName: 'RAVI KUMAR SHARMA',
reportType: 'CTR'
},
{
reportRefNo: 12,
ucic: 'E10102',
entityName: 'NEXTGEN TECH PVT LTD',
panNumber: 'AABCN5566K',
gstin: '27AABCN5566K1Z2',
mobileNumber: '91-9824012011',
address: 'TOWER B SUNRISE BUSINESS PARK ANDHERI EAST',
state: 'MH',
city: 'MUMBAI',
pincode: '400093',
dateOfIncorporation: '18-09-2015',
customerType: 'Private Limited',
riskLevel: 'Medium',
onboardingDate: '18-09-2015',
lastKycDate: '12-08-2025',
isSoleProprietor: false,
ownerUcic: '',
ownerName: '',
reportType: 'CTR'
}
];