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:
co-authored by
Claude Opus 4.7
parent
634003a75c
commit
12bfc81219
@@ -27,22 +27,29 @@
|
||||
<mat-sidenav-content class="sidenav">
|
||||
<!-- Sidebar Toggle Handle (hidden on small/handset screens) -->
|
||||
@if ((isHandset$ | async) === false) {
|
||||
<div
|
||||
class="sidebar-handle"
|
||||
[class.collapsed]="sidenavCollapsed"
|
||||
(click)="toggleSidebarCollapse()"
|
||||
matTooltip="{{ sidenavCollapsed ? 'Expand sidebar' : 'Collapse sidebar' }}"
|
||||
matTooltipPosition="right"
|
||||
>
|
||||
<svg viewBox="0 0 8 14" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
@if (!sidenavCollapsed) {
|
||||
<path d="M6 1L1 7l5 6"/>
|
||||
}
|
||||
@if (sidenavCollapsed) {
|
||||
<path d="M2 1l5 6-5 6"/>
|
||||
}
|
||||
</svg>
|
||||
</div>
|
||||
<div
|
||||
class="sidebar-handle"
|
||||
[class.collapsed]="sidenavCollapsed"
|
||||
(click)="toggleSidebarCollapse()"
|
||||
matTooltip="{{ sidenavCollapsed ? 'Expand sidebar' : 'Collapse sidebar' }}"
|
||||
matTooltipPosition="right"
|
||||
>
|
||||
<svg
|
||||
viewBox="0 0 8 14"
|
||||
fill="none"
|
||||
stroke="#fff"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
@if (!sidenavCollapsed) {
|
||||
<path d="M6 1L1 7l5 6" />
|
||||
}
|
||||
@if (sidenavCollapsed) {
|
||||
<path d="M2 1l5 6-5 6" />
|
||||
}
|
||||
</svg>
|
||||
</div>
|
||||
}
|
||||
|
||||
<!-- Toolbar -->
|
||||
@@ -56,7 +63,12 @@
|
||||
<fa-icon icon="university" class="ni-ico"></fa-icon>Institution
|
||||
<fa-icon icon="caret-down" class="ni-caret"></fa-icon>
|
||||
</a>
|
||||
<a class="ni" tabindex="0" routerLink="/checker-inbox-and-tasks/checker-inbox" *mifosxHasPermission="'MENU_TASKS'">
|
||||
<a
|
||||
class="ni"
|
||||
tabindex="0"
|
||||
routerLink="/checker-inbox-and-tasks/checker-inbox"
|
||||
*mifosxHasPermission="'MENU_TASKS'"
|
||||
>
|
||||
<fa-icon icon="check" class="ni-ico"></fa-icon>Tasks
|
||||
</a>
|
||||
<a class="ni" tabindex="0" routerLink="/accounting" *mifosxHasPermission="'MENU_ACCOUNTING'">
|
||||
@@ -70,11 +82,21 @@
|
||||
<fa-icon icon="shield-alt" class="ni-ico"></fa-icon>Admin
|
||||
<fa-icon icon="caret-down" class="ni-caret"></fa-icon>
|
||||
</a>
|
||||
<a class="ni" tabindex="0" (click)="subLedgerOpen = !subLedgerOpen; glMenuOpen = false" *mifosxHasPermission="'MENU_SUB_LEDGER'">
|
||||
<a
|
||||
class="ni"
|
||||
tabindex="0"
|
||||
(click)="subLedgerOpen = !subLedgerOpen; glMenuOpen = false"
|
||||
*mifosxHasPermission="'MENU_SUB_LEDGER'"
|
||||
>
|
||||
<fa-icon icon="book" class="ni-ico"></fa-icon>Sub Ledger
|
||||
<fa-icon [icon]="subLedgerOpen ? 'caret-up' : 'caret-down'" class="ni-caret"></fa-icon>
|
||||
</a>
|
||||
<a class="ni" tabindex="0" (click)="glMenuOpen = !glMenuOpen; subLedgerOpen = false" *mifosxHasPermission="'MENU_GENERAL_LEDGER'">
|
||||
<a
|
||||
class="ni"
|
||||
tabindex="0"
|
||||
(click)="glMenuOpen = !glMenuOpen; subLedgerOpen = false"
|
||||
*mifosxHasPermission="'MENU_GENERAL_LEDGER'"
|
||||
>
|
||||
<fa-icon icon="book-open" class="ni-ico"></fa-icon>General Ledger
|
||||
<fa-icon [icon]="glMenuOpen ? 'caret-up' : 'caret-down'" class="ni-caret"></fa-icon>
|
||||
</a>
|
||||
@@ -121,7 +143,12 @@
|
||||
<fa-icon icon="shield-alt" class="ni-ico"></fa-icon>Insurance
|
||||
<fa-icon icon="caret-down" class="ni-caret"></fa-icon>
|
||||
</a>
|
||||
<a class="ni" tabindex="0" (click)="rbiMenuOpen = !rbiMenuOpen; glMenuOpen = false" *mifosxHasPermission="'MENU_RBI'">
|
||||
<a
|
||||
class="ni"
|
||||
tabindex="0"
|
||||
(click)="rbiMenuOpen = !rbiMenuOpen; glMenuOpen = false"
|
||||
*mifosxHasPermission="'MENU_RBI'"
|
||||
>
|
||||
<fa-icon icon="university" class="ni-ico"></fa-icon>RBI
|
||||
<fa-icon [icon]="rbiMenuOpen ? 'caret-up' : 'caret-down'" class="ni-caret"></fa-icon>
|
||||
</a>
|
||||
@@ -373,14 +400,24 @@
|
||||
<a class="gl-link" [class.hidden]="!matchesGlSearch('Trial Balance')" (click)="glMenuOpen = false"
|
||||
><fa-icon icon="balance-scale" class="gl-icon"></fa-icon> Trial Balance</a
|
||||
>
|
||||
<a class="gl-link" [class.hidden]="!matchesGlSearch('Profit and Loss')" (click)="glMenuOpen = false"
|
||||
><fa-icon icon="chart-line" class="gl-icon"></fa-icon> Profit and Loss</a
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesGlSearch('Profit and Loss')"
|
||||
(click)="glMenuOpen = false; openAccountingReportsDialog('PNL')"
|
||||
><fa-icon icon="chart-line" class="gl-icon" style="color: #b45309"></fa-icon> Profit and Loss</a
|
||||
>
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesGlSearch('Consolidate Balance Sheet')"
|
||||
(click)="glMenuOpen = false"
|
||||
><fa-icon icon="file-alt" class="gl-icon"></fa-icon> Consolidate Balance Sheet</a
|
||||
(click)="glMenuOpen = false; openAccountingReportsDialog('BALANCE-SHEET')"
|
||||
><fa-icon icon="file-alt" class="gl-icon" style="color: #b45309"></fa-icon> Consolidate Balance Sheet</a
|
||||
>
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesGlSearch('Comparative Balance Sheet')"
|
||||
(click)="glMenuOpen = false; openAccountingReportsDialog('COMPARATIVE-BS')"
|
||||
><fa-icon icon="balance-scale" class="gl-icon" style="color: #b45309"></fa-icon> Comparative Balance
|
||||
Sheet</a
|
||||
>
|
||||
</div>
|
||||
<div class="gl-group">
|
||||
@@ -400,6 +437,13 @@
|
||||
<a class="gl-link" [class.hidden]="!matchesGlSearch('Distribution of Balance')" (click)="glMenuOpen = false"
|
||||
><fa-icon icon="chart-pie" class="gl-icon"></fa-icon> Distribution of Balance</a
|
||||
>
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesGlSearch('GL Wise DR CR')"
|
||||
(click)="glMenuOpen = false; openAccountingReportsDialog('GL-DR-CR')"
|
||||
><fa-icon icon="project-diagram" class="gl-icon" style="color: #b45309"></fa-icon> GL Wise DR / CR
|
||||
Report</a
|
||||
>
|
||||
</div>
|
||||
<div class="gl-group">
|
||||
<div class="gl-group-title">Account Reports</div>
|
||||
@@ -424,6 +468,12 @@
|
||||
<a class="gl-link" [class.hidden]="!matchesGlSearch('Voucher Register')" (click)="glMenuOpen = false"
|
||||
><fa-icon icon="receipt" class="gl-icon"></fa-icon> Voucher Register</a
|
||||
>
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesGlSearch('Misc Expense Ledger')"
|
||||
(click)="glMenuOpen = false; openAccountingReportsDialog('MISC-EXP')"
|
||||
><fa-icon icon="receipt" class="gl-icon" style="color: #b45309"></fa-icon> Misc Expense Ledger</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -649,8 +699,8 @@
|
||||
<button mat-menu-item tabindex="0">
|
||||
<fa-icon icon="chart-line" class="menu-item-icon"></fa-icon> SLR and Non SLR Investment Report
|
||||
</button>
|
||||
<button mat-menu-item tabindex="0">
|
||||
<fa-icon icon="file-alt" class="menu-item-icon"></fa-icon> CIC Reporting
|
||||
<button mat-menu-item tabindex="0" (click)="openCicReportingDialog()">
|
||||
<fa-icon icon="file-alt" class="menu-item-icon" style="color: #6d28d9"></fa-icon> CIC Reporting
|
||||
</button>
|
||||
<button mat-menu-item tabindex="0">
|
||||
<fa-icon icon="database" class="menu-item-icon"></fa-icon> Inventory Stock Register
|
||||
@@ -658,6 +708,10 @@
|
||||
<button mat-menu-item tabindex="0">
|
||||
<fa-icon icon="chart-bar" class="menu-item-icon"></fa-icon> Depreciation Register
|
||||
</button>
|
||||
<button mat-menu-item routerLink="/fiu" tabindex="0">
|
||||
<fa-icon icon="shield-alt" class="menu-item-icon" style="color: #dc2626"></fa-icon> Financial Intelligence
|
||||
Unit (FIU-IND)
|
||||
</button>
|
||||
</div>
|
||||
<!-- Investment -->
|
||||
<div class="deposit-menu-group">
|
||||
@@ -671,8 +725,8 @@
|
||||
<button mat-menu-item tabindex="0">
|
||||
<fa-icon icon="piggy-bank" class="menu-item-icon"></fa-icon> Bucket Wise Investment
|
||||
</button>
|
||||
<button mat-menu-item tabindex="0">
|
||||
<fa-icon icon="file-invoice" class="menu-item-icon"></fa-icon> Deaf Report
|
||||
<button mat-menu-item routerLink="/deaf" tabindex="0">
|
||||
<fa-icon icon="file-invoice" class="menu-item-icon" style="color: #0e7e6b"></fa-icon> Deaf Report
|
||||
</button>
|
||||
</div>
|
||||
<!-- Reports & Admin -->
|
||||
@@ -745,12 +799,21 @@
|
||||
<button mat-menu-item tabindex="0">
|
||||
<fa-icon icon="file-signature" class="menu-item-icon"></fa-icon> Signature Report
|
||||
</button>
|
||||
<button mat-menu-item tabindex="0">
|
||||
<fa-icon icon="exclamation-triangle" class="menu-item-icon"></fa-icon> Risk Category
|
||||
<button mat-menu-item tabindex="0" (click)="openCkycReportsDialog('RISK-REVIEW')">
|
||||
<fa-icon icon="exclamation-triangle" class="menu-item-icon" style="color: #be185d"></fa-icon> Risk Category
|
||||
</button>
|
||||
<button mat-menu-item tabindex="0">
|
||||
<fa-icon icon="chart-bar" class="menu-item-icon"></fa-icon> Risk Category and Turnover Profile
|
||||
</button>
|
||||
<button mat-menu-item tabindex="0" (click)="openCkycReportsDialog('REKYC')">
|
||||
<fa-icon icon="sync-alt" class="menu-item-icon" style="color: #be185d"></fa-icon> Re-KYC Report
|
||||
</button>
|
||||
<button mat-menu-item tabindex="0" (click)="openCkycReportsDialog('RISK-REVIEW')">
|
||||
<fa-icon icon="history" class="menu-item-icon" style="color: #be185d"></fa-icon> Risk Review
|
||||
</button>
|
||||
<button mat-menu-item tabindex="0" (click)="openCkycReportsDialog('CERSAI')">
|
||||
<fa-icon icon="shield-alt" class="menu-item-icon" style="color: #be185d"></fa-icon> CERSAI Report
|
||||
</button>
|
||||
</mat-menu>
|
||||
|
||||
<mat-menu #advancesMenu="matMenu" class="advances-mega-panel" [overlapTrigger]="false">
|
||||
@@ -858,7 +921,9 @@
|
||||
</mat-menu>
|
||||
|
||||
<mat-menu #insuranceMenu="matMenu" [overlapTrigger]="false" class="nav-dropdown">
|
||||
<button mat-menu-item tabindex="0"><fa-icon icon="building" class="menu-item-icon"></fa-icon> DICGC</button>
|
||||
<button mat-menu-item routerLink="/dicgc" tabindex="0">
|
||||
<fa-icon icon="building" class="menu-item-icon" style="color: #c2410c"></fa-icon> DICGC
|
||||
</button>
|
||||
<button mat-menu-item tabindex="0"><fa-icon icon="heart" class="menu-item-icon"></fa-icon> PMJBY</button>
|
||||
<button mat-menu-item tabindex="0"><fa-icon icon="heart" class="menu-item-icon"></fa-icon> PMSBY</button>
|
||||
<button mat-menu-item tabindex="0">
|
||||
@@ -918,8 +983,13 @@
|
||||
<a class="gl-link" [class.hidden]="!matchesRbiSearch('Loan Dump')" (click)="rbiMenuOpen = false">
|
||||
<fa-icon icon="database" class="gl-icon"></fa-icon> Loan Dump
|
||||
</a>
|
||||
<a class="gl-link" [class.hidden]="!matchesRbiSearch('ALM')" (click)="rbiMenuOpen = false">
|
||||
<fa-icon icon="chart-bar" class="gl-icon"></fa-icon> ALM
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesRbiSearch('ALM')"
|
||||
(click)="rbiMenuOpen = false; openAlmReportDialog()"
|
||||
>
|
||||
<fa-icon icon="balance-scale" class="gl-icon" style="color: #4f46e5"></fa-icon> ALM (Asset Liability
|
||||
Management)
|
||||
</a>
|
||||
<a class="gl-link" [class.hidden]="!matchesRbiSearch('Balance Sheet')" (click)="rbiMenuOpen = false">
|
||||
<fa-icon icon="file-alt" class="gl-icon"></fa-icon> Balance Sheet (BR Act & Others)
|
||||
@@ -944,8 +1014,21 @@
|
||||
<a class="gl-link" [class.hidden]="!matchesRbiSearch('No Interest Report')" (click)="rbiMenuOpen = false">
|
||||
<fa-icon icon="ban" class="gl-icon"></fa-icon> No Interest Report
|
||||
</a>
|
||||
<a class="gl-link" [class.hidden]="!matchesRbiSearch('Income Tax Report')" (click)="rbiMenuOpen = false">
|
||||
<fa-icon icon="file-invoice" class="gl-icon"></fa-icon> Income Tax Report
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesRbiSearch('Income Tax Report')"
|
||||
routerLink="/sft"
|
||||
(click)="rbiMenuOpen = false"
|
||||
>
|
||||
<fa-icon icon="file-invoice" class="gl-icon" style="color: #1d4ed8"></fa-icon> Income Tax Report (SFT)
|
||||
</a>
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesRbiSearch('Priority Sector Lending')"
|
||||
(click)="rbiMenuOpen = false; openPslReportDialog()"
|
||||
>
|
||||
<fa-icon icon="flag" class="gl-icon" style="color: #16a34a"></fa-icon> Priority Sector Lending (PSL
|
||||
Returns)
|
||||
</a>
|
||||
</div>
|
||||
<!-- Statement Reports -->
|
||||
@@ -982,8 +1065,12 @@
|
||||
<a class="gl-link" [class.hidden]="!matchesRbiSearch('OSS 1 XBRL/CIMS')" (click)="rbiMenuOpen = false">
|
||||
<fa-icon icon="file-alt" class="gl-icon"></fa-icon> OSS 1 XBRL/CIMS
|
||||
</a>
|
||||
<a class="gl-link" [class.hidden]="!matchesRbiSearch('OSS 2 XBRL')" (click)="rbiMenuOpen = false">
|
||||
<fa-icon icon="file-alt" class="gl-icon"></fa-icon> OSS 2 XBRL
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesRbiSearch('OSS 2 XBRL')"
|
||||
(click)="rbiMenuOpen = false; openCimsXbrlDialog('OSS-2')"
|
||||
>
|
||||
<fa-icon icon="file-alt" class="gl-icon" style="color: #0891b2"></fa-icon> OSS 2 XBRL
|
||||
</a>
|
||||
<a class="gl-link" [class.hidden]="!matchesRbiSearch('OSS 3 XBRL/CIMS')" (click)="rbiMenuOpen = false">
|
||||
<fa-icon icon="file-alt" class="gl-icon"></fa-icon> OSS 3 XBRL/CIMS
|
||||
@@ -995,6 +1082,40 @@
|
||||
<fa-icon icon="file-alt" class="gl-icon"></fa-icon> OSS 7
|
||||
</a>
|
||||
</div>
|
||||
<!-- CIMS / XBRL Returns -->
|
||||
<div class="gl-group">
|
||||
<div class="gl-group-title">CIMS / XBRL Returns</div>
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesRbiSearch('Form OSS-2 CIMS')"
|
||||
(click)="rbiMenuOpen = false; openCimsXbrlDialog('OSS-2')"
|
||||
>
|
||||
<fa-icon icon="shield-alt" class="gl-icon" style="color: #0891b2"></fa-icon> Form OSS-2 (Off-site
|
||||
Surveillance)
|
||||
</a>
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesRbiSearch('Form PSA Priority Sector')"
|
||||
(click)="rbiMenuOpen = false; openCimsXbrlDialog('PSA')"
|
||||
>
|
||||
<fa-icon icon="flag" class="gl-icon" style="color: #0891b2"></fa-icon> Form PSA (Priority Sector Advances)
|
||||
</a>
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesRbiSearch('Form RAL Assets Liabilities')"
|
||||
(click)="rbiMenuOpen = false; openCimsXbrlDialog('RAL')"
|
||||
>
|
||||
<fa-icon icon="balance-scale" class="gl-icon" style="color: #0891b2"></fa-icon> Form RAL (Return on Assets
|
||||
& Liabilities)
|
||||
</a>
|
||||
<a
|
||||
class="gl-link"
|
||||
[class.hidden]="!matchesRbiSearch('Form RCP UCB Cash Position')"
|
||||
(click)="rbiMenuOpen = false; openCimsXbrlDialog('RCP-UCB')"
|
||||
>
|
||||
<fa-icon icon="coins" class="gl-icon" style="color: #0891b2"></fa-icon> Form RCP UCB (Cash Position)
|
||||
</a>
|
||||
</div>
|
||||
<!-- Annual & Sector -->
|
||||
<div class="gl-group">
|
||||
<div class="gl-group-title">Annual & Sector</div>
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
/** Angular Imports */
|
||||
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
||||
import { ChangeDetectorRef, Component, OnDestroy, OnInit, inject } from '@angular/core';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
|
||||
/** rxjs Imports */
|
||||
import { Observable, Subscription } from 'rxjs';
|
||||
@@ -56,6 +57,7 @@ export class ShellComponent implements OnInit, OnDestroy {
|
||||
private breakpointObserver = inject(BreakpointObserver);
|
||||
private progressBarService = inject(ProgressBarService);
|
||||
private cdr = inject(ChangeDetectorRef);
|
||||
private dialog = inject(MatDialog);
|
||||
|
||||
/** Subscription to breakpoint observer for handset. */
|
||||
isHandset$: Observable<boolean> = this.breakpointObserver
|
||||
@@ -123,6 +125,126 @@ export class ShellComponent implements OnInit, OnDestroy {
|
||||
// Placeholder — config wizard is handled by toolbar component
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the Credit Information Companies — Data Quality Report dialog.
|
||||
* Lazy-loads the same component used by the home dashboard's CIC card.
|
||||
*/
|
||||
async openCicReportingDialog(): Promise<void> {
|
||||
const { CicDqrDialogComponent } = await import('../../home/dashboard/cic-dqr-dialog/cic-dqr-dialog.component');
|
||||
this.dialog.open(CicDqrDialogComponent, {
|
||||
width: '88vw',
|
||||
maxWidth: '1200px',
|
||||
maxHeight: '92vh',
|
||||
panelClass: 'crr-slr-dialog-panel',
|
||||
autoFocus: false,
|
||||
disableClose: false,
|
||||
hasBackdrop: true,
|
||||
backdropClass: 'cic-dlg-backdrop'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the Priority Sector Lending Returns dialog.
|
||||
* Lazy-loads the same component used by the home dashboard's PSL card.
|
||||
*/
|
||||
async openPslReportDialog(): Promise<void> {
|
||||
const { PslReportDialogComponent } =
|
||||
await import('../../home/dashboard/psl-report-dialog/psl-report-dialog.component');
|
||||
this.dialog.open(PslReportDialogComponent, {
|
||||
width: '92vw',
|
||||
maxWidth: '1280px',
|
||||
maxHeight: '92vh',
|
||||
panelClass: 'crr-slr-dialog-panel',
|
||||
autoFocus: false,
|
||||
disableClose: false,
|
||||
hasBackdrop: true,
|
||||
backdropClass: 'psl-dlg-backdrop'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the Accounting Reports dialog (P&L / Balance Sheet / Comparative B/S /
|
||||
* 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'
|
||||
): Promise<void> {
|
||||
const { AccountingReportsDialogComponent } =
|
||||
await import('../../home/dashboard/accounting-reports-dialog/accounting-reports-dialog.component');
|
||||
this.dialog.open(AccountingReportsDialogComponent, {
|
||||
width: '94vw',
|
||||
maxWidth: '1360px',
|
||||
maxHeight: '94vh',
|
||||
panelClass: 'crr-slr-dialog-panel',
|
||||
autoFocus: false,
|
||||
disableClose: false,
|
||||
hasBackdrop: true,
|
||||
backdropClass: 'acct-rpt-dlg-backdrop',
|
||||
data: { initialReport }
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the CKYC Compliance Reports dialog (Re-KYC / Risk Review / CERSAI).
|
||||
* The initial report is selected from the menu link the user clicked; the user
|
||||
* can switch reports via the pill selector inside the dialog.
|
||||
*/
|
||||
async openCkycReportsDialog(initialReport: 'REKYC' | 'RISK-REVIEW' | 'CERSAI' = 'REKYC'): Promise<void> {
|
||||
const { CkycReportsDialogComponent } =
|
||||
await import('../../home/dashboard/ckyc-reports-dialog/ckyc-reports-dialog.component');
|
||||
this.dialog.open(CkycReportsDialogComponent, {
|
||||
width: '94vw',
|
||||
maxWidth: '1320px',
|
||||
maxHeight: '94vh',
|
||||
panelClass: 'crr-slr-dialog-panel',
|
||||
autoFocus: false,
|
||||
disableClose: false,
|
||||
hasBackdrop: true,
|
||||
backdropClass: 'ckyc-rpt-dlg-backdrop',
|
||||
data: { initialReport }
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the CIMS / XBRL Returns dialog. The initial form (OSS-2, PSA, RAL, RCP-UCB)
|
||||
* 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<void> {
|
||||
const { CimsXbrlDialogComponent } =
|
||||
await import('../../home/dashboard/cims-xbrl-dialog/cims-xbrl-dialog.component');
|
||||
this.dialog.open(CimsXbrlDialogComponent, {
|
||||
width: '94vw',
|
||||
maxWidth: '1320px',
|
||||
maxHeight: '94vh',
|
||||
panelClass: 'crr-slr-dialog-panel',
|
||||
autoFocus: false,
|
||||
disableClose: false,
|
||||
hasBackdrop: true,
|
||||
backdropClass: 'cims-dlg-backdrop',
|
||||
data: { initialForm }
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the Asset Liability Management dialog (Form ALM-1).
|
||||
* Covers maturity ladder, monthly snapshot, and structural liquidity returns.
|
||||
*/
|
||||
async openAlmReportDialog(): Promise<void> {
|
||||
const { AlmReportDialogComponent } =
|
||||
await import('../../home/dashboard/alm-report-dialog/alm-report-dialog.component');
|
||||
this.dialog.open(AlmReportDialogComponent, {
|
||||
width: '94vw',
|
||||
maxWidth: '1320px',
|
||||
maxHeight: '92vh',
|
||||
panelClass: 'crr-slr-dialog-panel',
|
||||
autoFocus: false,
|
||||
disableClose: false,
|
||||
hasBackdrop: true,
|
||||
backdropClass: 'alm-dlg-backdrop'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Unsubscribes from progress bar.
|
||||
*/
|
||||
|
||||
@@ -130,145 +130,145 @@
|
||||
<a matLine>{{ 'labels.menus.Individual Collection Sheet' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<ng-container *mifosxHasPermission="'SIDEBAR_REMITTANCES'">
|
||||
<mat-list-item
|
||||
*ngIf="mifosRemittanceEnabled"
|
||||
[routerLink]="['/remittances/process']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Process Remittance' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="money-bill-wave" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Remittances' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
*ngIf="mifosRemittanceEnabled"
|
||||
[routerLink]="['/remittances/process']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Process Remittance' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="money-bill-wave" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Remittances' | translate }}</a>
|
||||
</mat-list-item>
|
||||
</ng-container>
|
||||
<ng-container *mifosxHasPermission="'SIDEBAR_ANALYTICS'">
|
||||
<mat-list-item
|
||||
*ngIf="supersetEnabled"
|
||||
[routerLink]="['/analytics']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Analytics' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="chart-bar" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Analytics' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
*ngIf="supersetEnabled"
|
||||
[routerLink]="['/analytics']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Analytics' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="chart-bar" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Analytics' | translate }}</a>
|
||||
</mat-list-item>
|
||||
</ng-container>
|
||||
<!-- CFCFRMS Section -->
|
||||
<ng-container *mifosxHasPermission="'SIDEBAR_CFCFRMS'">
|
||||
<div class="nav-item-sep mt-1">
|
||||
<mat-divider></mat-divider>
|
||||
<span class="text-muted">{{ 'labels.menus.CFCFRMS' | translate }}</span>
|
||||
</div>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/dashboard']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.CFCFRMS Dashboard' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: true }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="shield-alt" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.CFCFRMS Dashboard' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/complaints']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Complaints' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="list-alt" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Complaints' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/escalate']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Escalate Complaint' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="arrow-up" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Escalate' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/report-suspect']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Report Suspect' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="user-shield" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Report Suspect' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/report-mule']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Report Mule Account' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="user-slash" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Report Mule' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/report-fraud-txn']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Report Fraud Transaction' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="exclamation-triangle" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Report Fraud Txn' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<div class="nav-item-sep mt-1">
|
||||
<mat-divider></mat-divider>
|
||||
<span class="text-muted">{{ 'labels.menus.CFCFRMS' | translate }}</span>
|
||||
</div>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/dashboard']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.CFCFRMS Dashboard' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: true }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="shield-alt" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.CFCFRMS Dashboard' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/complaints']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Complaints' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="list-alt" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Complaints' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/escalate']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Escalate Complaint' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="arrow-up" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Escalate' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/report-suspect']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Report Suspect' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="user-shield" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Report Suspect' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/report-mule']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Report Mule Account' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="user-slash" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Report Mule' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/report-fraud-txn']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.Report Fraud Transaction' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="exclamation-triangle" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.Report Fraud Txn' | translate }}</a>
|
||||
</mat-list-item>
|
||||
</ng-container>
|
||||
|
||||
<!-- RBI Integration Section -->
|
||||
<ng-container *mifosxHasPermission="'SIDEBAR_RBI_INTEGRATION'">
|
||||
<div class="nav-item-sep mt-1">
|
||||
<mat-divider></mat-divider>
|
||||
<span class="text-muted">{{ 'labels.menus.RBI Integration' | translate }}</span>
|
||||
</div>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/fmr-submission']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.FMR Submission' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="university" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.FMR Submission' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/cfr-lookup']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.CFR Lookup' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="search" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.CFR Lookup' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<div class="nav-item-sep mt-1">
|
||||
<mat-divider></mat-divider>
|
||||
<span class="text-muted">{{ 'labels.menus.RBI Integration' | translate }}</span>
|
||||
</div>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/fmr-submission']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.FMR Submission' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="university" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.FMR Submission' | translate }}</a>
|
||||
</mat-list-item>
|
||||
<mat-list-item
|
||||
[routerLink]="['/cfcfrms/cfr-lookup']"
|
||||
[matTooltipPosition]="tooltipPosition"
|
||||
matTooltip="{{ 'tooltips.CFR Lookup' | translate }}"
|
||||
routerLinkActive="active-menu"
|
||||
[routerLinkActiveOptions]="{ exact: false }"
|
||||
>
|
||||
<mat-icon matListIcon>
|
||||
<fa-icon icon="search" size="sm"></fa-icon>
|
||||
</mat-icon>
|
||||
<a matLine>{{ 'labels.menus.CFR Lookup' | translate }}</a>
|
||||
</mat-list-item>
|
||||
</ng-container>
|
||||
|
||||
<div class="nav-item-sep mt-1">
|
||||
|
||||
@@ -54,10 +54,21 @@ $hover-bg: #f1f5f9;
|
||||
span {
|
||||
border-radius: 2px;
|
||||
|
||||
&:nth-child(1) { background: $brand; }
|
||||
&:nth-child(2) { background: #0ea5e9; }
|
||||
&:nth-child(3) { background: #10b981; }
|
||||
&:nth-child(4) { background: #cbd5e1; }
|
||||
&:nth-child(1) {
|
||||
background: $brand;
|
||||
}
|
||||
|
||||
&:nth-child(2) {
|
||||
background: #0ea5e9;
|
||||
}
|
||||
|
||||
&:nth-child(3) {
|
||||
background: #10b981;
|
||||
}
|
||||
|
||||
&:nth-child(4) {
|
||||
background: #cbd5e1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user