CASHIER · RECONCILIATION

Cash Reconciliation

Compare physical denomination count with system expected balance. Highlights variance.

Teller @for (t of tellers; track t.id) { {{ t.name }} } Cashier @for (c of cashiers; track c.id) { {{ c.label }} } Date Note
@if (loadingExpected) {
Loading expected balances…
} @if (!loadingExpected && rows.length > 0) {
@if (noteRows.length > 0) { @for (row of noteRows; track row.denominationId) { }
Denomination Expected Physical Variance
₹{{ row.denominationValue }} {{ row.expectedCount }}
{{ row.varianceCount > 0 ? '+' : '' }}{{ row.varianceCount }} (₹{{ row.varianceCount * row.denominationValue | number: '1.0-0' }})
} @if (coinRows.length > 0) { @for (row of coinRows; track row.denominationId) { }
Denomination Expected Physical Variance
₹{{ row.denominationValue }} {{ row.expectedCount }}
{{ row.varianceCount > 0 ? '+' : '' }}{{ row.varianceCount }} (₹{{ row.varianceCount * row.denominationValue | number: '1.0-0' }})
}
Expected: ₹{{ totalExpected | number: '1.2-2' }}  |  Physical: ₹{{ totalPhysical | number: '1.2-2' }}  |  Variance: {{ totalVariance >= 0 ? '+' : '' }}₹{{ totalVariance | number: '1.2-2' }} {{ statusLabel }}
} @if (!loadingExpected && rows.length === 0 && selectedCashierId) {
No balance data found for this cashier.
} @if (!selectedCashierId) {
Select a teller and cashier to load expected balances.
}
@if (loadingHistory) {
Loading…
} @if (!loadingHistory && history.length === 0) {
No reconciliation records yet.
} @if (!loadingHistory && history.length > 0) {
@for (r of history; track r.id) { }
Date Cashier Expected Physical Variance Status By
{{ r.reconDate }} {{ r.cashierName || r.cashierId }} ₹{{ r.expectedAmount | number: '1.2-2' }} ₹{{ r.physicalAmount | number: '1.2-2' }} {{ r.variance >= 0 ? '+' : '' }}₹{{ r.variance | number: '1.2-2' }} {{ r.status }} {{ r.performedByUsername }}
}