From cb3e43fd444f6fb38c74d07849afbf0a1e413a45 Mon Sep 17 00:00:00 2001 From: Nitesh Yadav Date: Sun, 30 Aug 2026 21:44:06 +0530 Subject: [PATCH] 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 --- .../transaction-entry.component.html | 6 ++++-- .../transaction-entry.component.ts | 17 +++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/app/cashier/transaction-entry/transaction-entry.component.html b/src/app/cashier/transaction-entry/transaction-entry.component.html index b260d1a8c..8b912fca7 100644 --- a/src/app/cashier/transaction-entry/transaction-entry.component.html +++ b/src/app/cashier/transaction-entry/transaction-entry.component.html @@ -267,7 +267,7 @@ > } - @if (row.acTyp === 'SHR' && row.typ === 'Enter Bank Transfer') { + @if (row.acTyp === 'SHR' && (row.typ === 'Enter Bank Transfer' || row.typ === 'Fund Transfer')) {
}
- @if (row.acTyp === 'SHR' && row.typ === 'Enter Bank Transfer') { + @if ( + row.acTyp === 'SHR' && (row.typ === 'Enter Bank Transfer' || row.typ === 'Fund Transfer') + ) {
!pt.isCashPayment); } const isShareSettlementCredit = - row.typ === 'Enter Bank Transfer' && + (row.typ === 'Enter Bank Transfer' || row.typ === 'Fund Transfer') && 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) { return tellerFacing.filter((pt: any) => !pt.isCashPayment); } @@ -3694,8 +3696,15 @@ export class TransactionEntryComponent implements OnInit, OnDestroy { } onSave(): void { - // Clerk bank transfer — N DR savings/CA + N CR savings/CA, immediate execution - if (this.isClerk && this.rows.length >= 2 && this.rows.every((r) => r.typ === 'Enter Bank Transfer')) { + // Clerk bank transfer — N DR savings/CA + N CR savings/CA, immediate execution. 'Fund 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 crRows = this.rows.filter((r) => r.dbCr === 'Cr');