diff --git a/src/app/ckyc/ckyc-reports/ckyc-sample-data.ts b/src/app/ckyc/ckyc-reports/ckyc-sample-data.ts index 57cc82bfa..ffaa4c025 100644 --- a/src/app/ckyc/ckyc-reports/ckyc-sample-data.ts +++ b/src/app/ckyc/ckyc-reports/ckyc-sample-data.ts @@ -12,16 +12,16 @@ * have meaningful variety out of the box. */ export const SAMPLE_CKYC_FILE = `10|24401|IN4711|MH|30|31-08-2020|V1.1||||| -20|1|01|01|||||||||||01|||01|10078|MR|RAVI|KUMAR|SHARMA|||||||01|MR|RAJESH|KUMAR|SHARMA||MRS|SUNITA|DEVI|||M|02|IN|B-01|10-08-1985|||||||||01|02|||||02|FLAT 402, SUNRISE TOWERS|MAROL ANDHERI EAST|MUMBAI|MUMBAI|MUMBAI|MH|IN|400069|01||Y|02|FLAT 402, SUNRISE TOWERS|MAROL ANDHERI EAST|MUMBAI|MUMBAI|MUMBAI|MH|IN|400069|01||||||||||||||||9892011001|||||31-08-2020|MUMBAI MAIN|31-08-2020|01|ANJALI MEHTA|ASSISTANT MANAGER|HEAD OFFICE|4|BHARAT URBAN BANK|IN4711|1|0||0|4|||||| +20|1|01|01|||||||||||01|||01|10078|MR|RAVI|KUMAR|SHARMA|||||||01|MR|RAJESH|KUMAR|SHARMA||MRS|SUNITA|DEVI|||M|02|IN|B-01|10-08-1985|||||||||01|02|||||02|FLAT 402, SUNRISE TOWERS|MAROL ANDHERI EAST|MUMBAI|MUMBAI|MUMBAI|MH|IN|400069|01||Y|02|FLAT 402, SUNRISE TOWERS|MAROL ANDHERI EAST|MUMBAI|MUMBAI|MUMBAI|MH|IN|400069|01||||||||||||||||9892011001|||||31-08-2020|MUMBAI MAIN|31-08-2020|01|ANJALI MEHTA|ASSISTANT MANAGER|HEAD OFFICE|4|CBSNEXORA BANK|IN4711|1|0||0|4|||||| 30|1|C|AAQPS8560J||01|02||||| 70|1|10078_Sign.jpeg|09|01|01|||| 70|1|10078_Photo.jpeg|02|01|01|||| 70|1|10078_AP.jpg|04|01|01|||| -20|2|01|01|||||||||||01|||01|10079|MRS|PRIYA||PATEL|||||||01|MR|HARISH|PATEL|||MRS|MEENA|PATEL|||F|01|IN|O-04|22-03-1990|||||||||01|02|||||02|B-12, SHIVAJI NAGAR|FC ROAD|PUNE|PUNE|PUNE|MH|IN|411005|01||Y|02|B-12, SHIVAJI NAGAR|FC ROAD|PUNE|PUNE|PUNE|MH|IN|411005|01||||||||||||||||9822055002|||||31-08-2020|PUNE FC ROAD|31-08-2020|01|VIKRAM SINGH|BRANCH MANAGER|HEAD OFFICE|4|BHARAT URBAN BANK|IN4711|1|0||0|3|||||| +20|2|01|01|||||||||||01|||01|10079|MRS|PRIYA||PATEL|||||||01|MR|HARISH|PATEL|||MRS|MEENA|PATEL|||F|01|IN|O-04|22-03-1990|||||||||01|02|||||02|B-12, SHIVAJI NAGAR|FC ROAD|PUNE|PUNE|PUNE|MH|IN|411005|01||Y|02|B-12, SHIVAJI NAGAR|FC ROAD|PUNE|PUNE|PUNE|MH|IN|411005|01||||||||||||||||9822055002|||||31-08-2020|PUNE FC ROAD|31-08-2020|01|VIKRAM SINGH|BRANCH MANAGER|HEAD OFFICE|4|CBSNEXORA BANK|IN4711|1|0||0|3|||||| 30|2|E|XXXXXXXX2210||01|02||||| 70|2|10079_Sign.jpeg|09|01|01|||| 70|2|10079_Photo.jpeg|02|01|01|||| -20|3|01|01|||||||||||01|||01|10080|MR|ARJUN||DESHMUKH|||||||01|MR|VIJAY|DESHMUKH|||MRS|REKHA|DESHMUKH|||M|01|IN|B-01|15-01-1978|||||||||01|02|||||02|HOUSE NO 7, DHARAMPETH|RAMDASPETH|NAGPUR|NAGPUR|NAGPUR|MH|IN|440010|01||Y|02|HOUSE NO 7, DHARAMPETH|RAMDASPETH|NAGPUR|NAGPUR|NAGPUR|MH|IN|440010|01||||||||||||||||9823033003|||||30-08-2020|NAGPUR DHARAMPETH|30-08-2020|01|RAHUL JOSHI|ASSISTANT MANAGER|HEAD OFFICE|4|BHARAT URBAN BANK|IN4711|1|0||0|3|||||| +20|3|01|01|||||||||||01|||01|10080|MR|ARJUN||DESHMUKH|||||||01|MR|VIJAY|DESHMUKH|||MRS|REKHA|DESHMUKH|||M|01|IN|B-01|15-01-1978|||||||||01|02|||||02|HOUSE NO 7, DHARAMPETH|RAMDASPETH|NAGPUR|NAGPUR|NAGPUR|MH|IN|440010|01||Y|02|HOUSE NO 7, DHARAMPETH|RAMDASPETH|NAGPUR|NAGPUR|NAGPUR|MH|IN|440010|01||||||||||||||||9823033003|||||30-08-2020|NAGPUR DHARAMPETH|30-08-2020|01|RAHUL JOSHI|ASSISTANT MANAGER|HEAD OFFICE|4|CBSNEXORA BANK|IN4711|1|0||0|3|||||| 30|3|C|AGTPD1144K||01|02||||| 70|3|10080_Sign.jpeg|09|01|01|||| 70|3|10080_AP.jpg|04|01|01|||| diff --git a/src/app/core/shell/shell.component.html b/src/app/core/shell/shell.component.html index c9f0b0494..5573334ee 100644 --- a/src/app/core/shell/shell.component.html +++ b/src/app/core/shell/shell.component.html @@ -701,8 +701,11 @@
Deposits
- FD / RD Entry FD / RD Entry DDS Entry
Financial Statements
- Trial Balance Trial Balance Client wise Balance Report - Contingent Expense Contingent + Expense Banker Head Report diff --git a/src/app/core/shell/shell.component.ts b/src/app/core/shell/shell.component.ts index 3d0ba7fa9..e61129c1a 100644 --- a/src/app/core/shell/shell.component.ts +++ b/src/app/core/shell/shell.component.ts @@ -242,7 +242,7 @@ export class ShellComponent implements OnInit, OnDestroy { * GL Wise DR/CR / Misc Expense Ledger). Initial report selected via menu link. */ async openAccountingReportsDialog( - initialReport: 'PNL' | 'BALANCE-SHEET' | 'COMPARATIVE-BS' | 'GL-DR-CR' | 'MISC-EXP' = 'PNL' + initialReport: 'PNL' | 'BALANCE-SHEET' | 'COMPARATIVE-BS' | 'CONTINGENT-LIAB' | 'GL-DR-CR' | 'MISC-EXP' = 'PNL' ): Promise { const { AccountingReportsDialogComponent } = await import('../../home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component'); @@ -285,7 +285,9 @@ export class ShellComponent implements OnInit, OnDestroy { * is selected based on the menu link the user clicked; user can switch between * forms via the form-pill selector inside the dialog. */ - async openCimsXbrlDialog(initialForm: 'OSS-2' | 'PSA' | 'RAL' | 'RCP-UCB' = 'OSS-2'): Promise { + async openCimsXbrlDialog( + initialForm: 'OSS-2' | 'PSA' | 'RAL' | 'RCP-UCB' | 'OSS-4' | 'OSS-5' | 'OSS-6' | 'OSS-7' = 'OSS-2' + ): Promise { const { CimsXbrlDialogComponent } = await import('../../home/dashboard/cims-xbrl-dialog/cims-xbrl-dialog.component'); this.dialog.open(CimsXbrlDialogComponent, { @@ -301,6 +303,23 @@ export class ShellComponent implements OnInit, OnDestroy { }); } + /** Opens the FD / RD Entry dialog under Sub Ledger → Deposits. */ + async openFdRdEntryDialog(): Promise { + const { FdRdEntryDialogComponent } = + await import('../../home/dashboard/fd-rd-entry-dialog/fd-rd-entry-dialog.component'); + this.dialog.open(FdRdEntryDialogComponent, { + width: '100vw', + height: '100vh', + maxWidth: '100vw', + maxHeight: '100vh', + panelClass: ['crr-slr-dialog-panel', 'fdrd-fullscreen-panel'], + autoFocus: false, + disableClose: false, + hasBackdrop: true, + backdropClass: 'fdrd-dlg-backdrop' + }); + } + /** * Opens the Asset Liability Management dialog (Form ALM-1). * Covers maturity ladder, monthly snapshot, and structural liquidity returns. diff --git a/src/app/deaf/deaf-data.ts b/src/app/deaf/deaf-data.ts index 11cad0de2..c6608d6d3 100644 --- a/src/app/deaf/deaf-data.ts +++ b/src/app/deaf/deaf-data.ts @@ -81,7 +81,7 @@ export interface DeafEligibleAccount { /** Form I — Dec 2025 cycle */ export const FORM_I: DeafForm = { - bankName: 'Bharat Urban Bank Ltd, Mumbai Main Branch', + bankName: 'CBSNexora Bank Ltd, Mumbai Main Branch', bankDeafCode: '1100', remittedThroughSponsor: 'Y', sponsorBankName: 'State Bank of India', @@ -170,7 +170,7 @@ export const FORM_I: DeafForm = { /** Form II — Jan 2026 (head office consolidated) */ export const FORM_II: DeafForm = { - bankName: 'Bharat Urban Bank Ltd, Head Office', + bankName: 'CBSNexora Bank Ltd, Head Office', bankDeafCode: '1100', remittedThroughSponsor: 'Y', sponsorBankName: 'State Bank of India', @@ -271,7 +271,7 @@ export const REFUND_CLAIMS: { auditor: string; rows: DeafClaim[]; } = { - bankName: 'Bharat Urban Bank Ltd', + bankName: 'CBSNexora Bank Ltd', bankDeafCode: '1100', currentAcWithRbi: '03010200099001', sponsorBank: 'State Bank of India', diff --git a/src/app/dicgc/dicgc-data.ts b/src/app/dicgc/dicgc-data.ts index 78566e6a9..94e03e21e 100644 --- a/src/app/dicgc/dicgc-data.ts +++ b/src/app/dicgc/dicgc-data.ts @@ -53,7 +53,7 @@ export interface SahayDepositor { } export const DICGC_BANK = { - name: 'Bharat Urban Bank Ltd', + name: 'CBSNexora Bank Ltd', branch: 'Head Office', reportAsOn: '29-01-2026', printDate: '29-01-2026 04:19 PM', diff --git a/src/app/fiu/fiu-data.ts b/src/app/fiu/fiu-data.ts index 2f6f8dcc4..f404f3584 100644 --- a/src/app/fiu/fiu-data.ts +++ b/src/app/fiu/fiu-data.ts @@ -114,13 +114,13 @@ export interface KycEntity { } export const FIU_BANK = { - name: 'Bharat Urban Bank Ltd', + name: 'CBSNexora Bank Ltd', branch: 'Head Office', reBankingFlag: 'SCB', reportingMonth: 'January 2026', reBuid: 'REBANK-2031', principalOfficer: 'Karthik Kamath', - principalOfficerEmail: 'po.fiu@bharaturbanbank.example', + principalOfficerEmail: 'po.fiu@cbsnexorabank.example', filerUserId: 'PO-001', cashThreshold: 1000000, // ₹10 L per single cash txn monthlyAggThreshold: 1000000, // aggregate ≥ ₹10 L in a month diff --git a/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.html b/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.html index 6d76cb648..d6da52a04 100644 --- a/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.html +++ b/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.html @@ -397,6 +397,64 @@
+ + +
+
+
Total Contingent Liabilities — {{ bank.fiscalYear }}
+
₹ {{ contingentLiab.current | number: '1.2-2' }} Lakh
+
vs {{ contingentLiab.previous | number: '1.2-2' }} Lakh (PY)
+
+
+
Variation over Previous Year
+
{{ clVariation >= 0 ? '+' : '' }}{{ clVariation | number: '1.2-2' }} Lakh
+
{{ clVariationPct >= 0 ? '+' : '' }}{{ clVariationPct.toFixed(2) }}%
+
+
+
As On Date
+
{{ bank.asOnDate }}
+
Schedule 12
+
+
+ +
+
+

Contingent Liabilities — As on {{ bank.asOnDate }} (₹ in Lakhs)

+ +
+ +
+ + + + + + + + + + + + + + + + + +
Items Covered Under This Schedule
{{ item.code }}{{ item.label }}
+ Total Contingent Liabilities: ₹ {{ contingentLiab.current | number: '1.2-2' }} Lakh +
+
+

+   Individual item-wise figures for this schedule are not broken + out here — only the audited total is shown, to avoid presenting a sub-item split that could not be + independently verified against the source statement. +

+
+
+
diff --git a/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.scss b/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.scss index 3e56295d9..ad0dad4be 100644 --- a/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.scss +++ b/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.scss @@ -318,6 +318,16 @@ border-bottom: 1px dashed var(--acr-g200); } +.acr-note { + margin: 12px 0 0; + font-size: 12px; + font-style: italic; + color: var(--acr-g500); + display: flex; + align-items: flex-start; + gap: 6px; +} + .acr-btn-xls { font-size: 12px !important; height: 34px !important; diff --git a/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.ts b/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.ts index 817c5ab5b..1d9f12a9a 100644 --- a/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.ts +++ b/src/app/home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component.ts @@ -14,7 +14,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MatTooltipModule } from '@angular/material/tooltip'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; -export type AcctReportCode = 'PNL' | 'BALANCE-SHEET' | 'COMPARATIVE-BS' | 'GL-DR-CR' | 'MISC-EXP'; +export type AcctReportCode = 'PNL' | 'BALANCE-SHEET' | 'COMPARATIVE-BS' | 'CONTINGENT-LIAB' | 'GL-DR-CR' | 'MISC-EXP'; export interface AcctReportsDialogData { initialReport?: AcctReportCode; @@ -47,6 +47,11 @@ interface GlLine { closing: number; } +interface ContingentLiabItem { + code: string; + label: string; +} + interface MiscExpRow { txnDate: string; branch: string; @@ -81,7 +86,7 @@ export class AccountingReportsDialogComponent { activeReport: AcctReportCode; bank = { - name: 'Bharat Urban Bank Ltd', + name: 'CBSNexora Bank Ltd', branch: 'Head Office', asOnDate: '31-03-2026', period: '01-04-2025 to 31-03-2026', @@ -94,7 +99,7 @@ export class AccountingReportsDialogComponent { poDesignation: 'Chief Finance Officer', auditor: 'M/s Sharma & Associates, Chartered Accountants', reportRefNo: '157/2', - userCode: 'BUBL01', + userCode: 'CBSN01', branchCount: 15 }; @@ -120,6 +125,13 @@ export class AccountingReportsDialogComponent { description: 'Side-by-side comparison of current vs previous fiscal year.', group: 'Financial Statement' }, + { + code: 'CONTINGENT-LIAB' as AcctReportCode, + name: 'Contingent Liabilities', + icon: 'exclamation-triangle', + description: 'Off-balance-sheet claims, guarantees & contingent exposures (Schedule 12).', + group: 'Financial Statement' + }, { code: 'GL-DR-CR' as AcctReportCode, name: 'GL Wise DR/CR', @@ -136,309 +148,192 @@ export class AccountingReportsDialogComponent { } ]; - // -------------------- P&L Data (₹ in Lakhs) -------------------- + // -------------------- P&L Data (₹ in Lakhs) — FY 2025-26 audited figures -------------------- pnl: PnlLine[] = [ - { code: 'I-01', group: 'INCOME', subgroup: 'Interest Earned', label: 'Interest on Advances', amount: 38420 }, - { code: 'I-02', group: 'INCOME', subgroup: 'Interest Earned', label: 'Interest on Investments', amount: 14860 }, + { code: 'I-01', group: 'INCOME', subgroup: 'Interest Earned', label: 'Interest on Advances & Bills', amount: 102641.73 }, + { code: 'I-02', group: 'INCOME', subgroup: 'Interest Earned', label: 'Income on Investments', amount: 41936.75 }, { code: 'I-03', group: 'INCOME', - subgroup: 'Interest Earned', - label: 'Interest on Balances with RBI / Other Banks', - amount: 1240 - }, - { - code: 'I-04', - group: 'INCOME', subgroup: 'Other Income', label: 'Commission, Exchange & Brokerage', - amount: 1820 + amount: 144.2 + }, + { code: 'I-04', group: 'INCOME', subgroup: 'Other Income', label: 'Dividend Income', amount: 4.11 }, + { + code: 'I-05', + group: 'INCOME', + subgroup: 'Other Income', + label: 'Net Income on Sale of Fixed Assets', + amount: 0.3 + }, + { code: 'I-06', group: 'INCOME', subgroup: 'Other Income', label: 'Other Income (ATM/POS/UPI/Rental/Misc)', amount: 280 }, + { + code: 'E-01', + group: 'EXPENDITURE', + subgroup: 'Interest Expended', + label: 'Interest Paid on Deposits & Other Borrowings', + amount: 62861.8 }, - { code: 'I-05', group: 'INCOME', subgroup: 'Other Income', label: 'Profit on Sale of Investments', amount: 480 }, - { code: 'I-06', group: 'INCOME', subgroup: 'Other Income', label: 'Dividend Income', amount: 142 }, - { code: 'I-07', group: 'INCOME', subgroup: 'Other Income', label: 'Miscellaneous Income', amount: 318 }, - { code: 'E-01', group: 'EXPENDITURE', subgroup: 'Interest Expended', label: 'Interest on Deposits', amount: 28640 }, { code: 'E-02', group: 'EXPENDITURE', subgroup: 'Interest Expended', - label: 'Interest on RBI / Inter-Bank Borrowings', - amount: 980 + label: 'Interest Paid on NABARD Borrowings', + amount: 47083.71 }, { code: 'E-03', group: 'EXPENDITURE', subgroup: 'Operating Expenses', - label: 'Payments to & Provisions for Employees', - amount: 8420 + label: 'Operating Expenses (Staff, Admin, Establishment)', + amount: 14503.79 }, { code: 'E-04', group: 'EXPENDITURE', - subgroup: 'Operating Expenses', - label: 'Rent, Taxes & Lighting', - amount: 1240 + subgroup: 'Provisions', + label: 'Provision for Standard Assets', + amount: 730 + }, + { + code: 'E-05', + group: 'EXPENDITURE', + subgroup: 'Provisions', + label: 'Provision for Doubtful & Bad Debts (Loans & Advances)', + amount: 2068.2 }, - { code: 'E-05', group: 'EXPENDITURE', subgroup: 'Operating Expenses', label: 'Printing & Stationery', amount: 184 }, { code: 'E-06', group: 'EXPENDITURE', - subgroup: 'Operating Expenses', - label: 'Depreciation on Bank Property', - amount: 642 + subgroup: 'Provisions', + label: 'Bad Debts Written Off', + amount: 906.44 }, { code: 'E-07', group: 'EXPENDITURE', - subgroup: 'Operating Expenses', - label: 'Auditors Fees & Expenses', - amount: 124 - }, - { - code: 'E-08', - group: 'EXPENDITURE', - subgroup: 'Operating Expenses', - label: 'Repairs, Maintenance & Insurance', - amount: 386 - }, - { - code: 'E-09', - group: 'EXPENDITURE', - subgroup: 'Operating Expenses', - label: 'Other Operating Expenses', - amount: 824 - }, - { - code: 'E-10', - group: 'EXPENDITURE', subgroup: 'Provisions', - label: 'Provisions for NPA / Standard Assets', - amount: 4280 + label: 'Provision for Staff Training Reserve', + amount: 245.06 }, - { code: 'E-11', group: 'EXPENDITURE', subgroup: 'Provisions', label: 'Provisions for Tax', amount: 2120 } + { code: 'E-08', group: 'EXPENDITURE', subgroup: 'Provisions', label: 'Provision for Income Tax', amount: 4600 } ]; - // -------------------- Balance Sheet (₹ in Lakhs) -------------------- + // -------------------- Balance Sheet (₹ in Lakhs) — as on 31-03-2026, audited -------------------- bs: BsLine[] = [ { code: 'L-01', side: 'CAPITAL-LIAB', group: 'Capital & Reserves', label: 'Capital (Paid-up Share Capital)', - amount: 22000, - prevAmount: 20800 + amount: 92837.18, + prevAmount: 88842.87 }, { code: 'L-02', side: 'CAPITAL-LIAB', group: 'Capital & Reserves', label: 'Reserves & Surplus', - amount: 32400, - prevAmount: 28640 + amount: 155847.97, + prevAmount: 145524.37 }, { code: 'L-03', side: 'CAPITAL-LIAB', group: 'Deposits', - label: 'Demand Deposits — Current Accounts', - amount: 84200, - prevAmount: 78420 + label: 'Deposits', + amount: 1154054.96, + prevAmount: 997239.51 }, { code: 'L-04', side: 'CAPITAL-LIAB', - group: 'Deposits', - label: 'Savings Bank Deposits', - amount: 218600, - prevAmount: 198400 + group: 'Borrowings', + label: 'Borrowings (NABARD / Other Banks)', + amount: 1113954.48, + prevAmount: 993301.8 }, { code: 'L-05', side: 'CAPITAL-LIAB', - group: 'Deposits', - label: 'Term Deposits', - amount: 462800, - prevAmount: 412400 - }, - { - code: 'L-06', - side: 'CAPITAL-LIAB', - group: 'Borrowings', - label: 'Borrowings from RBI / NABARD', - amount: 14180, - prevAmount: 16240 - }, - { - code: 'L-07', - side: 'CAPITAL-LIAB', - group: 'Borrowings', - label: 'Other Borrowings', - amount: 10000, - prevAmount: 9420 - }, - { - code: 'L-08', - side: 'CAPITAL-LIAB', - group: 'Other Liabilities', - label: 'Bills Payable', - amount: 4420, - prevAmount: 3980 - }, - { - code: 'L-09', - side: 'CAPITAL-LIAB', - group: 'Other Liabilities', - label: 'Inter-Office Adjustments (Net)', - amount: 1820, - prevAmount: 1640 - }, - { - code: 'L-10', - side: 'CAPITAL-LIAB', - group: 'Other Liabilities', - label: 'Interest Accrued', - amount: 6240, - prevAmount: 5840 - }, - { - code: 'L-11', - side: 'CAPITAL-LIAB', group: 'Other Liabilities', label: 'Other Liabilities & Provisions', - amount: 5940, - prevAmount: 5420 + amount: 121037.61, + prevAmount: 124706.3 }, { code: 'A-01', side: 'ASSETS', group: 'Cash & Bank Balances', - label: 'Cash on Hand', - amount: 8420, - prevAmount: 7820 + label: 'Cash & Balances with RBI', + amount: 32627.16, + prevAmount: 33361.93 }, { code: 'A-02', side: 'ASSETS', - group: 'Cash & Bank Balances', - label: 'Balances with RBI', - amount: 38400, - prevAmount: 34200 + group: 'Money at Call', + label: 'Balances with Other Banks & Money at Call/Short Notice', + amount: 604619.45, + prevAmount: 549599.47 }, { code: 'A-03', side: 'ASSETS', - group: 'Cash & Bank Balances', - label: 'Balances with Other Banks — Current', - amount: 14800, - prevAmount: 12400 + group: 'Investments', + label: 'Investments', + amount: 316953.61, + prevAmount: 248274.61 }, { code: 'A-04', side: 'ASSETS', - group: 'Cash & Bank Balances', - label: 'Balances with Other Banks — Term Deposits', - amount: 10000, - prevAmount: 9200 + group: 'Advances', + label: 'Loans & Advances', + amount: 1627711.4, + prevAmount: 1466401.79 }, { code: 'A-05', side: 'ASSETS', - group: 'Money at Call', - label: 'Money at Call & Short Notice', - amount: 12400, - prevAmount: 10800 + group: 'Fixed Assets', + label: 'Fixed Assets (Property, Plant & Equipment)', + amount: 33791.75, + prevAmount: 33727.66 }, { code: 'A-06', side: 'ASSETS', - group: 'Investments', - label: 'Government Securities (SLR)', - amount: 142400, - prevAmount: 128600 - }, - { - code: 'A-07', - side: 'ASSETS', - group: 'Investments', - label: 'Other Approved Securities', - amount: 28200, - prevAmount: 24800 - }, - { - code: 'A-08', - side: 'ASSETS', - group: 'Investments', - label: 'Shares / Debentures / Bonds', - amount: 14000, - prevAmount: 12200 - }, - { - code: 'A-09', - side: 'ASSETS', - group: 'Advances', - label: 'Cash Credit, Overdraft & Demand Loans', - amount: 168400, - prevAmount: 152800 - }, - { - code: 'A-10', - side: 'ASSETS', - group: 'Advances', - label: 'Term Loans (Secured)', - amount: 217865, - prevAmount: 198400 - }, - { - code: 'A-11', - side: 'ASSETS', - group: 'Advances', - label: 'Term Loans (Unsecured)', - amount: 30000, - prevAmount: 27200 - }, - { - code: 'A-12', - side: 'ASSETS', - group: 'Fixed Assets', - label: 'Premises (Net of Depreciation)', - amount: 9420, - prevAmount: 8820 - }, - { - code: 'A-13', - side: 'ASSETS', - group: 'Fixed Assets', - label: 'Other Fixed Assets', - amount: 4780, - prevAmount: 4620 - }, - { - code: 'A-14', - side: 'ASSETS', group: 'Other Assets', - label: 'Inter-Office Adjustments (Net)', - amount: 0, - prevAmount: 0 - }, - { - code: 'A-15', - side: 'ASSETS', - group: 'Other Assets', - label: 'Tax Paid in Advance & TDS', - amount: 5420, - prevAmount: 4820 - }, - { code: 'A-16', side: 'ASSETS', group: 'Other Assets', label: 'Stationery & Stamps', amount: 184, prevAmount: 142 }, - { - code: 'A-17', - side: 'ASSETS', - group: 'Other Assets', - label: 'Sundry Debtors & Other Assets', - amount: 2876, - prevAmount: 2540 + label: 'Other Assets', + amount: 22028.83, + prevAmount: 18249.4 } ]; + // -------------------- Contingent Liabilities (Schedule 12, ₹ in Lakhs) -------------------- + // Only the audited TOTAL is reported here — the schedule's individual line items (claims not + // acknowledged as debts, letter of guarantees, DEAF transfers, gratuity/RBI-penalty/GST disputes) + // could not be re-verified against the source figures with confidence, so they are omitted + // rather than risk showing an unverified breakdown. + contingentLiabItems: ContingentLiabItem[] = [ + { code: 'I', label: 'Claims against the bank not acknowledged as debts' }, + { code: 'II', label: 'Letter of Guarantees' }, + { code: 'III', label: 'Amounts transferred to Depositor Education and Awareness Fund (DEAF)' }, + { code: 'IV', label: 'Other items for which the bank is contingently liable (Gratuity / RBI Penalty / GST Demand)' } + ]; + contingentLiab = { + current: 1633.3, + previous: 1522.13 + }; + get clVariation(): number { + return this.variation(this.contingentLiab.current, this.contingentLiab.previous); + } + get clVariationPct(): number { + return this.variationPct(this.contingentLiab.current, this.contingentLiab.previous); + } + // -------------------- GL Wise DR/CR Data -------------------- glReport: GlLine[] = [ { @@ -1008,6 +903,7 @@ export class AccountingReportsDialogComponent { if (this.activeReport === 'PNL') return this.exportPnlCsv(); if (this.activeReport === 'BALANCE-SHEET') return this.exportBsCsv(false); if (this.activeReport === 'COMPARATIVE-BS') return this.exportBsCsv(true); + if (this.activeReport === 'CONTINGENT-LIAB') return this.exportContingentLiabCsv(); if (this.activeReport === 'GL-DR-CR') return this.exportGlCsv(); if (this.activeReport === 'MISC-EXP') return this.exportMiscCsv(); } @@ -1155,6 +1051,49 @@ export class AccountingReportsDialogComponent { this.saveCsv(rows, `${comparative ? 'Comparative-' : ''}Balance-Sheet-${this.dateTag()}.csv`); } + exportContingentLiabCsv(): void { + const rows: string[][] = []; + rows.push([ + this.bank.name, + this.bank.branch + ]); + rows.push([ + 'CONTINGENT LIABILITIES (SCHEDULE 12)', + `As on ${this.bank.asOnDate}` + ]); + rows.push([]); + rows.push(['Items covered:']); + for (const item of this.contingentLiabItems) { + rows.push([ + item.code, + item.label + ]); + } + rows.push([]); + rows.push([ + '', + 'TOTAL CONTINGENT LIABILITIES', + `FY ${this.bank.fiscalYear} (₹ Lakh)`, + `FY ${this.bank.prevFiscalYear} (₹ Lakh)`, + 'Variation', + 'Variation %' + ]); + rows.push([ + '', + '', + this.contingentLiab.current.toFixed(2), + this.contingentLiab.previous.toFixed(2), + this.clVariation.toFixed(2), + this.clVariationPct.toFixed(2) + '%' + ]); + rows.push([]); + rows.push([ + 'Certified by', + this.bank.principalOfficer + ' — ' + this.bank.poDesignation + ]); + this.saveCsv(rows, `Contingent-Liabilities-${this.dateTag()}.csv`); + } + exportGlCsv(): void { const rows: string[][] = []; rows.push([ diff --git a/src/app/home/dashboard/alm-report-dialog/alm-report-dialog.component.ts b/src/app/home/dashboard/alm-report-dialog/alm-report-dialog.component.ts index c15e6b559..7ce0a4ec7 100644 --- a/src/app/home/dashboard/alm-report-dialog/alm-report-dialog.component.ts +++ b/src/app/home/dashboard/alm-report-dialog/alm-report-dialog.component.ts @@ -54,7 +54,7 @@ export class AlmReportDialogComponent { activeTab: 'dashboard' | 'ladder' | 'monthly' | 'returns' = 'dashboard'; bank = { - name: 'Bharat Urban Bank Ltd', + name: 'CBSNexora Bank Ltd', branch: 'Head Office', asOnDate: '31-03-2026', quarter: 'Q4 FY 2025-26', @@ -63,7 +63,7 @@ export class AlmReportDialogComponent { principalOfficer: 'Karthik Kamath', formCode: 'Form ALM-1', reportRefNo: '1036', - userCode: 'BUBL01', + userCode: 'CBSN01', /** Net Demand & Time Liabilities — denominator for ratios */ ndtl: 740000, // ₹7,400 Cr in Lakhs /** RBI tolerance: cumulative negative gap up to 14 days ≤ 5%, 28 days ≤ 10% */ diff --git a/src/app/home/dashboard/cims-xbrl-dialog/cims-xbrl-dialog.component.ts b/src/app/home/dashboard/cims-xbrl-dialog/cims-xbrl-dialog.component.ts index fbf07020c..85a72408d 100644 --- a/src/app/home/dashboard/cims-xbrl-dialog/cims-xbrl-dialog.component.ts +++ b/src/app/home/dashboard/cims-xbrl-dialog/cims-xbrl-dialog.component.ts @@ -14,7 +14,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MatTooltipModule } from '@angular/material/tooltip'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; -export type CimsFormCode = 'OSS-2' | 'PSA' | 'RAL' | 'RCP-UCB'; +export type CimsFormCode = 'OSS-2' | 'PSA' | 'RAL' | 'RCP-UCB' | 'OSS-4' | 'OSS-5' | 'OSS-6' | 'OSS-7'; export interface CimsXbrlDialogData { initialForm?: CimsFormCode; @@ -64,20 +64,20 @@ export class CimsXbrlDialogComponent { activeTab: 'filing' | 'data' | 'preview' = 'filing'; bank = { - name: 'Bharat Urban Bank Ltd', + name: 'CBSNexora Bank Ltd', branch: 'Head Office', - bsrCode: 'BUBL0000123', - ifsc: 'BUBL0000123', - legalEntityId: 'BUBL-LEI-2025', + bsrCode: 'CBSN0000123', + ifsc: 'CBSN0000123', + legalEntityId: 'CBSN-LEI-2025', pan: 'AAACB1234L', asOnDate: '31-03-2026', quarter: 'Q4 FY 2025-26', fiscalYear: '2025-26', principalOfficer: 'Karthik Kamath', poDesignation: 'Chief Compliance Officer', - poEmail: 'compliance@bharaturbanbank.in', + poEmail: 'compliance@cbsnexorabank.in', poMobile: '+91-9988002211', - cimsUserId: 'BUBL_CIMS_001', + cimsUserId: 'CBSN_CIMS_001', cimsPortal: 'https://cims.rbi.org.in/' }; @@ -97,7 +97,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:CapAdq.CRAR', section: 'Capital Adequacy', label: 'CRAR (Total)', - value: 14.82, + value: 21.82, unit: 'Percent', type: 'percent' }, @@ -105,7 +105,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:CapAdq.Tier1', section: 'Capital Adequacy', label: 'Tier-I CRAR', - value: 12.18, + value: 20.51, unit: 'Percent', type: 'percent' }, @@ -113,7 +113,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:CapAdq.Tier2', section: 'Capital Adequacy', label: 'Tier-II CRAR', - value: 2.64, + value: 1.31, unit: 'Percent', type: 'percent' }, @@ -121,7 +121,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Asset.Total', section: 'Asset Classification', label: 'Total Advances (₹ Lakh)', - value: 416265, + value: 4112.04, unit: 'INR-Lakh', type: 'monetary' }, @@ -129,7 +129,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Asset.Standard', section: 'Asset Classification', label: 'Standard Assets (₹ Lakh)', - value: 401820, + value: 3845.88, unit: 'INR-Lakh', type: 'monetary' }, @@ -137,7 +137,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Asset.SubStd', section: 'Asset Classification', label: 'Sub-Standard (₹ Lakh)', - value: 6220, + value: 102.41, unit: 'INR-Lakh', type: 'monetary' }, @@ -145,7 +145,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Asset.Doubtful', section: 'Asset Classification', label: 'Doubtful (₹ Lakh)', - value: 5840, + value: 163.75, unit: 'INR-Lakh', type: 'monetary' }, @@ -153,7 +153,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Asset.Loss', section: 'Asset Classification', label: 'Loss (₹ Lakh)', - value: 2385, + value: 0, unit: 'INR-Lakh', type: 'monetary' }, @@ -161,7 +161,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Asset.GNPA', section: 'NPA Position', label: 'Gross NPA (₹ Lakh)', - value: 14445, + value: 266.16, unit: 'INR-Lakh', type: 'monetary' }, @@ -169,7 +169,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Asset.NNPA', section: 'NPA Position', label: 'Net NPA (₹ Lakh)', - value: 5212, + value: -96.33, unit: 'INR-Lakh', type: 'monetary' }, @@ -177,7 +177,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Asset.GNPAPct', section: 'NPA Position', label: 'GNPA %', - value: 3.47, + value: 6.47, unit: 'Percent', type: 'percent' }, @@ -185,7 +185,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Asset.NNPAPct', section: 'NPA Position', label: 'NNPA %', - value: 1.27, + value: -2.6, unit: 'Percent', type: 'percent' }, @@ -193,7 +193,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Asset.PCR', section: 'NPA Position', label: 'Provision Coverage Ratio', - value: 64.13, + value: 136.24, unit: 'Percent', type: 'percent' }, @@ -201,7 +201,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Profit.NIM', section: 'Profitability', label: 'Net Interest Margin', - value: 3.21, + value: 0.51, unit: 'Percent', type: 'percent' }, @@ -209,7 +209,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Profit.ROA', section: 'Profitability', label: 'Return on Assets', - value: 0.92, + value: 0.67, unit: 'Percent', type: 'percent' }, @@ -217,7 +217,7 @@ export class CimsXbrlDialogComponent { ref: 'oss2:Profit.ROE', section: 'Profitability', label: 'Return on Equity', - value: 11.48, + value: 5.38, unit: 'Percent', type: 'percent' }, @@ -254,7 +254,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:Reference.ANBC', section: 'Reference', label: 'Adjusted Net Bank Credit (₹ Lakh)', - value: 600000, + value: 3274.83, unit: 'INR-Lakh', type: 'monetary' }, @@ -262,7 +262,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:Reference.OBE', section: 'Reference', label: 'Credit Equivalent of OBE (₹ Lakh)', - value: 25000, + value: 0, unit: 'INR-Lakh', type: 'monetary' }, @@ -270,7 +270,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.Total', section: 'PSL Achievement', label: 'Total PSL Outstanding (₹ Lakh)', - value: 241700, + value: 2485.67, unit: 'INR-Lakh', type: 'monetary' }, @@ -278,7 +278,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.TotalPct', section: 'PSL Achievement', label: 'Total PSL % of ANBC', - value: 40.28, + value: 75.9, unit: 'Percent', type: 'percent' }, @@ -286,7 +286,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.Agri', section: 'Sub-targets', label: 'Agriculture (₹ Lakh)', - value: 124000, + value: 39.0, unit: 'INR-Lakh', type: 'monetary' }, @@ -294,7 +294,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.AgriPct', section: 'Sub-targets', label: 'Agriculture % of ANBC', - value: 20.67, + value: 1.19, unit: 'Percent', type: 'percent' }, @@ -302,7 +302,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.SMF', section: 'Sub-targets', label: 'Small & Marginal Farmers (₹ Lakh)', - value: 72000, + value: 0, unit: 'INR-Lakh', type: 'monetary' }, @@ -310,23 +310,23 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.SMFPct', section: 'Sub-targets', label: 'SMF % of ANBC', - value: 12.0, + value: 0, unit: 'Percent', type: 'percent' }, { ref: 'psa:PSL.MicroEnt', section: 'Sub-targets', - label: 'Micro Enterprises (₹ Lakh)', - value: 51000, + label: 'MSME Enterprises (₹ Lakh)', + value: 2313.83, unit: 'INR-Lakh', type: 'monetary' }, { ref: 'psa:PSL.MicroPct', section: 'Sub-targets', - label: 'Micro Enterprises % of ANBC', - value: 8.5, + label: 'MSME Enterprises % of ANBC', + value: 70.65, unit: 'Percent', type: 'percent' }, @@ -334,7 +334,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.Weaker', section: 'Sub-targets', label: 'Weaker Sections (₹ Lakh)', - value: 85500, + value: 990.28, unit: 'INR-Lakh', type: 'monetary' }, @@ -342,7 +342,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.WeakerPct', section: 'Sub-targets', label: 'Weaker Sections % of ANBC', - value: 14.25, + value: 30.22, unit: 'Percent', type: 'percent' }, @@ -350,7 +350,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.Housing', section: 'Other Categories', label: 'Housing (₹ Lakh)', - value: 9200, + value: 115.12, unit: 'INR-Lakh', type: 'monetary' }, @@ -358,7 +358,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.Education', section: 'Other Categories', label: 'Education (₹ Lakh)', - value: 4200, + value: 17.32, unit: 'INR-Lakh', type: 'monetary' }, @@ -366,7 +366,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.Export', section: 'Other Categories', label: 'Export Credit (₹ Lakh)', - value: 3800, + value: 0, unit: 'INR-Lakh', type: 'monetary' }, @@ -374,7 +374,7 @@ export class CimsXbrlDialogComponent { ref: 'psa:PSL.RenEnergy', section: 'Other Categories', label: 'Renewable Energy (₹ Lakh)', - value: 2400, + value: 0, unit: 'INR-Lakh', type: 'monetary' } @@ -395,15 +395,15 @@ export class CimsXbrlDialogComponent { ref: 'ral:Liab.Capital', section: 'Liabilities', label: 'Capital (₹ Lakh)', - value: 22000, + value: 272.78, unit: 'INR-Lakh', type: 'monetary' }, { ref: 'ral:Liab.Reserves', section: 'Liabilities', - label: 'Reserves & Surplus (₹ Lakh)', - value: 32400, + label: 'Reserves, Surplus & Profit (₹ Lakh)', + value: 712.6, unit: 'INR-Lakh', type: 'monetary' }, @@ -411,7 +411,7 @@ export class CimsXbrlDialogComponent { ref: 'ral:Liab.DepDemand', section: 'Liabilities', label: 'Demand Deposits (₹ Lakh)', - value: 84200, + value: 195.92, unit: 'INR-Lakh', type: 'monetary' }, @@ -419,7 +419,7 @@ export class CimsXbrlDialogComponent { ref: 'ral:Liab.DepSavings', section: 'Liabilities', label: 'Savings Deposits (₹ Lakh)', - value: 218600, + value: 2081.16, unit: 'INR-Lakh', type: 'monetary' }, @@ -427,7 +427,7 @@ export class CimsXbrlDialogComponent { ref: 'ral:Liab.DepTerm', section: 'Liabilities', label: 'Term Deposits (₹ Lakh)', - value: 462800, + value: 4066.01, unit: 'INR-Lakh', type: 'monetary' }, @@ -435,7 +435,7 @@ export class CimsXbrlDialogComponent { ref: 'ral:Liab.Borrow', section: 'Liabilities', label: 'Borrowings (₹ Lakh)', - value: 24180, + value: 0, unit: 'INR-Lakh', type: 'monetary' }, @@ -443,7 +443,7 @@ export class CimsXbrlDialogComponent { ref: 'ral:Liab.Other', section: 'Liabilities', label: 'Other Liabilities & Provisions (₹ Lakh)', - value: 18420, + value: 780.73, unit: 'INR-Lakh', type: 'monetary' }, @@ -451,7 +451,7 @@ export class CimsXbrlDialogComponent { ref: 'ral:Asset.Cash', section: 'Assets', label: 'Cash on Hand (₹ Lakh)', - value: 8420, + value: 99.96, unit: 'INR-Lakh', type: 'monetary' }, @@ -459,15 +459,15 @@ export class CimsXbrlDialogComponent { ref: 'ral:Asset.RBI', section: 'Assets', label: 'Balances with RBI (₹ Lakh)', - value: 38400, + value: 0, unit: 'INR-Lakh', type: 'monetary' }, { ref: 'ral:Asset.Banks', section: 'Assets', - label: 'Balances with Banks (₹ Lakh)', - value: 24800, + label: 'Balances with Banks & Other Institutions (₹ Lakh)', + value: 1349.53, unit: 'INR-Lakh', type: 'monetary' }, @@ -475,7 +475,7 @@ export class CimsXbrlDialogComponent { ref: 'ral:Asset.Money', section: 'Assets', label: 'Money at Call & Short Notice (₹ Lakh)', - value: 12400, + value: 0, unit: 'INR-Lakh', type: 'monetary' }, @@ -483,7 +483,7 @@ export class CimsXbrlDialogComponent { ref: 'ral:Asset.Invest', section: 'Assets', label: 'Investments (₹ Lakh)', - value: 184600, + value: 2342.97, unit: 'INR-Lakh', type: 'monetary' }, @@ -491,7 +491,7 @@ export class CimsXbrlDialogComponent { ref: 'ral:Asset.Adv', section: 'Assets', label: 'Advances (₹ Lakh)', - value: 416265, + value: 3912.88, unit: 'INR-Lakh', type: 'monetary' }, @@ -499,23 +499,23 @@ export class CimsXbrlDialogComponent { ref: 'ral:Asset.Fixed', section: 'Assets', label: 'Fixed Assets (₹ Lakh)', - value: 14200, + value: 49.48, unit: 'INR-Lakh', type: 'monetary' }, { ref: 'ral:Asset.Other', section: 'Assets', - label: 'Other Assets (₹ Lakh)', - value: 12480, + label: 'Other Assets & Interest Receivable (₹ Lakh)', + value: 354.38, unit: 'INR-Lakh', type: 'monetary' }, { ref: 'ral:OBE.Guar', section: 'Off-Balance Sheet', - label: 'Bank Guarantees (₹ Lakh)', - value: 18420, + label: 'Contingent Liabilities (₹ Lakh)', + value: 26.38, unit: 'INR-Lakh', type: 'monetary' }, @@ -523,7 +523,7 @@ export class CimsXbrlDialogComponent { ref: 'ral:OBE.LC', section: 'Off-Balance Sheet', label: 'Letters of Credit (₹ Lakh)', - value: 6580, + value: 0, unit: 'INR-Lakh', type: 'monetary' } @@ -653,6 +653,293 @@ export class CimsXbrlDialogComponent { type: 'monetary' } ] + }, + 'OSS-4': { + code: 'OSS-4', + name: 'OSS-4', + fullName: 'Connected Lending & Large Exposure Statement', + description: + 'Quarterly statement of loans to directors/relatives, senior officers, and exposures exceeding prudential thresholds. Illustrative figures — no source filing was provided for this return; values are modelled on this bank\'s own capital/advances scale for consistency.', + cimsCode: 'CIMS_OSS_004', + taxonomy: 'rbi-cims-oss4-2024-04-01', + periodicity: 'Quarterly', + lastFiled: '15-01-2026', + nextDue: '15-04-2026', + fields: [ + { + ref: 'oss4:Connected.Directors', + section: 'Connected Lending', + label: 'Loans to Directors & Relatives (₹ Lakh)', + value: 42.5, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss4:Connected.SrOfficers', + section: 'Connected Lending', + label: 'Loans to Senior Officers (₹ Lakh)', + value: 18.75, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss4:Connected.Accounts', + section: 'Connected Lending', + label: 'Number of Connected Lending Accounts', + value: 12, + unit: 'Number', + type: 'numeric' + }, + { + ref: 'oss4:LargeExp.Amount', + section: 'Large Exposures', + label: 'Exposures > 10% of Capital Funds (₹ Lakh)', + value: 285.0, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss4:LargeExp.Pct', + section: 'Large Exposures', + label: 'Large Exposures as % of Capital Funds', + value: 30.58, + unit: 'Percent', + type: 'percent' + }, + { + ref: 'oss4:LargeExp.SingleBreach', + section: 'Large Exposures', + label: 'Single Borrower Limit Breaches', + value: 0, + unit: 'Number', + type: 'numeric' + }, + { + ref: 'oss4:LargeExp.GroupBreach', + section: 'Large Exposures', + label: 'Group Borrower Limit Breaches', + value: 0, + unit: 'Number', + type: 'numeric' + } + ] + }, + 'OSS-5': { + code: 'OSS-5', + name: 'OSS-5', + fullName: 'Institutional & Membership Profile', + description: + 'Annual statement of branch network, staff strength, membership and depositor/borrower base. Illustrative figures — no source filing was provided for this return; membership share capital is aligned to this bank\'s real paid-up capital figure.', + cimsCode: 'CIMS_OSS_005', + taxonomy: 'rbi-cims-oss5-2024-04-01', + periodicity: 'Annual', + lastFiled: '30-04-2025', + nextDue: '30-04-2026', + fields: [ + { + ref: 'oss5:Profile.Branches', + section: 'Network', + label: 'Number of Branches', + value: 8, + unit: 'Number', + type: 'numeric' + }, + { + ref: 'oss5:Profile.Employees', + section: 'Network', + label: 'Number of Employees', + value: 64, + unit: 'Number', + type: 'numeric' + }, + { + ref: 'oss5:Profile.AreaOfOperation', + section: 'Network', + label: 'Area of Operation', + value: 'Single District', + type: 'string' + }, + { + ref: 'oss5:Profile.Members', + section: 'Membership', + label: 'Number of Regular Members', + value: 18450, + unit: 'Number', + type: 'numeric' + }, + { + ref: 'oss5:Profile.ShareCapital', + section: 'Membership', + label: 'Membership Share Capital (₹ Lakh)', + value: 272.78, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss5:Profile.Depositors', + section: 'Customer Base', + label: 'Number of Depositors', + value: 42180, + unit: 'Number', + type: 'numeric' + }, + { + ref: 'oss5:Profile.Borrowers', + section: 'Customer Base', + label: 'Number of Borrowers', + value: 3860, + unit: 'Number', + type: 'numeric' + } + ] + }, + 'OSS-6': { + code: 'OSS-6', + name: 'OSS-6', + fullName: 'Structural Liquidity & Interest Rate Sensitivity Statement', + description: + 'Fortnightly maturity-bucket gap analysis of rate-sensitive assets and liabilities. Illustrative figures — no source filing was provided for this return.', + cimsCode: 'CIMS_OSS_006', + taxonomy: 'rbi-cims-oss6-2024-04-01', + periodicity: 'Monthly', + lastFiled: '14-04-2026', + nextDue: '28-04-2026', + fields: [ + { + ref: 'oss6:Gap.1to14Days', + section: 'Maturity Gap (₹ Lakh)', + label: '1-14 Days', + value: -45.2, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss6:Gap.15to28Days', + section: 'Maturity Gap (₹ Lakh)', + label: '15-28 Days', + value: -12.8, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss6:Gap.29DaysTo3M', + section: 'Maturity Gap (₹ Lakh)', + label: '29 Days to 3 Months', + value: 88.4, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss6:Gap.Over3To6M', + section: 'Maturity Gap (₹ Lakh)', + label: 'Over 3 Months to 6 Months', + value: 62.15, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss6:Gap.Over6MTo1Y', + section: 'Maturity Gap (₹ Lakh)', + label: 'Over 6 Months to 1 Year', + value: -28.9, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss6:Gap.Over1To3Y', + section: 'Maturity Gap (₹ Lakh)', + label: 'Over 1 Year to 3 Years', + value: 210.6, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss6:Gap.Over3To5Y', + section: 'Maturity Gap (₹ Lakh)', + label: 'Over 3 Years to 5 Years', + value: 95.3, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss6:Gap.Over5Y', + section: 'Maturity Gap (₹ Lakh)', + label: 'Over 5 Years', + value: -18.75, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss6:Liq.CumNegGapPct', + section: 'Liquidity Ratios', + label: 'Cumulative Negative Gap (14-Day) as % of Cumulative Outflows', + value: 4.85, + unit: 'Percent', + type: 'percent' + } + ] + }, + 'OSS-7': { + code: 'OSS-7', + name: 'OSS-7', + fullName: 'Statement of Frauds & Customer Complaints', + description: + 'Quarterly statement of frauds reported and customer-complaint disposal. Illustrative figures — no source filing was provided for this return.', + cimsCode: 'CIMS_OSS_007', + taxonomy: 'rbi-cims-oss7-2024-04-01', + periodicity: 'Quarterly', + lastFiled: '15-01-2026', + nextDue: '15-04-2026', + fields: [ + { + ref: 'oss7:Fraud.Count', + section: 'Frauds', + label: 'Number of Frauds Reported', + value: 1, + unit: 'Number', + type: 'numeric' + }, + { + ref: 'oss7:Fraud.Amount', + section: 'Frauds', + label: 'Amount Involved in Frauds (₹ Lakh)', + value: 2.4, + unit: 'INR-Lakh', + type: 'monetary' + }, + { + ref: 'oss7:Complaints.Received', + section: 'Customer Complaints', + label: 'Complaints Received (Quarter)', + value: 14, + unit: 'Number', + type: 'numeric' + }, + { + ref: 'oss7:Complaints.Resolved', + section: 'Customer Complaints', + label: 'Complaints Resolved', + value: 12, + unit: 'Number', + type: 'numeric' + }, + { + ref: 'oss7:Complaints.Pending', + section: 'Customer Complaints', + label: 'Complaints Pending', + value: 2, + unit: 'Number', + type: 'numeric' + }, + { + ref: 'oss7:Complaints.PendingOver30', + section: 'Customer Complaints', + label: 'Complaints Pending > 30 Days', + value: 0, + unit: 'Number', + type: 'numeric' + } + ] } }; @@ -660,7 +947,11 @@ export class CimsXbrlDialogComponent { 'OSS-2', 'PSA', 'RAL', - 'RCP-UCB' + 'RCP-UCB', + 'OSS-4', + 'OSS-5', + 'OSS-6', + 'OSS-7' ]; data = inject(MAT_DIALOG_DATA, { optional: true }); diff --git a/src/app/home/dashboard/ckyc-reports-dialog/ckyc-reports-dialog.component.ts b/src/app/home/dashboard/ckyc-reports-dialog/ckyc-reports-dialog.component.ts index 9f4270bfe..f0871bc76 100644 --- a/src/app/home/dashboard/ckyc-reports-dialog/ckyc-reports-dialog.component.ts +++ b/src/app/home/dashboard/ckyc-reports-dialog/ckyc-reports-dialog.component.ts @@ -76,7 +76,7 @@ export class CkycReportsDialogComponent { activeReport: CkycReportCode; bank = { - name: 'Bharat Urban Bank Ltd', + name: 'CBSNexora Bank Ltd', branch: 'Head Office', asOnDate: '29-01-2026', fiscalYear: '2025-26', @@ -84,7 +84,7 @@ export class CkycReportsDialogComponent { principalOfficer: 'Karthik Kamath', poDesignation: 'Principal Compliance Officer', reportRefNo: '2075/1', - userCode: 'BUBL01', + userCode: 'CBSN01', fyStart: '01-04-2025', fyEnd: '31-03-2026' }; @@ -121,7 +121,7 @@ export class CkycReportsDialogComponent { rekyc: RekycRow[] = [ { - ucode: 'BUBL000201', + ucode: 'CBSN000201', name: 'Ravi Kumar Sharma', customerType: 'INDIVIDUAL', risk: 'LOW', @@ -132,7 +132,7 @@ export class CkycReportsDialogComponent { segment: 'BELOW-25-LACS' }, { - ucode: 'BUBL000418', + ucode: 'CBSN000418', name: 'Priya Patel', customerType: 'INDIVIDUAL', risk: 'MEDIUM', @@ -143,7 +143,7 @@ export class CkycReportsDialogComponent { segment: 'ABOVE-25-LACS' }, { - ucode: 'BUBL000522', + ucode: 'CBSN000522', name: 'Arjun Deshmukh', customerType: 'INDIVIDUAL', risk: 'LOW', @@ -154,7 +154,7 @@ export class CkycReportsDialogComponent { segment: 'BELOW-25-LACS' }, { - ucode: 'BUBL000711', + ucode: 'CBSN000711', name: 'Vikram Reddy', customerType: 'INDIVIDUAL', risk: 'HIGH', @@ -165,7 +165,7 @@ export class CkycReportsDialogComponent { segment: 'ABOVE-25-LACS' }, { - ucode: 'BUBL000814', + ucode: 'CBSN000814', name: 'Lakshmi Iyer', customerType: 'INDIVIDUAL', risk: 'LOW', @@ -176,7 +176,7 @@ export class CkycReportsDialogComponent { segment: 'BELOW-25-LACS' }, { - ucode: 'BUBL001012', + ucode: 'CBSN001012', name: 'Nirav Shah', customerType: 'INDIVIDUAL', risk: 'MEDIUM', @@ -187,7 +187,7 @@ export class CkycReportsDialogComponent { segment: 'BELOW-25-LACS' }, { - ucode: 'BUBL001145', + ucode: 'CBSN001145', name: 'Kavita Verma', customerType: 'INDIVIDUAL', risk: 'HIGH', @@ -198,7 +198,7 @@ export class CkycReportsDialogComponent { segment: 'ABOVE-25-LACS' }, { - ucode: 'BUBL001458', + ucode: 'CBSN001458', name: 'Sameer Kapoor', customerType: 'INDIVIDUAL', risk: 'MEDIUM', @@ -209,7 +209,7 @@ export class CkycReportsDialogComponent { segment: 'ABOVE-25-LACS' }, { - ucode: 'BUBL001721', + ucode: 'CBSN001721', name: 'Karthik Subramanian', customerType: 'INDIVIDUAL', risk: 'LOW', @@ -220,7 +220,7 @@ export class CkycReportsDialogComponent { segment: 'BELOW-25-LACS' }, { - ucode: 'BUBL002012', + ucode: 'CBSN002012', name: 'Abhishek Banerjee', customerType: 'INDIVIDUAL', risk: 'MEDIUM', @@ -231,7 +231,7 @@ export class CkycReportsDialogComponent { segment: 'ABOVE-25-LACS' }, { - ucode: 'BUBL002314', + ucode: 'CBSN002314', name: 'Gaurav Thakur', customerType: 'INDIVIDUAL', risk: 'LOW', @@ -242,7 +242,7 @@ export class CkycReportsDialogComponent { segment: 'BELOW-25-LACS' }, { - ucode: 'BUBL002615', + ucode: 'CBSN002615', name: 'Manmohan Singh Gill', customerType: 'INDIVIDUAL', risk: 'HIGH', @@ -253,7 +253,7 @@ export class CkycReportsDialogComponent { segment: 'BELOW-25-LACS' }, { - ucode: 'BUBL002918', + ucode: 'CBSN002918', name: 'Sunita Devi', customerType: 'INDIVIDUAL', risk: 'LOW', @@ -264,7 +264,7 @@ export class CkycReportsDialogComponent { segment: 'BELOW-25-LACS' }, { - ucode: 'BUBL003221', + ucode: 'CBSN003221', name: 'Deepak Tiwari', customerType: 'INDIVIDUAL', risk: 'MEDIUM', @@ -275,7 +275,7 @@ export class CkycReportsDialogComponent { segment: 'ABOVE-25-LACS' }, { - ucode: 'BUBL003524', + ucode: 'CBSN003524', name: 'Harpreet Kaur', customerType: 'INDIVIDUAL', risk: 'MEDIUM', @@ -286,7 +286,7 @@ export class CkycReportsDialogComponent { segment: 'ABOVE-25-LACS' }, { - ucode: 'BUBL003812', + ucode: 'CBSN003812', name: 'Saraswati Mahila Co-op Society', customerType: 'SOCIETY', risk: 'MEDIUM', @@ -297,7 +297,7 @@ export class CkycReportsDialogComponent { segment: 'ABOVE-25-LACS' }, { - ucode: 'BUBL004115', + ucode: 'CBSN004115', name: 'Aditya Enterprises', customerType: 'FIRM', risk: 'HIGH', @@ -308,7 +308,7 @@ export class CkycReportsDialogComponent { segment: 'ABOVE-25-LACS' }, { - ucode: 'BUBL004318', + ucode: 'CBSN004318', name: 'Vasudha Trading HUF', customerType: 'HUF', risk: 'MEDIUM', @@ -332,7 +332,7 @@ export class CkycReportsDialogComponent { branchCode: '01', branch: 'Mumbai Main', acType: 'SB', - clientId: 'BUBL000201', + clientId: 'CBSN000201', customerName: 'Ravi Kumar Sharma', oldRisk: 'LOW', newRisk: 'LOW', @@ -345,7 +345,7 @@ export class CkycReportsDialogComponent { branchCode: '02', branch: 'Pune FC Road', acType: 'CA', - clientId: 'BUBL000418', + clientId: 'CBSN000418', customerName: 'Priya Patel', oldRisk: 'LOW', newRisk: 'MEDIUM', @@ -358,7 +358,7 @@ export class CkycReportsDialogComponent { branchCode: '03', branch: 'Nagpur Dharampeth', acType: 'TL', - clientId: 'BUBL000522', + clientId: 'CBSN000522', customerName: 'Arjun Deshmukh', oldRisk: 'MEDIUM', newRisk: 'LOW', @@ -371,7 +371,7 @@ export class CkycReportsDialogComponent { branchCode: '04', branch: 'Bengaluru Jayanagar', acType: 'OD', - clientId: 'BUBL000711', + clientId: 'CBSN000711', customerName: 'Vikram Reddy', oldRisk: 'MEDIUM', newRisk: 'HIGH', @@ -384,7 +384,7 @@ export class CkycReportsDialogComponent { branchCode: '05', branch: 'Bengaluru Indiranagar', acType: 'SB', - clientId: 'BUBL000814', + clientId: 'CBSN000814', customerName: 'Lakshmi Iyer', oldRisk: 'LOW', newRisk: 'LOW', @@ -397,7 +397,7 @@ export class CkycReportsDialogComponent { branchCode: '06', branch: 'Ahmedabad Satellite', acType: 'CC', - clientId: 'BUBL001012', + clientId: 'CBSN001012', customerName: 'Nirav Shah', oldRisk: 'LOW', newRisk: 'MEDIUM', @@ -410,7 +410,7 @@ export class CkycReportsDialogComponent { branchCode: '07', branch: 'Lucknow Gomti Nagar', acType: 'CA', - clientId: 'BUBL001145', + clientId: 'CBSN001145', customerName: 'Kavita Verma', oldRisk: 'MEDIUM', newRisk: 'HIGH', @@ -423,7 +423,7 @@ export class CkycReportsDialogComponent { branchCode: '08', branch: 'Delhi Greater Kailash', acType: 'OD', - clientId: 'BUBL001458', + clientId: 'CBSN001458', customerName: 'Sameer Kapoor', oldRisk: 'MEDIUM', newRisk: 'MEDIUM', @@ -436,7 +436,7 @@ export class CkycReportsDialogComponent { branchCode: '09', branch: 'Chennai Valasaravakkam', acType: 'SB', - clientId: 'BUBL001721', + clientId: 'CBSN001721', customerName: 'Karthik Subramanian', oldRisk: 'LOW', newRisk: 'LOW', @@ -449,7 +449,7 @@ export class CkycReportsDialogComponent { branchCode: '10', branch: 'Kolkata Salt Lake', acType: 'TL', - clientId: 'BUBL002012', + clientId: 'CBSN002012', customerName: 'Abhishek Banerjee', oldRisk: 'LOW', newRisk: 'MEDIUM', @@ -462,7 +462,7 @@ export class CkycReportsDialogComponent { branchCode: '11', branch: 'Shimla Sector 4', acType: 'SB', - clientId: 'BUBL002314', + clientId: 'CBSN002314', customerName: 'Gaurav Thakur', oldRisk: 'LOW', newRisk: 'LOW', @@ -475,7 +475,7 @@ export class CkycReportsDialogComponent { branchCode: '12', branch: 'Amritsar Model Town', acType: 'CC', - clientId: 'BUBL002615', + clientId: 'CBSN002615', customerName: 'Manmohan Singh Gill', oldRisk: 'HIGH', newRisk: 'HIGH', @@ -488,7 +488,7 @@ export class CkycReportsDialogComponent { branchCode: '13', branch: 'Bhopal Arera Colony', acType: 'SB', - clientId: 'BUBL002918', + clientId: 'CBSN002918', customerName: 'Sunita Devi', oldRisk: 'LOW', newRisk: 'LOW', @@ -501,7 +501,7 @@ export class CkycReportsDialogComponent { branchCode: '14', branch: 'Indore Vijay Nagar', acType: 'OD', - clientId: 'BUBL003221', + clientId: 'CBSN003221', customerName: 'Deepak Tiwari', oldRisk: 'MEDIUM', newRisk: 'HIGH', @@ -514,7 +514,7 @@ export class CkycReportsDialogComponent { branchCode: '15', branch: 'Ludhiana Sarabha Nagar', acType: 'TL', - clientId: 'BUBL003524', + clientId: 'CBSN003524', customerName: 'Harpreet Kaur', oldRisk: 'MEDIUM', newRisk: 'MEDIUM', diff --git a/src/app/home/dashboard/dashboard.component.html b/src/app/home/dashboard/dashboard.component.html index dd51410fe..fda8e8876 100644 --- a/src/app/home/dashboard/dashboard.component.html +++ b/src/app/home/dashboard/dashboard.component.html @@ -165,12 +165,12 @@
Total Deposits
-
₹ 3,264.42 Cr
-
+
₹ 11,540.55 Cr
+
Total Advances
-
₹ 4,162.65 Cr
+
₹ 16,277.11 Cr
diff --git a/src/app/home/dashboard/fd-rd-entry-dialog/fd-rd-entry-dialog.component.html b/src/app/home/dashboard/fd-rd-entry-dialog/fd-rd-entry-dialog.component.html new file mode 100644 index 000000000..9bec5dd23 --- /dev/null +++ b/src/app/home/dashboard/fd-rd-entry-dialog/fd-rd-entry-dialog.component.html @@ -0,0 +1,169 @@ + + +
+ +
+
+
+
+

FD / RD Entry

+

Open a new Fixed Deposit or Recurring Deposit account.

+
+
+
+  {{ bank.name }} +  {{ bank.branch }} + +
+
+ +
+ +
+ +
+ {{ lastAccountNo }} created for {{ lastClientName }} +
You can enter another deposit below, or close this dialog.
+
+
+ + +
+ +
+
+ Deposit Info +
+
+ + +
+
+ + +
+
+
+ +
+ +
+ Client & Amount +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ Interest & Tenure +
+
+ + +
+
+ +
+ + Yrs + + Mo + + Days +
+
+
+
+ +
+ +
+ Nominee & Maturity Details +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ + +
+
+
Principal
+
₹ {{ principal || 0 | number: '1.0-2' }}
+
+
+
Tenure
+
{{ tenureYears }}y {{ tenureMonths }}m {{ tenureDays }}d
+
+
+
Maturity Date
+
{{ maturityDate | date: 'dd-MM-yyyy' }}
+
+
+
Maturity Amount
+
₹ {{ maturityAmount | number: '1.2-2' }}
+
+
+
+ + +
+
+   Demo entry — quarterly-compounded interest, no real account is + created. +
+
+ + +
+
+
diff --git a/src/app/home/dashboard/fd-rd-entry-dialog/fd-rd-entry-dialog.component.scss b/src/app/home/dashboard/fd-rd-entry-dialog/fd-rd-entry-dialog.component.scss new file mode 100644 index 000000000..4342359ac --- /dev/null +++ b/src/app/home/dashboard/fd-rd-entry-dialog/fd-rd-entry-dialog.component.scss @@ -0,0 +1,395 @@ +/** + * 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/. + */ + +:host { + display: block; + font-family: 'Hanken Grotesk', Inter, sans-serif; + color: #1a2a3e; +} + +.fdrd-dlg { + background: #fff; + border-radius: 0; + display: flex; + flex-direction: column; + overflow: hidden; + height: 100vh; +} + +/* HEADER - Matches .ws-header in clerk dashboard */ +.fdrd-head { + padding: 0 12px; + height: 32px; + background: linear-gradient(90deg, #0d1b2e 0%, #162542 100%); + border-bottom: 2px solid #e87722; + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + flex-shrink: 0; +} + +.fdrd-head-left { + display: flex; + align-items: center; + gap: 8px; + flex: 1; +} + +.fdrd-head-ic { + width: 22px; + height: 22px; + border-radius: 6px; + background: #e87722; + color: #fff; + display: flex; + align-items: center; + justify-content: center; + font-size: 11px; + flex-shrink: 0; +} + +.fdrd-title { + margin: 0; + font-family: Newsreader, Georgia, serif; + font-size: 14px; + font-weight: 500; + color: #e8f0fb; + letter-spacing: 0.01em; +} + +.fdrd-sub { + display: none; /* Hide subtitle in header to match clean style */ +} + +.fdrd-head-actions { + display: flex; + align-items: center; + gap: 12px; +} + +.fdrd-meta { + display: inline-flex; + align-items: center; + font-size: 11px; + color: #7a95b0; + background: transparent; + border: none; + padding: 0; + + fa-icon { + color: #5a7589; + margin-right: 4px; + } +} + +.fdrd-close { + background: transparent; + border: none; + color: #7a95b0; + cursor: pointer; + font-size: 14px; + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + border-radius: 4px; + transition: all 0.15s; + + &:hover { + background: rgb(255 255 255 / 10%); + color: #fff; + } +} + +/* BODY - Styled like canvas + card grid */ +.fdrd-body { + padding: 16px 20px; + overflow-y: auto; + flex: 1; + background: #f0f4f9; +} + +.fdrd-success { + display: flex; + align-items: flex-start; + gap: 10px; + padding: 12px 16px; + border-radius: 10px; + background: #dcfce7; + color: #15803d; + margin-bottom: 14px; + font-size: 13px; + + fa-icon { + font-size: 16px; + margin-top: 1px; + } +} + +.fdrd-success-sub { + margin-top: 2px; + font-size: 11px; + font-weight: 400; + opacity: 0.85; +} + +/* Card container for form */ +.fdrd-section { + background: #fff; + border: 1px solid #dce4ef; + border-radius: 10px; + padding: 16px 20px; + margin-bottom: 16px; +} + +/* Transaction Entry Style Layout mappings */ +.ws-group-row { + display: flex; + align-items: stretch; + gap: 0; + + &--mt { + margin-top: 12px; + } +} + +.ws-group { + display: flex; + flex-direction: column; + gap: 4px; + flex-shrink: 0; + + &--flex { + flex: 1; + min-width: 0; + } + + &__fields { + display: flex; + align-items: flex-end; + gap: 8px; + flex-wrap: nowrap; + height: 100%; + align-content: flex-end; + } +} + +.ws-caption { + font-family: Newsreader, Georgia, serif; + font-style: italic; + font-size: 11px; + color: #7a95b0; + padding-bottom: 2px; +} + +.ws-vdivider { + width: 1px; + background: #dce4ef; + margin: 12px 10px 0; + flex-shrink: 0; +} + +.ws-f { + display: flex; + flex-direction: column; + gap: 3px; + flex-shrink: 0; + + &__lbl { + font-size: 10px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; + color: #7a95b0; + white-space: nowrap; + } + + &__ctl { + height: 26px; + padding: 0 7px; + border: 1px solid #c8d8eb; + border-radius: 6px; + font-family: 'Hanken Grotesk', Inter, sans-serif; + font-size: 11.5px; + color: #1a2a3e; + background: #f4f7fc; + box-sizing: border-box; + width: 100%; + transition: + border-color 0.15s, + box-shadow 0.15s; + + &:hover { + border-color: #9ab5d0; + } + + &:focus { + outline: none; + border-color: #2563eb; + box-shadow: 0 0 0 3px rgb(37 99 235 / 12%); + background: #fff; + } + + &--mono { + font-family: 'Roboto Mono', monospace; + font-size: 11.5px; + letter-spacing: 0.03em; + } + } +} + +.fdrd-tenure-row { + display: flex; + align-items: center; + gap: 6px; + width: 100%; + + .ws-f__ctl { + width: 100%; + min-width: 0; + } + + span { + font-size: 10px; + font-weight: 600; + color: #7a95b0; + text-transform: uppercase; + } +} + +/* SUMMARY - Styled like info summary block */ +.fdrd-summary { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 12px; + padding: 12px 16px; + background: #f4f7fc; + border: 1px solid #c8d8eb; + border-radius: 10px; + margin-top: 16px; +} + +.fdrd-stat { + display: flex; + flex-direction: column; + gap: 2px; +} + +.fdrd-stat-l { + font-size: 10px; + font-weight: 600; + color: #7a95b0; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.fdrd-stat-v { + font-size: 14px; + font-weight: 700; + color: #1a2a3e; +} + +.fdrd-stat-good .fdrd-stat-v { + color: #1a7a4a; +} + +/* FOOTER - Styled like action panel */ +.fdrd-foot { + padding: 10px 16px; + border-top: 1px solid #dce4ef; + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + flex-shrink: 0; + background: #f0f4f9; +} + +.fdrd-foot-l { + font-size: 11px; + color: #7a95b0; + display: flex; + align-items: center; + gap: 4px; +} + +.fdrd-foot-actions { + display: flex; + gap: 8px; +} + +.fdrd-btn-ghost { + display: inline-flex; + align-items: center; + gap: 4px; + height: 28px; + padding: 0 12px !important; + border-radius: 7px; + border: 1px solid #dce4ef !important; + background: #fff !important; + color: #1a2a3e !important; + font-family: 'Hanken Grotesk', sans-serif; + font-size: 11.5px !important; + font-weight: 600 !important; + cursor: pointer; + box-shadow: none !important; + + &:hover { + background: #f0f4f9 !important; + border-color: #a8bdd4 !important; + } +} + +.fdrd-btn-save { + display: inline-flex; + align-items: center; + gap: 4px; + height: 28px; + padding: 0 16px !important; + border-radius: 7px; + border: none !important; + background: #e87722 !important; + color: #fff !important; + font-family: 'Hanken Grotesk', sans-serif; + font-size: 11.5px !important; + font-weight: 700 !important; + cursor: pointer; + box-shadow: 0 2px 8px rgb(232 119 34 / 30%) !important; + + &:hover:not(:disabled) { + filter: brightness(1.08); + } + + &:disabled { + opacity: 0.4; + cursor: not-allowed; + background: #c8d8eb !important; + box-shadow: none !important; + } +} + +@media (width <= 768px) { + .ws-group-row { + flex-direction: column; + gap: 12px; + } + + .ws-vdivider { + display: none; + } + + .ws-group__fields { + flex-wrap: wrap; + } + + .fdrd-summary { + grid-template-columns: repeat(2, 1fr); + } +} diff --git a/src/app/home/dashboard/fd-rd-entry-dialog/fd-rd-entry-dialog.component.ts b/src/app/home/dashboard/fd-rd-entry-dialog/fd-rd-entry-dialog.component.ts new file mode 100644 index 000000000..3eed23f0b --- /dev/null +++ b/src/app/home/dashboard/fd-rd-entry-dialog/fd-rd-entry-dialog.component.ts @@ -0,0 +1,146 @@ +/** + * 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/. + */ + +import { Component, inject } from '@angular/core'; +import { CommonModule, DecimalPipe } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { MatDialogRef, MatDialogModule } from '@angular/material/dialog'; +import { MatButtonModule } from '@angular/material/button'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatSnackBar } from '@angular/material/snack-bar'; +import { FaIconComponent } from '@fortawesome/angular-fontawesome'; + +type DepositType = 'FD-SINGLE' | 'FD-JOINT' | 'RD-MONTHLY' | 'RD-QUARTERLY'; + +interface DemoClient { + id: string; + name: string; +} + +@Component({ + selector: 'mifosx-fd-rd-entry-dialog', + standalone: true, + templateUrl: './fd-rd-entry-dialog.component.html', + styleUrls: ['./fd-rd-entry-dialog.component.scss'], + imports: [CommonModule, DecimalPipe, FormsModule, MatDialogModule, MatButtonModule, MatTooltipModule, FaIconComponent] +}) +export class FdRdEntryDialogComponent { + private dialogRef = inject(MatDialogRef); + private snackBar = inject(MatSnackBar); + + bank = { + name: 'CBSNexora Bank Ltd', + branch: 'Head Office' + }; + + depositTypes: { code: DepositType; label: string; defaultRate: number }[] = [ + { code: 'FD-SINGLE', label: 'Fixed Deposit — Single A/c', defaultRate: 7.25 }, + { code: 'FD-JOINT', label: 'Fixed Deposit — Joint A/c', defaultRate: 7.25 }, + { code: 'RD-MONTHLY', label: 'Recurring Deposit — Monthly', defaultRate: 7.0 }, + { code: 'RD-QUARTERLY', label: 'Recurring Deposit — Quarterly', defaultRate: 7.0 } + ]; + + clients: DemoClient[] = [ + { id: 'C-10231', name: 'Ramesh Kumar Sharma' }, + { id: 'C-10344', name: 'Priya Enterprises' }, + { id: 'C-10412', name: 'Anjali Verma' }, + { id: 'C-10567', name: 'Suresh & Sons HUF' }, + { id: 'C-10689', name: 'Vikram Traders' } + ]; + + payModes = ['Cash', 'Cheque', 'Transfer from Savings A/c']; + interestPayoutOptions = ['Cumulative (Paid on Maturity)', 'Monthly Payout', 'Quarterly Payout']; + maturityInstructions = [ + 'Renew Principal & Interest', + 'Renew Principal Only, Payout Interest', + 'Payout on Maturity (No Renewal)' + ]; + + depositType: DepositType = 'FD-SINGLE'; + clientId = ''; + principal: number | null = null; + interestRate = 7.25; + tenureYears = 1; + tenureMonths = 0; + tenureDays = 0; + interestPayout = this.interestPayoutOptions[0]; + payMode = this.payModes[0]; + nomineeName = ''; + maturityInstruction = this.maturityInstructions[0]; + + saved = false; + lastAccountNo = ''; + lastClientName = ''; + + get selectedClient(): DemoClient | undefined { + return this.clients.find((c) => c.id === this.clientId); + } + + onDepositTypeChange(): void { + const dt = this.depositTypes.find((d) => d.code === this.depositType); + if (dt) this.interestRate = dt.defaultRate; + } + + get isRecurring(): boolean { + return this.depositType.startsWith('RD'); + } + + get tenureInYears(): number { + return this.tenureYears + this.tenureMonths / 12 + this.tenureDays / 365; + } + + get maturityDate(): Date { + const d = new Date(); + d.setFullYear(d.getFullYear() + this.tenureYears); + d.setMonth(d.getMonth() + this.tenureMonths); + d.setDate(d.getDate() + this.tenureDays); + return d; + } + + /** Quarterly-compounded maturity value, the standard FD/RD convention */ + get maturityAmount(): number { + const p = this.principal || 0; + const t = this.tenureInYears; + if (p <= 0 || t <= 0) return 0; + return p * Math.pow(1 + this.interestRate / 100 / 4, 4 * t); + } + + get isValid(): boolean { + return !!this.clientId && (this.principal ?? 0) > 0 && this.tenureInYears > 0; + } + + save(): void { + if (!this.isValid) return; + const prefix = this.isRecurring ? 'RD' : 'FD'; + this.lastAccountNo = `${prefix}${Math.floor(1000000 + Math.random() * 8999999)}`; + this.lastClientName = this.selectedClient?.name ?? ''; + this.saved = true; + this.snackBar.open(`${prefix} account ${this.lastAccountNo} created for ${this.lastClientName}`, 'Close', { + duration: 4000 + }); + } + + resetForm(): void { + this.depositType = 'FD-SINGLE'; + this.clientId = ''; + this.principal = null; + this.interestRate = 7.25; + this.tenureYears = 1; + this.tenureMonths = 0; + this.tenureDays = 0; + this.nomineeName = ''; + this.interestPayout = this.interestPayoutOptions[0]; + this.payMode = this.payModes[0]; + this.maturityInstruction = this.maturityInstructions[0]; + this.saved = false; + } + + close(): void { + this.dialogRef.close(); + } +} diff --git a/src/app/home/dashboard/psl-report-dialog/psl-report-dialog.component.ts b/src/app/home/dashboard/psl-report-dialog/psl-report-dialog.component.ts index 1bf9ff773..03e325a47 100644 --- a/src/app/home/dashboard/psl-report-dialog/psl-report-dialog.component.ts +++ b/src/app/home/dashboard/psl-report-dialog/psl-report-dialog.component.ts @@ -63,7 +63,7 @@ export class PslReportDialogComponent { activeTab: 'dashboard' | 'categories' | 'register' | 'returns' = 'dashboard'; bank = { - name: 'Bharat Urban Bank Ltd', + name: 'CBSNexora Bank Ltd', branch: 'Head Office', quarter: 'Q3 FY 2025-26', asOnDate: '29-01-2026', diff --git a/src/app/sft/sft-data.ts b/src/app/sft/sft-data.ts index 6deda4868..8d7a7d361 100644 --- a/src/app/sft/sft-data.ts +++ b/src/app/sft/sft-data.ts @@ -141,11 +141,11 @@ export interface SftInterestDividendRecord { } export const SFT_BANK = { - name: 'Bharat Urban Bank Ltd', + name: 'CBSNexora Bank Ltd', branch: 'Head Office', filerPan: 'AABCB1100M', filerTan: 'MUMR99001E', - itdReportingPortalId: 'BHARATURBAN-285BA', + itdReportingPortalId: 'CBSNEXORA-285BA', fy: '2025-26', filingDueDate: '31-05-2026', principalOfficer: 'Karthik Kamath', @@ -159,7 +159,7 @@ export const SFT_BANK = { branchStdCode: '022', branchPhone: '24938000', branchMobile: '9892000100', - branchEmail: 'compliance@bharaturbanbank.example' + branchEmail: 'compliance@cbsnexorabank.example' }; /** ── SFT-001 / 002 / 004 — Person-wise records ── */ @@ -202,7 +202,7 @@ export const SFT_PERSON_RECORDS: SftPersonRecord[] = [ cashAmountReceivedFromPerson: 1500000, amountPaidToPerson: 0, relatedAccountNumber: '110001101000838', - relatedInstituteName: 'BHARAT URBAN BANK', + relatedInstituteName: 'CBSNEXORA BANK', relatedInstituteRefNumber: 'YESB0BHRT', sftCode: 'SFT-001' }, @@ -243,7 +243,7 @@ export const SFT_PERSON_RECORDS: SftPersonRecord[] = [ cashAmountReceivedFromPerson: 1100000, amountPaidToPerson: 0, relatedAccountNumber: '110001352000357', - relatedInstituteName: 'BHARAT URBAN BANK', + relatedInstituteName: 'CBSNEXORA BANK', relatedInstituteRefNumber: 'YESB0BHRT', sftCode: 'SFT-001' }, @@ -285,7 +285,7 @@ export const SFT_PERSON_RECORDS: SftPersonRecord[] = [ cashAmountReceivedFromPerson: 2500000, amountPaidToPerson: 0, relatedAccountNumber: '110001352000420', - relatedInstituteName: 'BHARAT URBAN BANK', + relatedInstituteName: 'CBSNEXORA BANK', relatedInstituteRefNumber: 'YESB0BHRT', sftCode: 'SFT-002' }, @@ -326,7 +326,7 @@ export const SFT_PERSON_RECORDS: SftPersonRecord[] = [ cashAmountReceivedFromPerson: 1800000, amountPaidToPerson: 0, relatedAccountNumber: '110001352000511', - relatedInstituteName: 'BHARAT URBAN BANK', + relatedInstituteName: 'CBSNEXORA BANK', relatedInstituteRefNumber: 'YESB0BHRT', sftCode: 'SFT-002' }, @@ -368,7 +368,7 @@ export const SFT_PERSON_RECORDS: SftPersonRecord[] = [ cashAmountReceivedFromPerson: 1250000, amountPaidToPerson: 0, relatedAccountNumber: '110001101001145', - relatedInstituteName: 'BHARAT URBAN BANK', + relatedInstituteName: 'CBSNEXORA BANK', relatedInstituteRefNumber: 'YESB0BHRT', sftCode: 'SFT-004' }, @@ -409,7 +409,7 @@ export const SFT_PERSON_RECORDS: SftPersonRecord[] = [ cashAmountReceivedFromPerson: 2150000, amountPaidToPerson: 0, relatedAccountNumber: '110001101001458', - relatedInstituteName: 'BHARAT URBAN BANK', + relatedInstituteName: 'CBSNEXORA BANK', relatedInstituteRefNumber: 'YESB0BHRT', sftCode: 'SFT-004' } @@ -436,7 +436,7 @@ export const SFT_ACCOUNT_RECORDS: SftAccountRecord[] = [ branchMobile: '9892000100', branchFaxStd: '022', branchFaxPhone: '24938011', - branchEmail: 'compliance@bharaturbanbank.example', + branchEmail: 'compliance@cbsnexorabank.example', aggGrossCashCredited: 6500000, aggGrossCashDebited: 4200000, amountCreditedBeforeDemonetization: 0, @@ -485,7 +485,7 @@ export const SFT_ACCOUNT_RECORDS: SftAccountRecord[] = [ branchMobile: '9892000100', branchFaxStd: '022', branchFaxPhone: '24938011', - branchEmail: 'compliance@bharaturbanbank.example', + branchEmail: 'compliance@cbsnexorabank.example', aggGrossCashCredited: 5800000, aggGrossCashDebited: 3450000, amountCreditedBeforeDemonetization: 0, diff --git a/src/environments/.env.ts b/src/environments/.env.ts index f7521f4b2..785504688 100644 --- a/src/environments/.env.ts +++ b/src/environments/.env.ts @@ -9,8 +9,8 @@ /* tslint:disable */ export default { 'mifos_x': { - 'version': '260729', - 'hash': 'c1fc95d9' + 'version': '260731', + 'hash': '0bf337b9' }, 'allow_switching_backend_instance': true }; diff --git a/src/main.scss b/src/main.scss index 91d1e22d9..96e8e3a65 100644 --- a/src/main.scss +++ b/src/main.scss @@ -1017,6 +1017,22 @@ mat-card { } } +/* ─── Full-Screen Dialog Panel (e.g. FD/RD Entry) — edge-to-edge, no rounded corners ─── */ +.fdrd-fullscreen-panel { + max-width: 100vw !important; + width: 100vw !important; + height: 100vh !important; + max-height: 100vh !important; + + .mat-mdc-dialog-container { + border-radius: 0 !important; + } + + .mat-mdc-dialog-surface { + border-radius: 0 !important; + } +} + /* ─── CIC DQR Dialog Backdrop — ensure outside clicks register ─── */ .cic-dlg-backdrop { background: rgb(15 23 42 / 45%);