fix(cashier): recognise 'Fund Transfer' alongside 'Enter Bank Transfer' for share redemption
'Fund Transfer' and 'Enter Bank Transfer' are the same flow under two TYPE labels -- onTypChange() already defaults them identically and the auto-mirror-row logic already treats them as equivalent -- but the Resolution No./Meeting Date fields and onSave()'s clerk-transfer submission gate only checked 'Enter Bank Transfer'. Picking 'Fund Transfer' for a Share row silently hid the board-resolution fields and skipped submitShareRedemptionTransfer() entirely, falling through to the wrong save path. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -267,7 +267,7 @@
|
|||||||
>
|
>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
@if (row.acTyp === 'SHR' && row.typ === 'Enter Bank Transfer') {
|
@if (row.acTyp === 'SHR' && (row.typ === 'Enter Bank Transfer' || row.typ === 'Fund Transfer')) {
|
||||||
<div class="ws-f ws-f--cheqno">
|
<div class="ws-f ws-f--cheqno">
|
||||||
<label class="ws-f__lbl" title="Board Resolution Number">RESOLUTION NO.</label>
|
<label class="ws-f__lbl" title="Board Resolution Number">RESOLUTION NO.</label>
|
||||||
<input
|
<input
|
||||||
@@ -1474,7 +1474,9 @@
|
|||||||
>
|
>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
@if (row.acTyp === 'SHR' && row.typ === 'Enter Bank Transfer') {
|
@if (
|
||||||
|
row.acTyp === 'SHR' && (row.typ === 'Enter Bank Transfer' || row.typ === 'Fund Transfer')
|
||||||
|
) {
|
||||||
<div class="ws-f ws-f--cheqno">
|
<div class="ws-f ws-f--cheqno">
|
||||||
<label class="ws-f__lbl">RESOLUTION NO.</label>
|
<label class="ws-f__lbl">RESOLUTION NO.</label>
|
||||||
<input
|
<input
|
||||||
|
|||||||
@@ -1507,9 +1507,11 @@ export class TransactionEntryComponent implements OnInit, OnDestroy {
|
|||||||
return tellerFacing.filter((pt: any) => !pt.isCashPayment);
|
return tellerFacing.filter((pt: any) => !pt.isCashPayment);
|
||||||
}
|
}
|
||||||
const isShareSettlementCredit =
|
const isShareSettlementCredit =
|
||||||
row.typ === 'Enter Bank Transfer' &&
|
(row.typ === 'Enter Bank Transfer' || row.typ === 'Fund Transfer') &&
|
||||||
row.dbCr === 'Cr' &&
|
row.dbCr === 'Cr' &&
|
||||||
this.rows.some((r) => r.typ === 'Enter Bank Transfer' && r.dbCr === 'Dr' && r.acTyp === 'SHR');
|
this.rows.some(
|
||||||
|
(r) => (r.typ === 'Enter Bank Transfer' || r.typ === 'Fund Transfer') && r.dbCr === 'Dr' && r.acTyp === 'SHR'
|
||||||
|
);
|
||||||
if (isShareSettlementCredit) {
|
if (isShareSettlementCredit) {
|
||||||
return tellerFacing.filter((pt: any) => !pt.isCashPayment);
|
return tellerFacing.filter((pt: any) => !pt.isCashPayment);
|
||||||
}
|
}
|
||||||
@@ -3694,8 +3696,15 @@ export class TransactionEntryComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onSave(): void {
|
onSave(): void {
|
||||||
// Clerk bank transfer — N DR savings/CA + N CR savings/CA, immediate execution
|
// Clerk bank transfer — N DR savings/CA + N CR savings/CA, immediate execution. 'Fund Transfer'
|
||||||
if (this.isClerk && this.rows.length >= 2 && this.rows.every((r) => r.typ === 'Enter Bank Transfer')) {
|
// is the same flow under a second TYPE label — onTypChange() already defaults it identically to
|
||||||
|
// 'Enter Bank Transfer', so submission has to recognise both or a share redemption or bank
|
||||||
|
// transfer raised under this label silently falls through to the wrong branch below.
|
||||||
|
if (
|
||||||
|
this.isClerk &&
|
||||||
|
this.rows.length >= 2 &&
|
||||||
|
this.rows.every((r) => r.typ === 'Enter Bank Transfer' || r.typ === 'Fund Transfer')
|
||||||
|
) {
|
||||||
const drRows = this.rows.filter((r) => r.dbCr === 'Dr');
|
const drRows = this.rows.filter((r) => r.dbCr === 'Dr');
|
||||||
const crRows = this.rows.filter((r) => r.dbCr === 'Cr');
|
const crRows = this.rows.filter((r) => r.dbCr === 'Cr');
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user