Dispensary Checkout & Reports
The same checks run on every channel. What they are, what a refused checkout looks like, and the Reports page that keeps the record.
In plain words
This is the receipt book of the module: what was handed to whom, what the limits were, and which checkouts were blocked and why. It is the record you reach for when somebody official asks a question.
What checkout checks
Member
The customer on the order must be a registered member. Guests cannot check out through the module.
Status
Pending and Suspended members are blocked. Expired members are blocked or warned, per the On expiry setting.
Age
The member's date of birth against the minimum age, and against any limit row with a maximum age.
Quantity
The basket's grams, resolved per product from Potency, against every limit in force: per transaction, per day, per month, per category. Day and month totals include everything already taken in that period.
Potency
Every product in the basket must resolve to a grams value; otherwise the checkout blocks with UNKNOWN_POTENCY.
Credit
When the order is paid from member credit, the balance must cover the total. Other payment methods are unaffected.
A refused checkout does not complete and does not crash: staff see a “Checkout error” dialog, and the attempt is written to the audit trail with the specific reason.
| MODULE_BLOCKED | The label shown in the checkout dialog whenever the module refuses the order. |
| LIMIT_EXCEEDED | Recorded on Reports when a quantity limit was the cause. |
| UNKNOWN_POTENCY | Returned when a product in the basket had no resolvable grams value. |
At the POS
Select the member as the customer. A panel next to the customer badge shows their member number, status and a Top up button. At Checkout, the dialog shows Member credit — Available above the payment-method grid, with a warning if the balance will not cover the order.
To pay from credit, click Settle from member credit; the sale completes immediately and the receipt options follow (print, email or skip). To pay by cash or card instead, use the normal payment methods and Complete Transaction. Either way the member's allowance ledger is debited the basket's grams with the reason ORDER_CREATED.
At the kiosk
On a kiosk paired to a store, a member identifies themselves by phone number, browses, and checks out on their own. After adding an item, the basket shows their standing before checkout: credit available and remaining allowance in grams. A credit-tender order settles immediately with no payment step, and the receipt screen shows the order number. Kiosk setup and pairing are on the POS & Kiosk page.
Reports
Modules → Dispensary → Reports. Pick a date range (This month by default). Three things on the page:
Limits in force
The configuration that was active during the selected range, as a timeline: for example a market line with its day and month limits, and the member cap with the statuses it counts. This is the record a regulator asks for: what your rules were on a given date, not only today's.
Distribution
Grams dispensed and credit spent, grouped by Period by default. Group by Member or Product reshapes the same table. Export CSV downloads the current table: one row per group with the group key, label, grams dispensed and credit amount.
Blocked checkouts
Every refused attempt in the range: member number, channel (for example pos), the reason code and the cart reference.
