Files
cbsnexora/src/app/tasks/tasks-routing.module.ts
T
niteshandClaude Opus 5.5 7c23bdd6af Merge branch 'feature/dds' into merge/dds-into-dev-latest
Brings the DDS (Daily Deposit Scheme) UI from feature/dds onto the
current dev-latest:
- Agent settlement (Agent Tran), Close Party account, DDS reports,
  Party-Savings link field
- Agent collection entry screen, per-agent GL account, maturity auto
  close
- Approvals tab, vouchers, payout & close, Sundry GL search, closure
  tab and fixes
- Menu: DDS Party Master, DDS Accounts, DDS Collection, DDS Reports and
  Locker links placed in the Deposits mega panel groups; Agent Master,
  Commission Slab and DDS Batch Processing under Organization; DDS
  Approvals tab in the checker inbox

No content conflicts. Nothing from dev-latest is removed.

Merge adjustments:
- package-lock.json: kept dev-latest's lock file. feature/dds does not
  add or change any dependency in package.json; its lock file was only
  regenerated (about 18k lines removed and 12k added), which would have
  changed resolved versions for packages already on dev-latest.
- Dropped src/app/deposits/party-master/CBS-Backend.code-workspace, a
  VS Code workspace file holding local folder paths, not app code.
- angular.json: bundle budget raised to 18mb warning / 20mb error, as on
  feature/dds.

Lint fixes required by the pre-commit hook (no behaviour change):
- Prettier formatting on 12 DDS files.
- create-party.component.scss: the dense data-entry section deliberately
  re-targets the base selectors to override them, so
  no-duplicate-selectors is disabled for that section instead of
  merging rules and changing the cascade.
- notice-dialog / create-dds-account-type scss: stylelint-disable-line
  for the "ch" width unit.
- commission-slab-master.component.scss: stylelint auto-fix.

Verified with tsc -p src/tsconfig.app.json --noEmit, stylelint, prettier
and eslint on all merged files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 15:10:37 +05:30

339 lines
14 KiB
TypeScript

/**
* 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/.
*/
/** Angular Imports */
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
/** Routing Imports */
import { Route } from '../core/route/route.service';
/** Custom Components */
import { CheckerInboxAndTasksComponent } from './checker-inbox-and-tasks/checker-inbox-and-tasks.component';
import { CheckerInboxComponent } from './checker-inbox-and-tasks-tabs/checker-inbox/checker-inbox.component';
import { WithdrawalRequestsComponent } from './checker-inbox-and-tasks-tabs/withdrawal-requests/withdrawal-requests.component';
import { ShareWithdrawalRequestsComponent } from './checker-inbox-and-tasks-tabs/share-withdrawal-requests/share-withdrawal-requests.component';
import { DividendRequestsComponent } from './checker-inbox-and-tasks-tabs/dividend-requests/dividend-requests.component';
import { ShareAdditionRequestsComponent } from './checker-inbox-and-tasks-tabs/share-addition-requests/share-addition-requests.component';
import { DepositRequestsComponent } from './checker-inbox-and-tasks-tabs/deposit-requests/deposit-requests.component';
import { DisbursementRequestsComponent } from './checker-inbox-and-tasks-tabs/disbursement-requests/disbursement-requests.component';
import { ClosureRequestsComponent } from './checker-inbox-and-tasks-tabs/closure-requests/closure-requests.component';
import { ClientApprovalComponent } from './checker-inbox-and-tasks-tabs/client-approval/client-approval.component';
import { LoanApprovalComponent } from './checker-inbox-and-tasks-tabs/loan-approval/loan-approval.component';
import { LoanDisbursalComponent } from './checker-inbox-and-tasks-tabs/loan-disbursal/loan-disbursal.component';
import { RescheduleLoanComponent } from './checker-inbox-and-tasks-tabs/reschedule-loan/reschedule-loan.component';
import { PendingAccountComponent } from './checker-inbox-and-tasks-tabs/pending-account/pending-account.component';
import { RejectedAccountComponent } from './checker-inbox-and-tasks-tabs/rejected-account/rejected-account.component';
import { TerminatedAccountComponent } from './checker-inbox-and-tasks-tabs/terminated-account/terminated-account.component';
import { PendingSavingsProductsComponent } from './checker-inbox-and-tasks-tabs/pending-savings-products/pending-savings-products.component';
import { ChequebookRequestsComponent } from './checker-inbox-and-tasks-tabs/chequebook-requests/chequebook-requests.component';
import { PendingSavingsAccountEditsComponent } from './checker-inbox-and-tasks-tabs/pending-savings-account-edits/pending-savings-account-edits.component';
import { PendingShareAccountEditsComponent } from './checker-inbox-and-tasks-tabs/pending-share-account-edits/pending-share-account-edits.component';
import { PendingShareAccountsComponent } from './checker-inbox-and-tasks-tabs/pending-share-accounts/pending-share-accounts.component';
import { PendingClientEditsComponent } from './checker-inbox-and-tasks-tabs/pending-client-edits/pending-client-edits.component';
import { PendingUserEditsComponent } from './checker-inbox-and-tasks-tabs/pending-user-edits/pending-user-edits.component';
import { ViewCheckerInboxComponent } from './view-checker-inbox/view-checker-inbox.component';
/** Custom Resolvers */
import { GetMakerCheckers } from './common-resolvers/getmakercheckers.resolver';
import { GetOffices } from './common-resolvers/getOffices.resolver';
import { GetLoansToBeApproved } from './common-resolvers/getLoansToBeApproved.resolver';
import { GetLoansToBeDisbursed } from './common-resolvers/getLoansToBeDisbursed.resolver';
import { GetRescheduleLoans } from './common-resolvers/getRescheduleLoans.resolver';
import { MakerCheckerTemplate } from './common-resolvers/makerCheckerTemplate.resolver';
import { GetCheckerInboxDetailResolver } from './common-resolvers/getCheckerInboxDetail.resolver';
import { GetPendingAccounts } from './common-resolvers/getPendingAccounts.resolver';
import { GetRejectedAccounts } from './common-resolvers/getRejectedAccounts.resolver';
import { GetTerminatedAccounts } from './common-resolvers/getTerminatedAccounts.resolver';
import { GetPendingSavingsProducts } from './common-resolvers/getPendingSavingsProducts.resolver';
import { GetPendingSavingsAccountEdits } from './common-resolvers/getPendingSavingsAccountEdits.resolver';
import { GetPendingCurrentAccountEdits } from './common-resolvers/getPendingCurrentAccountEdits.resolver';
import { GetPendingShareAccountEdits } from './common-resolvers/getPendingShareAccountEdits.resolver';
import { GetPendingShareAccounts } from './common-resolvers/getPendingShareAccounts.resolver';
import { DdsApprovalsComponent } from '../deposits/dds-approvals/dds-approvals.component';
/** Tasks Routes */
const routes: Routes = [
Route.withShell([
{
path: 'checker-inbox-and-tasks',
component: CheckerInboxAndTasksComponent,
data: { title: 'Checker Inbox & Tasks', breadcrumb: 'Checker Inbox & Tasks' },
children: [
{
path: 'checker-inbox',
component: CheckerInboxComponent,
data: { title: 'Checker Inbox' },
resolve: {
makerCheckerResource: GetMakerCheckers,
makerCheckerTemplate: MakerCheckerTemplate
}
},
{
path: 'client-approval',
component: ClientApprovalComponent,
data: { title: 'Client Approval' }
},
{
path: 'loan-approval',
component: LoanApprovalComponent,
data: { title: 'Laon Approval' },
resolve: {
officesData: GetOffices,
loansData: GetLoansToBeApproved
}
},
{
path: 'loan-disbursal',
component: LoanDisbursalComponent,
data: { title: 'Loan Disbursal' },
resolve: {
loansData: GetLoansToBeDisbursed
}
},
{
path: 'reschedule-loan',
component: RescheduleLoanComponent,
data: { title: 'Reschedule Loan' },
resolve: {
rescheduleLoansData: GetRescheduleLoans
}
},
{
path: 'pending-account',
component: PendingAccountComponent,
data: { title: 'Pending Account' },
resolve: {
pendingAccountsData: GetPendingAccounts
}
},
{
path: 'rejected-account',
component: RejectedAccountComponent,
data: { title: 'Rejected Account' },
resolve: {
rejectedAccountsData: GetRejectedAccounts
}
},
{
path: 'terminated-account',
component: TerminatedAccountComponent,
data: { title: 'Terminated Account' },
resolve: {
terminatedAccountsData: GetTerminatedAccounts
}
},
{
path: 'product-approval',
component: PendingSavingsProductsComponent,
data: { title: 'Product Approval' },
resolve: {
pendingSavingsProductsData: GetPendingSavingsProducts
}
},
{
// The tab was called "Pending Product Edits" until it grew to cover product CREATE and
// DELETE too; keep its old path working for bookmarks and saved links.
path: 'pending-savings-products',
redirectTo: 'product-approval'
},
{
path: 'pending-savings-account-edits',
component: PendingSavingsAccountEditsComponent,
data: { title: 'Pending Account Edits' },
resolve: {
pendingSavingsAccountEditsData: GetPendingSavingsAccountEdits,
pendingCurrentAccountEditsData: GetPendingCurrentAccountEdits,
// Share account edits awaiting approval now render inside this same screen instead of
// their own tab - reuses the same resolver the standalone route below still uses.
pendingShareAccountEditsData: GetPendingShareAccountEdits
}
},
{
path: 'pending-current-account-edits',
redirectTo: 'pending-savings-account-edits'
},
{
path: 'pending-share-accounts',
component: PendingShareAccountsComponent,
data: { title: 'Pending Share Accounts' },
resolve: {
pendingShareAccountsData: GetPendingShareAccounts
}
},
{
path: 'pending-share-account-edits',
component: PendingShareAccountEditsComponent,
data: { title: 'Pending Share Account Edits' },
resolve: {
pendingShareAccountEditsData: GetPendingShareAccountEdits
}
},
{
path: 'pending-client-edits',
component: PendingClientEditsComponent,
data: { title: 'Pending Client Edits' }
},
{
path: 'pending-user-edits',
component: PendingUserEditsComponent,
data: { title: 'Pending User Approvals' }
},
{
path: 'withdrawal-requests',
component: WithdrawalRequestsComponent,
data: { title: 'Withdrawal Requests' }
},
{
path: 'share-withdrawal-requests',
component: ShareWithdrawalRequestsComponent,
data: { title: 'Share Withdrawal Requests' }
},
{
path: 'dividend-requests',
component: DividendRequestsComponent,
data: { title: 'Dividend Requests' }
},
{
path: 'share-addition-requests',
component: ShareAdditionRequestsComponent,
data: { title: 'Share Addition Requests' }
},
{
path: 'deposit-requests',
component: DepositRequestsComponent,
data: { title: 'Deposit Requests' }
},
{
path: 'disbursement-requests',
component: DisbursementRequestsComponent,
data: { title: 'Disbursement Requests' }
},
{
path: 'dds-approvals',
component: DdsApprovalsComponent,
data: { title: 'DDS Approvals' }
},
{
path: 'chequebook-requests',
component: ChequebookRequestsComponent,
data: { title: 'Cheque Book Requests' }
},
{
path: 'closure-requests',
component: ClosureRequestsComponent,
data: { title: 'Closure Requests' }
},
{
path: 'dd-issue-approvals',
loadComponent: () =>
import('../sponsor-dd/dd-issue-approvals/dd-issue-approvals.component').then(
(m) => m.DdIssueApprovalsComponent
),
data: { title: 'DD Issuance Approvals' }
},
{
path: 'dd-reprint-approvals',
loadComponent: () =>
import('../sponsor-dd/dd-reprint-approvals/dd-reprint-approvals.component').then(
(m) => m.DdReprintApprovalsComponent
),
data: { title: 'DD Reprint Approvals' }
},
{
path: 'dd-revoke-approvals',
loadComponent: () =>
import('../sponsor-dd/dd-revoke-approvals/dd-revoke-approvals.component').then(
(m) => m.DdRevokeApprovalsComponent
),
data: { title: 'DD Revoke Approvals' }
},
{
path: 'risk-change-approvals',
loadComponent: () =>
import('../risk-review/risk-change-approvals.component').then((m) => m.RiskChangeApprovalsComponent),
data: { title: 'Risk Category Approvals' }
}
]
},
{
path: 'checker-inbox-and-tasks/checker-inbox',
children: [
{
path: ':id/view',
component: ViewCheckerInboxComponent,
data: { title: 'View Checker Inbox Component', routeParamBreadcrumb: 'clientId' },
resolve: {
checkerInboxDetail: GetCheckerInboxDetailResolver
}
}
]
},
{
path: 'checker-inbox-and-tasks/withdrawal-requests',
children: [
{
path: ':id/review',
loadComponent: () =>
import('../clerk/withdrawal-review/withdrawal-review.component').then((m) => m.WithdrawalReviewComponent),
data: { title: 'Review Withdrawal Request', breadcrumb: 'Review Withdrawal' }
}
]
},
{
path: 'checker-inbox-and-tasks/share-withdrawal-requests',
children: [
{
path: ':id/review',
loadComponent: () =>
import('../clerk/share-withdrawal-request/share-withdrawal-request.component').then(
(m) => m.ShareWithdrawalRequestComponent
),
data: { title: 'Review Share Withdrawal Request', breadcrumb: 'Review Share Withdrawal', mode: 'review' }
}
]
},
{
path: 'checker-inbox-and-tasks/disbursement-requests',
children: [
{
path: ':id/review',
loadComponent: () =>
import('../clerk/disbursement-review/disbursement-review.component').then(
(m) => m.DisbursementReviewComponent
),
data: { title: 'Review Disbursement Request', breadcrumb: 'Review Disbursement' }
}
]
}
])
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
providers: [
GetMakerCheckers,
GetOffices,
GetLoansToBeApproved,
GetLoansToBeDisbursed,
GetRescheduleLoans,
MakerCheckerTemplate,
GetCheckerInboxDetailResolver,
GetPendingAccounts,
GetRejectedAccounts,
GetTerminatedAccounts,
GetPendingSavingsProducts,
GetPendingSavingsAccountEdits,
GetPendingCurrentAccountEdits,
GetPendingShareAccountEdits,
GetPendingShareAccounts
]
})
export class TasksRoutingModule {}