CASHIER · EXCEPTIONS

Voucher Exceptions

Vouchers flagged at the counter — where the slip and the system disagree, or something else about the entry is wrong. A clerk or manager reviews each one with the cashier, records what was found, and attaches the supporting document.

@if (errorMsg) {
{{ errorMsg }}
} @if (!canResolve && loaded) {
info You can see these exceptions but not close them — a Clerk, Head Cashier or Bank Manager records the conclusion, so that whoever raised the flag is not the one who rules on it.
} @if (loading) {
Loading…
} @if (!loading && loaded && exceptions.length === 0) {
check_circle

{{ filter === 'OPEN' ? 'No open exceptions. Everything checked so far agrees.' : 'Nothing to show.' }}

} @for (e of exceptions; track e.voucherNo) {
{{ e.voucherNo }} @if (e.resolutionStatus) { RESOLVED } @else { ⚠ OPEN } {{ e.accountNo }} · {{ e.party }} · raised by {{ e.raisedByName }} on {{ stamp(e.raisedAt) }} @if (!e.resolutionStatus && canResolve) { }
System recorded ₹{{ e.systemAmount | number: '1.2-2' }}
@if (!amountsAgree(e)) {
Written on slip ₹{{ e.slipAmount | number: '1.2-2' }}
Difference ₹{{ difference(e) | number: '1.2-2' }}
} @else {
Amounts Agree — flagged for another reason
}

Cashier reported: {{ e.remarks }}

@if (e.resolutionStatus) {
{{ resolutionLabel(e.resolutionStatus) }} — {{ e.resolutionNotes }} · closed by {{ e.resolvedByName }} on {{ stamp(e.resolvedAt) }}
} @if (resolveRow === e) {
Close exception — {{ e.voucherNo }}
Supporting document

An exception cannot be closed on someone's word alone — attach the corrected slip, a signed note, or whatever the decision rests on.

@if (attachUploading) {

Uploading…

} @if (attachLoading) {

Loading…

} @if (!attachLoading && attachments.length === 0) {

No document attached yet — required before closing.

} @for (a of attachments; track a.id) {
description {{ a.fileName }} {{ a.uploadedByName }}
}
}
}