Approver review
—
Everything on one screen: per-entity totals, the cross-tab, every flag with its rule message, and receipts that open in place. Which ones you opened is recorded.
Lines
Decision
Per entity
Each entity bears its own share. The name is set in the Display face and the invoice prefix is a Badge, so two similarly-named entities can never be confused.
Entity × category
Payment instruction
Produced on approval. Finance runs payments weekly on Thursday; the app records the payment, it does not execute it.
Audit trail
Append-only. Every state change, amount edit, attachment change, receipt view, comment and delegation. Not editable or deletable by anyone, including an admin — this is what the email thread never had.
Notifications
finance@meracannabis.com and payroll@meracannabis.com stay copied on everything, exactly as they are on the current email thread. Every message names the period, the grand total and the open-flag count.
Queued for this report
The state machine
Every permitted transition is a row. Anything absent is refused, in the runtime and
in the database. The routing chain below is built from routing_rule rows.
Routing
Acceptance checks
Executed against the real workflow on scratch reports. Criterion 13 measures this page’s own layout, so resize the window and re-run to test 375px and 1440px.