Procurement

Purchase orders with approvals and budgets that hold

Controls that live in the database, so they apply whether the order came from the app, an integration, or someone in a hurry.

Approval is an act, not a status

Approving an order records who signed it, when, and at what level of seniority. Editing the status column directly is refused, so there is no route to an approved order that leaves no trace of who approved it. An order needs a signature even when no approval rule is configured.

Budgets that bite before the money moves

A budget knows what is already committed against it. An order that would take it over its limit is refused at submission, with the numbers in the error, rather than discovered at month end. Budgets have periods, so last quarter’s headroom is not this quarter’s.

Separation of duties by default

The person who raised an order cannot be the one who approves it, unless they own the account. Rules can require a given seniority — a large order can demand an owner’s signature rather than any member’s.