fix(cashier): tag GL-entry denomination to the vault, show both voucher legs
- Transaction Entry's manual GL-entry screen was recording its denomination breakdown against whichever GL account the teller selected, not the vault account whose physical notes actually moved -- resolve and use the Cash Vault GL's own code/name dynamically instead - Closing Cash Report's GL Entries table showed only the one account its denomination row knew about; now shows both the debit and credit account of each voucher (backend now returns debitParty/creditParty), matching what My Vouchers already shows for the same entries Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -303,8 +303,8 @@
|
||||
<tr>
|
||||
<th class="gl-th--voucher">Voucher No</th>
|
||||
<th class="gl-th--date">Date</th>
|
||||
<th>A/C No</th>
|
||||
<th>A/C Name</th>
|
||||
<th>Debit</th>
|
||||
<th>Credit</th>
|
||||
<th class="gl-th--pt">Payment Type</th>
|
||||
<th class="gl-th--teller">Teller</th>
|
||||
<th class="num gl-th--dr">DR (₹)</th>
|
||||
@@ -326,8 +326,25 @@
|
||||
<div class="gl-time">{{ r.txnTime }}</div>
|
||||
}
|
||||
</td>
|
||||
<td class="gl-acno">{{ r.acNo }}</td>
|
||||
<td class="gl-acname">{{ r.acName }}</td>
|
||||
<!-- Both legs of the voucher, the same pair My Vouchers shows — not just the one
|
||||
side this row's own denomination breakdown happens to know about. Falls back
|
||||
to that one side (acNo/acName) when the voucher predates m_voucher_line. -->
|
||||
<td class="gl-acname">
|
||||
<div>{{ r.debitParty || r.acName }}</div>
|
||||
@if (r.debitAccount || r.acNo) {
|
||||
<div class="gl-acno">{{ r.debitAccount || r.acNo }}</div>
|
||||
}
|
||||
</td>
|
||||
<td class="gl-acname">
|
||||
@if (r.creditParty) {
|
||||
<div>{{ r.creditParty }}</div>
|
||||
@if (r.creditAccount) {
|
||||
<div class="gl-acno">{{ r.creditAccount }}</div>
|
||||
}
|
||||
} @else {
|
||||
<span class="gl-pt-none">—</span>
|
||||
}
|
||||
</td>
|
||||
<td class="gl-pt">
|
||||
@if (r.paymentType) {
|
||||
<span class="gl-pt-badge">{{ r.paymentType }}</span>
|
||||
|
||||
@@ -1617,6 +1617,13 @@ export class TransactionEntryComponent implements OnInit, OnDestroy {
|
||||
private lastLoadedAcNo = '';
|
||||
private acNoInput$ = new Subject<{ row: TxnRow; index: number; value: string }>();
|
||||
cashVaultGlId: number | null = null;
|
||||
/** The Cash Vault GL account's own code and name — the denomination breakdown for a manual GL
|
||||
* entry has to be filed against THIS account, not whichever account the teller typed in, since
|
||||
* that account is never the one physical notes actually moved through (see submitGlJournalEntry).
|
||||
* Both resolved dynamically off whatever this tenant's own financial-activity mapping names as
|
||||
* its cash/vault account (see loadCashVaultGl) — never a literal account name or code. */
|
||||
cashVaultGlCode: string | null = null;
|
||||
cashVaultGlName: string | null = null;
|
||||
|
||||
// Joint holder expanded details (keyed by index)
|
||||
expandedHolder: number | null = null;
|
||||
@@ -3121,6 +3128,8 @@ export class TransactionEntryComponent implements OnInit, OnDestroy {
|
||||
byName(/vault/i) ?? byName(/cash/i) ?? items.find((a: any) => a.glAccountData?.type?.value === 'ASSET');
|
||||
if (found?.glAccountData?.id) {
|
||||
this.cashVaultGlId = found.glAccountData.id;
|
||||
this.cashVaultGlCode = found.glAccountData.glCode ?? null;
|
||||
this.cashVaultGlName = found.glAccountData.name ?? found.financialActivityData?.name ?? null;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -5648,11 +5657,15 @@ export class TransactionEntryComponent implements OnInit, OnDestroy {
|
||||
count: this.countFor(d),
|
||||
subtotal: this.subtotalFor(d)
|
||||
}));
|
||||
// Filed against the Cash Vault GL, not the account the teller selected on screen: that
|
||||
// selected account (e.g. Sundry Creditors) is the other leg of the journal entry, and
|
||||
// never the one whose physical notes actually changed hands. Tagging the breakdown to it
|
||||
// instead of the vault is why this cash never reached the cashier/vault position.
|
||||
this.http
|
||||
.post('/cashier/gl-denomination', {
|
||||
txnId: res.transactionId ?? res.resourceId,
|
||||
accountNo: this.accountDetails?.glCode ?? row.acNo,
|
||||
accountName: this.accountDetails?.name ?? '',
|
||||
accountNo: this.cashVaultGlCode ?? row.acNo,
|
||||
accountName: this.cashVaultGlName ?? 'Cash at Vault',
|
||||
txnType: isDeposit ? 'DEPOSIT' : 'WITHDRAWAL',
|
||||
txnDate: txnDateIso,
|
||||
paymentTypeName: selectedPt?.name ?? 'Cash',
|
||||
|
||||
Reference in New Issue
Block a user