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
@@ -36,26 +36,36 @@
<table class="pg-table">
<thead>
<tr>
<th>Type</th>
<th>Txn #</th>
<th>Account No</th>
<th>CIF</th>
<th>Date</th>
<th class="num">Amount</th>
<th>ID Proof</th>
</tr>
</thead>
<tbody>
@for (r of rows; track r.txnId) {
@for (r of rows; track $index) {
<tr>
<td>
@if (r.type === 'EXCHANGE') {
<span class="etr-badge etr-badge--exchange">Exchange</span>
} @else {
<span class="etr-badge etr-badge--savings">Txn</span>
}
</td>
<td>{{ r.txnId }}</td>
<td>{{ r.accountNo || '—' }}</td>
<td>{{ r.cifNo || '—' }}</td>
<td>{{ r.txnDate || '—' }}</td>
<td class="num">₹{{ r.totalAmount | number: '1.2-2' }}</td>
<td>{{ r.idProof || '—' }}</td>
</tr>
}
@if (loaded && rows.length === 0) {
<tr>
<td colspan="5" class="pg-empty">No transactions at or above ₹{{ threshold | number }}.</td>
<td colspan="7" class="pg-empty">No transactions at or above ₹{{ threshold | number }}.</td>
</tr>
}
</tbody>