feat(clerk): add collection flow — multi-DR savings to CR GL with maker-checker

- Transaction entry: detect collection mode (N DR savings → 1 CR GL) and disbursement mode (1 DR GL → N CR savings); build dbCr-tagged payload for backend
- Disbursement review: show 'GL Credit (Target)' / 'Debit Entries' labels for collection; fix double-count by summing only DR entries for collection totals; dynamic approve button text
- My disbursement requests: add DR/CR badge column in expanded credit-entries preview
- My requests / withdrawal-requests: minor consistency updates

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jaanu423
2026-06-16 15:28:27 +05:30
co-authored by Claude Sonnet 4.6
parent efb01d5441
commit 6cccb58c04
11 changed files with 345 additions and 102 deletions
@@ -121,7 +121,7 @@
</thead>
<tbody>
@for (r of requests; track r.id) {
<tr class="wri-row" [class.wri-row--disbursed]="r.status === 'DISBURSED'" (click)="review(r)">
<tr class="wri-row" [class.wri-row--disbursed]="r.status === 'WITHDRAWN'" (click)="review(r)">
<td class="cell-mono wri-voucher">{{ r.voucher_no || '—' }}</td>
<td class="cell-mono wri-token">{{ r.tok_no || '—' }}</td>
<td class="cell-mono">{{ r.account_no }}</td>
@@ -131,7 +131,7 @@
<td>{{ r.clerk_name }}</td>
<td>{{ r.manager_name || r.manager_username || '—' }}</td>
<td class="wri-cashier-cell">
@if (r.status === 'DISBURSED') {
@if (r.status === 'WITHDRAWN') {
<div class="wri-cashier-info">
<span class="wri-cashier-name">{{ r.disbursed_by }}</span>
<span class="wri-dt">{{ formatDateTime(r.disbursed_at) }}</span>
@@ -77,7 +77,7 @@ export class WithdrawalRequestsComponent implements OnInit {
{ value: 'PENDING', label: 'Pending' },
{ value: 'APPROVED', label: 'Approved' },
{ value: 'REJECTED', label: 'Rejected' },
{ value: 'DISBURSED', label: 'Disbursed' }
{ value: 'WITHDRAWN', label: 'Withdrawn' }
];
}
@@ -177,7 +177,7 @@ export class WithdrawalRequestsComponent implements OnInit {
PENDING: 'wri-status--pending',
APPROVED: 'wri-status--approved',
REJECTED: 'wri-status--rejected',
DISBURSED: 'wri-status--disbursed'
WITHDRAWN: 'wri-status--disbursed'
};
return map[status] ?? '';
}
@@ -187,7 +187,7 @@ export class WithdrawalRequestsComponent implements OnInit {
PENDING: 'Pending',
APPROVED: 'Approved',
REJECTED: 'Rejected',
DISBURSED: 'Disbursed'
WITHDRAWN: 'Withdrawn'
};
return map[status] ?? status;
}