feat(cashier): denomination overdraft validation, exchange detail fix, cash exchange in reports

- Savings/Current/FD/RD withdrawal forms: card-style overdraft warning when
  requested denomination count exceeds cashier stock; submit blocked on overdraft
- Cash History detail view: show both RECEIVED and GIVEN denomination breakdowns
  for Cash Exchange (previously only RECEIVED side was displayed)
- Closing Cash Report: add Cash Exchanges section (denomination-wise received/given/net)
- Excess Transaction Report: include cash exchanges >= threshold with Type badge
  (Exchange/Txn) and ID Proof column for RBI/AML compliance
- cashier-shared.scss: etr-badge and closing-exchange-head styles
- Cash Exchange entry: overdraft warning redesigned to cx-overdraft-card BEM layout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jaanu423
2026-06-01 10:10:17 +05:30
co-authored by Claude Sonnet 4.6
parent 51495f8eb8
commit f291e4da5b
24 changed files with 1339 additions and 25 deletions
@@ -29,6 +29,7 @@ export class ClosingCashReportComponent implements OnInit {
date = '';
rows: any[] = [];
exchangeRows: any[] = [];
depositTotal = 0;
withdrawalTotal = 0;
netTotal = 0;
@@ -41,6 +42,12 @@ export class ClosingCashReportComponent implements OnInit {
get coinRows(): any[] {
return this.rows.filter((r) => r.kind === 'coin');
}
get exchangeNoteRows(): any[] {
return this.exchangeRows.filter((r) => r.kind !== 'coin');
}
get exchangeCoinRows(): any[] {
return this.exchangeRows.filter((r) => r.kind === 'coin');
}
ngOnInit(): void {
const d = new Date();
@@ -53,6 +60,7 @@ export class ClosingCashReportComponent implements OnInit {
this.service.closingCashReport(this.date).subscribe({
next: (res: any) => {
this.rows = res?.rows || [];
this.exchangeRows = res?.exchangeRows || [];
this.depositTotal = Number(res?.depositTotal || 0);
this.withdrawalTotal = Number(res?.withdrawalTotal || 0);
this.netTotal = Number(res?.netTotal || 0);
@@ -61,6 +69,7 @@ export class ClosingCashReportComponent implements OnInit {
},
error: () => {
this.rows = [];
this.exchangeRows = [];
this.depositTotal = 0;
this.withdrawalTotal = 0;
this.netTotal = 0;