/** * 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 { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { Route } from '../core/route/route.service'; import { RbiCircularsComponent } from './rbi-circulars.component'; import { AmlRulesComponent } from './aml-rules/aml-rules.component'; const routes: Routes = [ Route.withShell([ { path: 'rbi-circulars', component: RbiCircularsComponent, data: { title: 'RBI Circulars', breadcrumb: 'RBI Circulars' } }, { path: 'rbi/aml', component: AmlRulesComponent, data: { title: 'AML Rules Master', breadcrumb: 'AML Rules Master' } }, { // OSS 1 computed live from the ledger. Lazy — the ExcelJS workbook builder should not weigh // down the eager bundle. path: 'rbi/oss1', loadComponent: () => import('./oss-live/oss1-live.component').then((m) => m.Oss1LiveComponent), data: { title: 'OSS 1 — Return on Assets and Liabilities', breadcrumb: 'OSS 1 (RAL)' } }, { path: 'rbi/oss2', loadComponent: () => import('./oss-live/oss2-live.component').then((m) => m.Oss2LiveComponent), data: { title: 'OSS 2 — Return on Earnings', breadcrumb: 'OSS 2 (RoE)' } }, { // The filed workbooks as they stood before the returns were computed from the ledger. Kept // reachable so a figure on a live return can be checked against what was actually filed for // an earlier quarter; they read from static data and do not move. path: 'rbi/oss1-filed', loadComponent: () => import('./oss1-ral/oss1-ral.component').then((m) => m.Oss1RalComponent), data: { title: 'OSS 1 — As filed (static)', breadcrumb: 'OSS 1 (as filed)' } }, { path: 'rbi/oss2-filed', loadComponent: () => import('./oss2-roe/oss2-roe.component').then((m) => m.Oss2RoeComponent), data: { title: 'OSS 2 — As filed (static)', breadcrumb: 'OSS 2 (as filed)' } }, { path: 'rbi/share-capital', // Lazy for the same reason as the OSS returns — the ExcelJS workbook builder should not // weigh down the eager bundle for a page most users never open. loadComponent: () => import('./share-capital-return/share-capital-return.component').then((m) => m.ShareCapitalReturnComponent), data: { title: 'Members & Share Capital Return', breadcrumb: 'Members & Share Capital' } }, { path: 'rbi/oss3', loadComponent: () => import('./oss3-raq/oss3-raq.component').then((m) => m.Oss3RaqComponent), data: { title: 'OSS 3 — Return on Asset Quality', breadcrumb: 'OSS 3 (RAQ-UCB)' } }, { // CRR return, filed twice a month. Lazy like the other returns — it pulls in ExcelJS. path: 'rbi/form1', loadComponent: () => import('./reserve-return/form1-crr.component').then((m) => m.Form1CrrComponent), data: { title: 'Form 1 — Cash Reserve Ratio', breadcrumb: 'Form 1 (CRR)' } }, // Form 9 (SLR) has no route of its own. Section 24 is settled on the statutory Form 1 at Part C, // charged on the same liabilities Part B charges the cash reserve on. A second screen computing // the same ratio from a month-end base disagreed with it, and both were headed Form 9 — whichever // a filer read, they had no way to know the other said something else. { // Form IX — the Return on Assets and Liabilities, code R408, filed monthly. // // A DIFFERENT return from Form 9 (SLR) above despite the name. That one reports one ratio; // this one reports the whole balance sheet, in rupees thousands, and its two sides must // agree. Its own route rather than a tab on rbi/form9 for exactly that reason — they answer // different questions and share no figures. path: 'rbi/form9-return', loadComponent: () => import('./form9-return/form9-return.component').then((m) => m.Form9ReturnComponent), data: { title: 'Form IX — Return on Assets and Liabilities', breadcrumb: 'Form IX (R408)' } } // The statutory Form 1 has no route of its own: it is a tab on rbi/form1. Both are Form 1 for // one bank and one period, and two routes made a filer guess which held which — one could be // read while the other was believed to be on screen. ]) ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) export class RbiCircularsRoutingModule {}