feat(shares): preview the approval checklist before submit, fix settlement GL option
The Clerk Dashboard's standalone Share Withdrawal Request form never offered a GL settlement destination -- it always submitted SAVINGS, silently, while the Cashier's Transaction Entry screen already let a clerk pick any postable GL account on its CR row. Added the same "Settlement Destination" choice (Savings / GL Account) with a searchable GL selector here too, so both entry points to the same backend endpoint behave the same way. Both share-withdrawal confirm dialogs (savings settlement and GL settlement, in transaction-entry.component.ts) now call the backend's new preview-validate endpoint before showing the confirm dialog, so a clerk sees the same checklist a manager will see on approval -- a missing GL mapping, an unverified KYC, an open AML alert -- before committing to the request, not after a manager has already spent time reviewing it. A failing check is shown, not blocked: real hard rules are still enforced server-side at approve(). Guarded with a 5s timeout and a fallback message so a slow or unavailable check can never leave the dialog looking stuck. error-handler.interceptor.ts: a document/signature attachment whose row survives but whose file is missing from the content store now resolves to a silent 404 (matching the existing image-fetch handling) instead of surfacing a raw error. Background GET failures (500/501/503) on calls a component already recovers from (photo, attachment, notes, standing instructions, ...) now surface as a corner toast instead of a blocking modal that has to be dismissed -- a write action's failure (POST/PUT/DELETE) still gets the centred, must-acknowledge dialog, since that is the one thing the user was waiting on. Also surfaces the backend's real message on a 500 instead of a hardcoded generic sentence. Backend counterpart: ClerkShareWithdrawalRequestApiResource (preview-validate endpoint, shared buildShareWithdrawalChecks()) and DocumentReadPlatformServiceImpl (missing-file 404) land separately. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -129,6 +129,31 @@
|
||||
<span>* Date of Meeting</span>
|
||||
<input type="date" [(ngModel)]="meetingDate" [disabled]="isReview" />
|
||||
</label>
|
||||
<label class="inv-form-field">
|
||||
<span>* Settlement Destination</span>
|
||||
@if (!isReview) {
|
||||
<select [ngModel]="settlementMode" (ngModelChange)="onSettlementModeChange($event)">
|
||||
<option value="SAVINGS">Member's Linked Savings Account</option>
|
||||
<option value="GL">GL Account</option>
|
||||
</select>
|
||||
} @else {
|
||||
<input
|
||||
type="text"
|
||||
[value]="reviewRequest?.settlement_mode === 'GL' ? 'GL Account' : 'Linked Savings Account'"
|
||||
readonly
|
||||
/>
|
||||
}
|
||||
</label>
|
||||
@if (!isReview && settlementMode === 'GL') {
|
||||
<label class="inv-form-field">
|
||||
<span>* Settlement GL Account</span>
|
||||
<mifosx-gl-account-selector
|
||||
[inputFormControl]="toGlAccountControl"
|
||||
[glAccountList]="glAccountsData"
|
||||
[required]="true"
|
||||
></mifosx-gl-account-selector>
|
||||
</label>
|
||||
}
|
||||
<label class="inv-form-field">
|
||||
<span>* Settlement Payment Type</span>
|
||||
@if (!isReview) {
|
||||
@@ -386,14 +411,25 @@
|
||||
<td>Date of Meeting</td>
|
||||
<td>{{ meetingDate }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Settlement Destination</td>
|
||||
<td>{{ settlementMode === 'GL' ? 'GL Account' : 'Linked Savings Account' }}</td>
|
||||
</tr>
|
||||
@if (settlementMode === 'GL') {
|
||||
<tr>
|
||||
<td>Settlement GL Account</td>
|
||||
<td>{{ selectedSettlementGlName }}</td>
|
||||
</tr>
|
||||
} @else {
|
||||
<tr>
|
||||
<td>Linked Savings Account</td>
|
||||
<td>{{ account?.savingsAccountNumber || 'None — settlement will not run automatically' }}</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<td>Settlement Payment Type</td>
|
||||
<td>{{ settlementPaymentTypeName }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Linked Savings Account</td>
|
||||
<td>{{ account?.savingsAccountNumber || 'None — settlement will not run automatically' }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user