feat(cashier): complete maker-checker withdrawal disbursement flow
- Clerk manually enters token no with today-date unique validation (backend enforced) - Cashier token lookup: auto-fill amount/account, lock amount field, status-specific errors - Confirm dialog shows CASH DISBURSEMENT (blue) with no balance re-deduction warning - Disbursement denomination saved to m_savings_txn_denomination for vault position update - Block direct cashier withdrawal without approved maker-checker token - DISBURSED status shown in My Requests and Checker inbox views with cashier/time info - Remove getNextToken() service method and m_daily_token_counter table (0326 migration) - Race condition protection: UPDATE WHERE status=APPROVED prevents double disbursement Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
de420bb8ab
commit
61cb09f352
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Copyright since 2025 Mifos Initiative
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
import { Component, inject } from '@angular/core';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { TransactionEntryComponent } from '../../cashier/transaction-entry/transaction-entry.component';
|
||||
|
||||
/**
|
||||
* Clerk edit wrapper — renders the full clerk dashboard workspace pre-filled from a rejected
|
||||
* withdrawal request, editable, with a Resubmit action.
|
||||
*/
|
||||
@Component({
|
||||
selector: 'mifosx-withdrawal-edit',
|
||||
standalone: true,
|
||||
imports: [TransactionEntryComponent],
|
||||
template: `<mifosx-transaction-entry [clerkMode]="true" [editRequestId]="requestId"></mifosx-transaction-entry>`
|
||||
})
|
||||
export class WithdrawalEditComponent {
|
||||
private route = inject(ActivatedRoute);
|
||||
requestId: number | null = null;
|
||||
|
||||
constructor() {
|
||||
const id = this.route.snapshot.params['id'];
|
||||
this.requestId = id != null ? Number(id) : null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user