fix(cashier): realistic branch-aware account numbers, dynamic date tags in summary report

Account No now always holds a genuine reference for its transaction type
(customer account, GL/facility code, IFSC, DD/PO/TDS/GST/cheque ref, or
UTR/RRN/UMRN for RTGS/NEFT/UPI/ATM/NACH) instead of a plain description.
Branch 2's view derives its own valid-format account numbers and IFSC
codes by shifting the numeric segment, rather than tagging a "BR2-" prefix
onto Branch 1's values, which looked fake for standardized formats.

Voucher/reference numbers' baked-in "2607" (Jul 2026) tag is now derived
from the real current date at render time, so it won't go stale next month.

feat(clients): auto-calculate Monthly/Annual Income and Turnover

Typing either the monthly or annual figure now fills in the other at a 12x
ratio (rounded to 2 decimals, no trailing ".00" on whole numbers). Guarded
against firing during prefillForEdit()'s initial load of an existing
client's independently-saved values, so editing doesn't silently overwrite
historical data that wasn't an exact 12x match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-31 17:24:57 +05:30
co-authored by Claude Sonnet 5
parent b9b37397fe
commit fd28788d23
3 changed files with 119 additions and 40 deletions
@@ -219,7 +219,8 @@
<tr>
<th>Date</th>
<th>Voucher / Ref No</th>
<th>Account / Reference</th>
<th>Account No</th>
<th>Account Name / Reference</th>
<th>Particulars</th>
<th class="num col-out">Debit</th>
<th class="num col-in">Credit</th>
@@ -230,12 +231,10 @@
<tr>
<td>{{ asOnDate }}</td>
<td>
<span class="pg-chip">{{ t.voucherNo }}</span>
</td>
<td>
<div>{{ t.accountName }}</div>
<div class="cctr-subtext">{{ t.accountNo }}</div>
<span class="pg-chip">{{ display(t.voucherNo) }}</span>
</td>
<td>{{ display(t.accountNo) }}</td>
<td>{{ t.accountName }}</td>
<td>{{ t.particulars }}</td>
<td class="num col-out">
@if (t.debit > 0) {
@@ -250,13 +249,13 @@
</tr>
} @empty {
<tr>
<td colspan="6" class="pg-empty">No transactions for this filter.</td>
<td colspan="7" class="pg-empty">No transactions for this filter.</td>
</tr>
}
</tbody>
<tfoot>
<tr class="cctr-total-row">
<td colspan="4">Total</td>
<td colspan="5">Total</td>
<td class="num">₹{{ txnTotal(filteredTxns, 'debit') | number: '1.2-2' }}</td>
<td class="num">₹{{ txnTotal(filteredTxns, 'credit') | number: '1.2-2' }}</td>
</tr>