feat(bank-transfer): convert bank transfer to maker-checker approval flow

- submitBankTransfer() now calls submit() with requestType='BANK_TRANSFER'
  instead of the immediate-execution /banktransfer endpoint
- Confirm dialog updated: 'Submit for Approval' instead of 'Execute Transfer'
- disbursement-review: isBankTransferMode getter, separate DR/CR entry tables,
  'Approve Bank Transfer' button label, correct isCollectionMode guard
- Disbursement Requests checker inbox: Type badge (Bank Transfer/Collection/
  Disbursement) column, GL column shows 'Intra-bank transfer' for BT requests
- Checker inbox tab renamed to 'Disbursement & Transfers'

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jaanu423
2026-06-17 14:46:26 +05:30
co-authored by Claude Sonnet 4.6
parent e661161eac
commit cbb2bd7c58
7 changed files with 401 additions and 85 deletions
@@ -12,8 +12,10 @@
<div class="wri-action-bar__left">
<mat-icon class="wri-action-bar__icon">swap_horiz</mat-icon>
<div>
<div class="wri-action-bar__title">Disbursement Requests</div>
<div class="wri-action-bar__sub">Review, approve or reject clerk GL disbursement requests.</div>
<div class="wri-action-bar__title">Disbursement &amp; Transfer Requests</div>
<div class="wri-action-bar__sub">
Review, approve or reject clerk disbursement, collection, and bank transfer requests.
</div>
</div>
</div>
</div>
@@ -106,10 +108,10 @@
<thead>
<tr>
<th class="wri-th-id">Voucher No</th>
<th>GL Account</th>
<th class="num">DR Amount</th>
<th>Credit Entries</th>
<th>Payment Mode</th>
<th>Type</th>
<th>GL Account / Details</th>
<th class="num">Amount</th>
<th>Entries</th>
<th>Clerk</th>
<th>Reviewed By</th>
<th>Submitted At</th>
@@ -122,14 +124,37 @@
<tr class="wri-row" (click)="review(r)">
<td class="cell-mono wri-voucher">{{ r.voucher_no || '—' }}</td>
<td>
<span class="cell-mono">{{ r.gl_account_no }}</span>
<span class="wri-gl-name">{{ r.gl_account_name }}</span>
<span
class="wri-credit-badge"
[style.background]="
r.request_type === 'BANK_TRANSFER'
? '#e3f2fd'
: r.request_type === 'COLLECTION'
? '#fce4ec'
: '#e8f5e9'
"
>
{{
r.request_type === 'BANK_TRANSFER'
? 'Bank Transfer'
: r.request_type === 'COLLECTION'
? 'Collection'
: 'Disbursement'
}}
</span>
</td>
<td>
@if (r.request_type === 'BANK_TRANSFER') {
<span class="wri-gl-name">Intra-bank transfer</span>
} @else {
<span class="cell-mono">{{ r.gl_account_no }}</span>
<span class="wri-gl-name">{{ r.gl_account_name }}</span>
}
</td>
<td class="num wri-amount">₹{{ r.dr_amount | number: '1.2-2' }}</td>
<td class="wri-credit-count">
<span class="wri-credit-badge">{{ creditCount(r) }} account{{ creditCount(r) !== 1 ? 's' : '' }}</span>
</td>
<td>{{ r.payment_type_name || 'Transfer' }}</td>
<td>{{ r.clerk_name }}</td>
<td>{{ r.manager_name || r.manager_username || '—' }}</td>
<td class="wri-dt">{{ formatDateTime(r.submitted_at) }}</td>
@@ -140,7 +140,7 @@
*mifosxHasPermission="'ALL_FUNCTIONS_READ'"
>
<fa-icon icon="money-bill-wave" class="ac-tab__ic"></fa-icon>
<span>Disbursement Requests</span>
<span>Disbursement & Transfers</span>
</a>
</nav>