feat(cashier+checker): add cashier deposit maker-checker flow and voucher system

- Add cashier deposit service and submit flow via maker-checker
- New CashierDepositService: submit, approve, reject, list endpoints
- Transaction-entry: cashier SD deposit goes to deposit-requests instead of direct credit
- Checker inbox: new Deposit Requests tab with approve/reject review dialog
- Cashier nav: My Deposit Requests tracking page
- Withdrawal requests: show voucher_no from backend instead of JS-padded id
- clerk-withdrawal.service: disburse denominationData accepts null for non-cash
- Role-based checker enforcement: only manager/head-cashier can approve/reject
- Maker cannot approve own request (self-approval blocked at backend)
- Denomination total validation: breakdown must match transaction amount

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jaanu423
2026-06-12 10:52:35 +05:30
co-authored by Claude Sonnet 4.6
parent 61cb09f352
commit e5d6cd32dc
18 changed files with 2360 additions and 18 deletions
@@ -100,7 +100,8 @@
<table class="pg-table myr-table">
<thead>
<tr>
<th>#</th>
<th>Voucher No</th>
<th>Token No</th>
<th>Account</th>
<th>Client</th>
<th class="num">Amount</th>
@@ -121,7 +122,8 @@
[class.myr-row--rejected]="r.status === 'REJECTED'"
[class.myr-row--disbursed]="r.status === 'DISBURSED'"
>
<td class="cell-mono">{{ r.id }}</td>
<td class="cell-mono myr-voucher">{{ r.voucher_no || '—' }}</td>
<td class="cell-mono myr-token">{{ r.tok_no || '—' }}</td>
<td class="cell-mono">{{ r.account_no }}</td>
<td>{{ r.client_name }}</td>
<td class="num">₹{{ r.amount | number: '1.2-2' }}</td>
@@ -34,6 +34,20 @@
}
}
.myr-voucher {
font-weight: 700;
color: #1e40af;
letter-spacing: 0.06em;
font-size: 12px;
}
.myr-token {
font-weight: 700;
color: #0f766e;
letter-spacing: 0.06em;
font-size: 12px;
}
.myr-status {
display: inline-flex;
align-items: center;