CASHIER · CASH SETTLEMENT

Cash Settlement

End-of-day settlement — verify your denomination count against system expected balance and hand cash to vault.

@if (pageState === 'loading') {
hourglass_empty

Loading your cashier position…

} @if (pageState === 'no-cashier') {
manage_accounts
Supervisor / Admin Settlement Your account is not linked to a cashier drawer. Select a teller and cashier below to process their end-of-day settlement.
Settlement Date @if (tellers.length === 1) { Teller } @else { Teller @for (t of tellers; track t.id) { {{ t.name }} } } Cashier @for (c of supervisorCashiers; track c.id) { {{ c.label }} } @if (supervisorTellerId && supervisorCashiers.length === 0 && !loadingCashiers) { No cashiers found }
@if (supervisorChecking) {
Checking cashier status…
}
} @if (pageState === 'needs-reconciliation') {
assignment_late
Reconciliation required before settlement

{{ myCashierName ? myCashierName + ' has' : 'You have' }} not completed today's cash reconciliation. Settlement cannot proceed until reconciliation is done and any variance is documented.

@if (isSupervisor) { }
} @if (pageState === 'already-settled') {
check_circle
{{ myCashierName ? myCashierName + ' — already' : 'Already' }} settled for {{ settlementDate }}

Cash has already been handed back to the vault for this date. To correct an error, a manager must reverse the existing settlement first.

@if (isSupervisor) { }
} @if (pageState === 'form') {
{{ isSupervisor ? 'manage_accounts' : 'person' }} {{ myCashierName }} {{ isSupervisor ? 'Cashier (Supervisor)' : 'Cashier (From)' }} @if (isSupervisor) { }
@if (tellers.length === 1) { Teller / Vault (To) * } @else { Teller / Vault (To) * @for (t of tellers; track t.id) { {{ t.name }} } @if (tellers.length === 0) { No tellers configured } } Settlement Date Note (Optional)
@if (rows.length === 0) {
warning
No expected balance found

No cash has been allocated to your drawer for {{ settlementDate }}. Ensure vault-to-cashier transfer was done in the morning.

} @if (morningTotal > 0) {
wb_sunny Morning Opening Balance (Cash received from vault today) ₹{{ morningTotal | number: '1.2-2' }}
@if (noteRows.length > 0) {
@for (row of noteRows; track row.denominationId) { @if (row.morningCount > 0) { ₹{{ row.denominationValue }}×{{ row.morningCount }} } }
} @if (coinRows.length > 0) {
@for (row of coinRows; track row.denominationId) { @if (row.morningCount > 0) { ₹{{ row.denominationValue }}×{{ row.morningCount }} } }
}
} @if (rows.length > 0) {
@if (noteRows.length > 0) { @for (row of noteRows; track row.denominationId) { }
Denomination Morning System Expected Physical Count Variance
₹{{ row.denominationValue }} {{ row.morningCount || '—' }} {{ row.expectedCount }}
{{ varianceFor(row) > 0 ? '+' : '' }}{{ varianceFor(row) }} @if (varianceFor(row) !== 0) { (₹{{ varianceFor(row) * row.denominationValue | number: '1.0-0' }}) }
} @if (coinRows.length > 0) { @for (row of coinRows; track row.denominationId) { }
Denomination Morning System Expected Physical Count Variance
₹{{ row.denominationValue }} {{ row.morningCount || '—' }} {{ row.expectedCount }}
{{ varianceFor(row) > 0 ? '+' : '' }}{{ varianceFor(row) }} @if (varianceFor(row) !== 0) { (₹{{ varianceFor(row) * row.denominationValue | number: '1.0-0' }}) }
}
@if (hasVariance) {
{{ totalVariance > 0 ? 'add_circle_outline' : 'remove_circle_outline' }}
{{ totalVariance > 0 ? 'Excess' : 'Shortage' }}: ₹{{ (totalVariance < 0 ? -totalVariance : totalVariance) | number: '1.2-2' }} Physical count differs from system expected. A reason is required to proceed.
Variance Reason *
} } }