Finance Denomination Management - hmislk/hmis GitHub Wiki
Denomination Management in Cash Transactions
Introduction
Denomination management allows cashiers to record physical cash breakdowns — the number of each note and coin denomination — rather than just a total amount. This enables physical cash audits, reduces count errors during handover, and provides detailed trail for safe/bank reconciliation.
Where Denominations Are Used
| Operation | Purpose |
|---|---|
| Start Shift (Opening Float) | Record denomination breakdown of opening cash |
| End Shift (Shift End Summary) | Record physical cash in drawer at shift end |
| Record Shift End Cash in Hand | Explicit cash count for handover |
| Handover Creation | Break down cash bundle being handed over |
| Float Transfer | Specify denominations in float transfer |
| Float Transfer Request | Request specific denominations |
| Deposit to Safe/Bank | Record denominations deposited |
Entering Denominations
On any page with denomination entry:
- A denomination table shows each note/coin value (e.g. Rs 5000, Rs 1000, Rs 500, Rs 100, Rs 50, Rs 20, Rs 10, Rs 5, Rs 2, Rs 1).
- Enter the quantity of each denomination.
- The system calculates subtotals per denomination and the grand total automatically.
- The grand total must match the declared amount.
Validation Rules
- Negative quantities are blocked — client-side (
f:validateLongRange) and server-side validation prevent negative values (PR #20808). - Grand total must equal the entered cash amount before the form can be saved.
Denomination Prefill
When issuing a float transfer, denomination fields are pre-filled based on your current drawer composition (PR #20664). You can override the pre-filled values before submitting.
Technical Reference
| Item | Detail |
|---|---|
| Controllers | DenominationController, DenominationTransactionController |
| Entities | Denomination (note/coin types), DenominationTransaction (per-transaction breakdown) |
| Validation | f:validateLongRange (min=0) on quantity inputs |
| PR references | #20808 (negative validation), #20664 (prefill in float transfer) |