feat(clerk): add GL disbursement maker-checker flow

- Add ClerkDisbursementService for submit/approve/reject HTTP calls
- Add DisbursementRequestsComponent (manager inbox tab under checker tasks)
- Add DisbursementReviewComponent (manager approve/reject detail page)
- Add MyDisbursementRequestsComponent (clerk's own disbursement history)
- Add 'My Disbursements' nav tab to clerk shell navigation header
- Wire routes in cashier-routing and tasks-routing modules
- Add 'My Disbursements' button to transaction-entry clerk footer
- Include accountName in creditEntries payload for manager review display

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jaanu423
2026-06-16 10:43:29 +05:30
co-authored by Claude Sonnet 4.6
parent 89d1167145
commit efb01d5441
18 changed files with 2594 additions and 27 deletions
@@ -107,7 +107,12 @@
<div class="ws-group__fields">
<div class="ws-f ws-f--type">
<label class="ws-f__lbl" title="Transaction Type">TYPE</label>
<select class="ws-f__ctl" [(ngModel)]="row.typ" (click)="$event.stopPropagation()">
<select
class="ws-f__ctl"
[(ngModel)]="row.typ"
(click)="$event.stopPropagation()"
(change)="onTypChange(row)"
>
<option value="~">~</option>
<option value="Withdrawal Slip">Withdrawal Slip</option>
<option value="Cheque">Cheque</option>
@@ -145,7 +150,7 @@
class="ws-f__ctl"
[(ngModel)]="row.acTyp"
(click)="$event.stopPropagation()"
(change)="row.acTyp === 'GL' && (row.dbCr = 'Cr')"
(change)="row.acTyp === 'GL' && row.typ !== 'Disbursement' && (row.dbCr = 'Cr')"
>
@for (a of acTypOptions; track a) {
<option [value]="a">{{ a }}</option>
@@ -187,7 +192,7 @@
type="button"
class="ws-seg__btn ws-seg__btn--dr"
[class.ws-seg__btn--active-dr]="row.dbCr === 'Dr'"
[disabled]="row.acTyp === 'GL'"
[disabled]="row.acTyp === 'GL' && row.typ !== 'Disbursement'"
(click)="row.dbCr = 'Dr'"
>
DR
@@ -236,24 +241,26 @@
/>
</div>
</div>
<div class="ws-f ws-f--cheqno">
<label class="ws-f__lbl" title="Cheque Number">CHEQUE NO.</label>
<input
class="ws-f__ctl ws-f__ctl--mono"
[(ngModel)]="row.chequeNo"
(click)="$event.stopPropagation()"
placeholder="—"
/>
</div>
<div class="ws-f ws-f--cheqdt">
<label class="ws-f__lbl" title="Cheque Date">CHEQ. DATE</label>
<input
class="ws-f__ctl"
[(ngModel)]="row.cheqDate"
placeholder="dd-mm-yyyy"
(click)="$event.stopPropagation()"
/>
</div>
@if (row.typ !== 'Withdrawal Slip') {
<div class="ws-f ws-f--cheqno">
<label class="ws-f__lbl" title="Cheque Number">CHEQUE NO.</label>
<input
class="ws-f__ctl ws-f__ctl--mono"
[(ngModel)]="row.chequeNo"
(click)="$event.stopPropagation()"
placeholder="—"
/>
</div>
<div class="ws-f ws-f--cheqdt">
<label class="ws-f__lbl" title="Cheque Date">CHEQ. DATE</label>
<input
class="ws-f__ctl"
[(ngModel)]="row.cheqDate"
placeholder="dd-mm-yyyy"
(click)="$event.stopPropagation()"
/>
</div>
}
<div class="ws-f ws-f--tok">
<label class="ws-f__lbl" title="Token Number">TOK. NO.</label>
<input
@@ -1187,7 +1194,7 @@
<select
class="ws-f__ctl"
[(ngModel)]="row.acTyp"
(change)="row.acTyp === 'GL' && (row.dbCr = 'Cr')"
(change)="row.acTyp === 'GL' && row.typ !== 'Disbursement' && (row.dbCr = 'Cr')"
>
@for (a of acTypOptions; track a) {
<option [value]="a">{{ a }}</option>
@@ -1393,6 +1400,14 @@
</svg>
Add
</button>
<button
class="ws-btn ws-btn--ghost"
type="button"
(click)="router.navigate(['/clerk/my-disbursement-requests'])"
title="View my disbursement requests"
>
My Disbursements
</button>
}
</div>
<div class="ws-footer__actions">