Files
cbsnexora/src/app/digital/atm-pos-ecom/atm-pos-ecom.component.ts
T
AdityaandClaude Opus 4.7 325228c514 feat: letter-mgmt module + digital UPI/IMPS/ATM-POS reports + header redesign
letter-mgmt (new module):
- Notice page: overdue loan list with filters, KPI strip, bulk actions,
  call disposition logging (Promise-to-Pay, Not Reachable, etc.), Speed
  Post dispatch dialog with consignment + post-office tracking,
  PDF preview + download, call-contact dialog with primary / alt /
  family / nominee numbers and per-contact disposition history.
- Certificates: Loan Interest, Share, Balance, Form 60 (no-PAN flow),
  Form 15G/H (auto age-based), Hypothecation, NOC - each with shared
  preview dialog (six tone variants) and jsPDF generator using a
  common letterhead / summary-grid / signature-seal helper.

digital:
- IMPS module: report (P2A/P2P/Aadhaar tabs) + entry form with
  MMID/mobile lookup, NPCI switch resolve-to-A/C+IFSC BANL flow,
  sender autocomplete, hide sender field for P2P/Aadhaar, charges +
  18% GST + waive checkbox, per-sender today-only history dialog.
- UPI report with app-mix tab and full transaction filtering.
- ATM/POS/ECOM hub with three ticket cards routing to today/status/cycle.
- NEFT/RTGS entry: sender-account autocomplete, charges + GST + waive,
  field reorder (sender before amount), NEFT cap / RTGS floor
  validation, History button opening per-sender today's transactions.
- NEFT/RTGS report: horizontal-bar trend leaderboard replacing tall bars.

shell + theme:
- Header redesigned with IBM Plex Sans 12/500 typography, 11-column grid
  per row, top-accent hover indicator, bordered cells via grid-gap.
- Live KPI ticker below menu (CASH, TXN TODAY, CLEARING IN/OUT, NPA,
  CASA, CD RATIO, RBI CIRC, REPO) with marquee scroll, pause-on-hover,
  brand-blue gradient, amber bottom strip, pulsing red LIVE chip.
- Sidebar 'KYC Management' -> 'KYC & ReKYC Management'.
- Letter Mgmt / certificate menu items wired with green icon hints for
  items that have a working page.

access-control:
- MFA card layout compacted; method header inlines back button + title.

icons:
- Register faTruck/TruckFast, faEllipsisV/H, faCommentDots.
- Add IBM Plex Sans Google Fonts import to index.html.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 10:09:06 +05:30

93 lines
3.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 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 } from '@angular/common';
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatTooltip } from '@angular/material/tooltip';
import { Router } from '@angular/router';
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
export type AtmPosEcomReportKind = 'today' | 'status' | 'cycle';
interface ReportTicket {
kind: AtmPosEcomReportKind;
/** Route segment under /digital/atm-pos-ecom/ — wired once the report component exists. */
route: string;
icon: string;
accent: 'blue' | 'green' | 'purple';
title: string;
tagline: string;
description: string;
cta: string;
}
@Component({
selector: 'mifosx-atm-pos-ecom',
templateUrl: './atm-pos-ecom.component.html',
styleUrls: ['./atm-pos-ecom.component.scss'],
imports: [
...STANDALONE_SHARED_IMPORTS,
CommonModule,
FaIconComponent,
MatTooltip
]
})
export class AtmPosEcomComponent {
private snack = inject(MatSnackBar);
private router = inject(Router);
/** The three reports surfaced as tickets. Wire `route` to a real component as it lands. */
readonly tickets: ReportTicket[] = [
{
kind: 'today',
route: 'today',
icon: 'calendar-check',
accent: 'blue',
title: "Today's Report",
tagline: 'Same-day snapshot',
description:
"Real-time view of today's ATM, POS and E-commerce transactions across every channel — counts, value, success rate.",
cta: 'Open Today’s Report'
},
{
kind: 'status',
route: 'status',
icon: 'tasks',
accent: 'green',
title: 'Status-wise Report',
tagline: 'Grouped by processing state',
description:
'Breakdown by outcome — Approved · Declined · Reversed · Pending · Timed-out. Useful for ops triage and decline-rate analysis.',
cta: 'Open Status Report'
},
{
kind: 'cycle',
route: 'cycle',
icon: 'sync-alt',
accent: 'purple',
title: 'Cycle-wise Report',
tagline: 'Per settlement cycle',
description:
'Compare across settlement cycles — daily, weekly, monthly — for reconciliation with the network and acquirer files.',
cta: 'Open Cycle Report'
}
];
/**
* Until the underlying report components are wired, clicks surface a friendly
* "coming soon" toast. Once the report format is shared, replace this with
* `this.router.navigate(['/digital/atm-pos-ecom', t.route])`.
*/
openReport(t: ReportTicket): void {
this.snack.open(`${t.title} is coming next — drop the format and I'll wire it up.`, 'OK', { duration: 3500 });
// this.router.navigate(['/digital/atm-pos-ecom', t.route]);
}
}