Overview
After implementing many approval processes for purchase orders, payments and expenses, we generalised the pattern into a reusable approval engine for Odoo 19.
Business challenge
Each new approval requirement used to mean new code. Organisations needed to change levels, thresholds and approvers without development or upgrades.
Requirements
- Approval flows on any model, including custom ones
- Unlimited stages without code changes
- Conditions without executing administrator Python
- Delegation, escalation and expiry
- Tamper-resistant audit history
- Multi-company support
Solution architecture
A mixin applied dynamically to target models, with flow, stage, request and history models. The guarded business method is hidden and refused server-side until approval.
Major features
- Status bar integration on the document
- Approve and reject buttons on the document
- Any-one, minimum-count and all-approver modes
- Monitored fields that restart approval
- Delegations with date ranges
- Scheduled timeout and escalation
Important workflows
- 1 Configure flow
- 2 Submit document
- 3 Sequential or parallel approval
- 4 Escalation on timeout
- 5 Release of business action
Business impact
- Approval rules changed by configuration rather than development
- Server-side enforcement prevents approval bypass
- Consistent audit trail across document types
Impact is described qualitatively. We do not publish performance figures without client-verified evidence and permission.