feat(cashier): enhance transaction entry TYPE/TXN TP options, auto-search, and account type configs

- Replace TYPE dropdown options with Withdrawal Slip, Cheque, Disbursement, Enter Bank Transfer, DD
- Move TXN TP. (payment type) into Classification row between BRANCH and AC. TP.
- Add GL and LA account types; fix SHR endpoint to /accounts/share
- Auto-search A/C NO. on 4+ digits with 400ms debounce
- Auto-fill ECS A/C NO. from savingsAccountNumber after account load
- Accept suffix/partial accountNo match from list API
- Disable broken global /search fallback across all account types
- Increase field widths: TYPE 160px, TXN TP. 160px, CHEQUE NO. 165px, TOK. NO. 120px

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jaanu423
2026-06-09 18:26:20 +05:30
co-authored by Claude Sonnet 4.6
parent 40a436dabe
commit 010adcb44f
6 changed files with 462 additions and 89 deletions
@@ -83,10 +83,11 @@
<label class="ws-f__lbl" title="Transaction Type">TYPE</label>
<select class="ws-f__ctl" [(ngModel)]="row.typ" (click)="$event.stopPropagation()">
<option value="~">~</option>
<option value="Cash">Cash</option>
<option value="Transfer">Transfer</option>
<option value="Clearing">Clearing</option>
<option value="Journal">Journal</option>
<option value="Withdrawal Slip">Withdrawal Slip</option>
<option value="Cheque">Cheque</option>
<option value="Disbursement">Disbursement</option>
<option value="Enter Bank Transfer">Enter Bank Transfer</option>
<option value="DD">DD (Demand Draft)</option>
</select>
</div>
<div class="ws-f ws-f--branch">
@@ -98,12 +99,17 @@
<option [ngValue]="27">027 · Industrial</option>
</select>
</div>
<div class="ws-f ws-f--trtp">
<label class="ws-f__lbl" title="Transaction Type">TXN TP.</label>
<select class="ws-f__ctl" [(ngModel)]="row.trTp" (click)="$event.stopPropagation()">
<option value=""></option>
@for (t of trTpOptions; track t) {
<option [value]="t">{{ t }}</option>
<div class="ws-f ws-f--paytype">
<label class="ws-f__lbl ws-f__lbl--accent" title="Transaction Type">TXN TP.</label>
<select
class="ws-f__ctl ws-f__ctl--accent"
[(ngModel)]="row.paymentTypeId"
(click)="$event.stopPropagation()"
[class.ws-f__ctl--req]="!row.paymentTypeId"
>
<option [ngValue]="null">— Select —</option>
@for (pt of paymentTypes; track pt.id) {
<option [ngValue]="pt.id">{{ pt.name }}</option>
}
</select>
</div>
@@ -127,7 +133,8 @@
<label class="ws-f__lbl" title="Account Number">A/C NO.</label>
<input
class="ws-f__ctl ws-f__ctl--mono"
[(ngModel)]="row.acNo"
[value]="row.acNo"
(input)="onAcNoInput(row, i, $any($event.target).value)"
(click)="$event.stopPropagation()"
(blur)="onAcNoBlur(row, i)"
placeholder="Account number"
@@ -172,20 +179,6 @@
<div class="ws-group">
<span class="ws-caption">Payment instrument</span>
<div class="ws-group__fields">
<div class="ws-f ws-f--paytype">
<label class="ws-f__lbl ws-f__lbl--accent" title="Payment Type">PAY TYPE</label>
<select
class="ws-f__ctl ws-f__ctl--accent"
[(ngModel)]="row.paymentTypeId"
(click)="$event.stopPropagation()"
[class.ws-f__ctl--req]="!row.paymentTypeId"
>
<option [ngValue]="null">— Select —</option>
@for (pt of paymentTypes; track pt.id) {
<option [ngValue]="pt.id">{{ pt.name }}</option>
}
</select>
</div>
<div class="ws-f ws-f--amt">
<label class="ws-f__lbl" title="Transaction Amount">AMOUNT</label>
<div class="ws-amt-wrap" [class.ws-amt-wrap--cash]="isCashPayment && selectedRow === row">
@@ -1059,10 +1052,11 @@
<label class="ws-f__lbl">TYPE</label>
<select class="ws-f__ctl" [(ngModel)]="row.typ">
<option value="~">~</option>
<option value="Cash">Cash</option>
<option value="Transfer">Transfer</option>
<option value="Clearing">Clearing</option>
<option value="Journal">Journal</option>
<option value="Withdrawal Slip">Withdrawal Slip</option>
<option value="Cheque">Cheque</option>
<option value="Disbursement">Disbursement</option>
<option value="Enter Bank Transfer">Enter Bank Transfer</option>
<option value="DD">DD (Demand Draft)</option>
</select>
</div>
<div class="ws-f ws-f--branch">
@@ -1074,12 +1068,16 @@
<option [ngValue]="27">027 · Industrial</option>
</select>
</div>
<div class="ws-f ws-f--trtp">
<label class="ws-f__lbl">TXN TP.</label>
<select class="ws-f__ctl" [(ngModel)]="row.trTp">
<option value=""></option>
@for (t of trTpOptions; track t) {
<option [value]="t">{{ t }}</option>
<div class="ws-f ws-f--paytype">
<label class="ws-f__lbl ws-f__lbl--accent">TXN TP.</label>
<select
class="ws-f__ctl ws-f__ctl--accent"
[(ngModel)]="row.paymentTypeId"
[class.ws-f__ctl--req]="!row.paymentTypeId"
>
<option [ngValue]="null">— Select —</option>
@for (pt of paymentTypes; track pt.id) {
<option [ngValue]="pt.id">{{ pt.name }}</option>
}
</select>
</div>
@@ -1101,7 +1099,8 @@
<label class="ws-f__lbl">A/C NO.</label>
<input
class="ws-f__ctl ws-f__ctl--mono"
[(ngModel)]="row.acNo"
[value]="row.acNo"
(input)="onAcNoInput(row, i, $any($event.target).value)"
(blur)="onAcNoBlur(row, i)"
placeholder="Account number"
/>
@@ -1138,19 +1137,6 @@
<div class="ws-group">
<span class="ws-caption">Payment instrument</span>
<div class="ws-group__fields">
<div class="ws-f ws-f--paytype">
<label class="ws-f__lbl ws-f__lbl--accent">PAY TYPE</label>
<select
class="ws-f__ctl"
[(ngModel)]="row.paymentTypeId"
[class.ws-f__ctl--req]="!row.paymentTypeId"
>
<option [ngValue]="null">— Select —</option>
@for (pt of paymentTypes; track pt.id) {
<option [ngValue]="pt.id">{{ pt.name }}</option>
}
</select>
</div>
<div class="ws-f ws-f--amt">
<label class="ws-f__lbl">AMOUNT</label>
<div class="ws-amt-wrap" [class.ws-amt-wrap--cash]="isCashPayment && selectedRow === row">