$ 49.00
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 2286 |
| Technical Name |
codeerts_dynamic_approval |
| License | OPL-1 |
| Website | https://www.codeerts.com |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 2286 |
| Technical Name |
codeerts_dynamic_approval |
| License | OPL-1 |
| Website | https://www.codeerts.com |
| Versions | 17.0 18.0 19.0 |
Dynamic Multi-Level Approvals
Put any Odoo document behind a real approval workflow.
No code, no developer, and no decision slipping through.
Block a confirmation, posting or validation until the right people sign off, or hide a brand new record until it is approved.
|
Any
Odoo Model
|
2
Gate Types
|
Multi
Approval Levels
|
0
Lines of Code
|
v17
Compatible
|
The approval problem every growing team knows
Control that lives in your head, not your system
|
Decisions commit before anyone signs off
Orders are confirmed, invoices posted and vendors created the moment a button is clicked. By the time a manager notices, the action has already happened. |
Approvals live in email and chat
There is no record of who approved what. You chase people manually, decisions get lost, and an auditor has nothing solid to look at. |
Every new rule is another customization
Sign-off is hardcoded one model at a time, so each change becomes a developer ticket, a deployment and a delay. |
What this module does
Dynamic Multi-Level Approvals adds one configurable approval engine that works on any Odoo model. You choose the document and the exact moment that needs sign-off, add as many approval steps as you want, and the module holds the action until every step approves, then completes it for you. Nothing is hardcoded and nothing requires a developer.
Approvers act from a colorful personal dashboard, a bar on the document itself, an email, or a public link, and the engine even reassigns work automatically when someone is on time off. Every decision is recorded with a full audit trail.
|
🛡️
Gate any action
Block a confirmation, posting or validation until it is approved. On approval the engine re-runs the real action, so the delivery, journal entry or any side effect is created exactly as normal. |
📦
Hide until approved
An activation gate keeps a brand new record archived and invisible until it is signed off, then activates it. It works even on models that have no native archive field. |
✅
One place to approve
A My Approvals dashboard and an on-document bar let approvers approve or refuse in one click, with overdue alerts, amounts and a full history always in view. |
A guided walkthrough
See it in action, from setup to daily sign-off.
Every approver opens My Approvals to see exactly what is waiting, what is overdue, and what they approved this month, with one-click Approve and Refuse on each item.
A pipeline bar sits on top of the gated record showing each step and its status, with Approve and Refuse buttons for the person whose turn it is.
Once the last step approves, the original action is re-run, so here the Sales Order is confirmed and its delivery is created automatically. Nothing is faked or skipped.
A refused document shows the requester a Reset to Draft button, so they can fix it and send it through again, with the refusal kept on record in the chatter.
Each Approval Flow names the model, the gate type and the trigger, so you can see every rule across the whole database at a glance.
Pick the model, the trigger field and value, an optional amount field, and add ordered steps with their approvers. No XML and no developer needed.
An activation flow gates record creation instead of a transition, perfect for new vendors, products or any master data that needs a check before it goes live.
The Requests list shows every approval, who raised it, the current step and whether it is pending, approved or refused.
Open any request to see its approvers, decisions, dates, the source document, and the complete message history, everything an auditor needs.
Turn on time-off delegation and the engine reassigns a pending approval to a delegate or a step backup while the approver is on validated Time Off.
Everything inside
|
🌐 Works on any model
Gate sale orders, invoices, purchases, contacts, products or any custom model from one engine. |
🛡 Action gate with real re-run
Blocks a transition and re-runs the full action on approval, so the side effects survive, not just the field value. |
|
📦 Activation gate
Keeps a new record archived and hidden until it is approved, then activates it, even with no native archive field. |
🔗 Multi-step routing
Add as many sequential steps as you need; each must pass before the next one begins. |
|
👥 Three ways to pick approvers
Specific users, the requester's department manager, or by amount tier. |
⚖ Approve-all or approve-any
Require every approver on a step, or accept the decision of just one of them. |
|
💰 Amount-based routing
A step applies only when the document amount is in its range, so small documents skip senior approvers. |
🌴 Time-off aware delegation
Reassigns pending approvals to a delegate or step backup when an approver is on validated leave. |
|
🔔 Reminders that chase for you
An email, a To-Do activity, and a daily reminder while a request stays pending. |
🔗 Public approve or reject link
Approvers can decide from a secure link without logging in to the backend. |
|
↩ Reset to draft after refusal
The requester can fix and resubmit a refused document in one click, with the refusal kept on record. |
📜 Full audit trail
Every request carries chatter, activities and a complete decision history with dates and comments. |
Route approvals exactly how you work
|
Specific Users
Name the exact people who approve a step. |
Department Manager
Route to the requester's manager automatically, with HR installed. |
Amount Tier
Send only documents above a threshold to a senior step. |
All or Any
Require everyone on a step, or just one approver. |
How it works
1 |
Create an Approval Flow
Pick the model and the moment that needs sign-off, a status change for an action gate or a new record for an activation gate. |
2 |
Add your steps
Choose the approvers and whether all or any of them must approve, for each step, and add amount tiers if you need them. |
3 |
Users work as normal
When someone hits the gated action, the module holds it and opens an approval request automatically. No extra steps to remember. |
4 |
Approvers decide
From the dashboard, the document bar, an email or a public link, in one click, with reminders if they forget. |
5 |
The engine finishes the job
It re-runs the action or activates the record, notifies the requester, and records every decision with a full audit trail. |
Technical information
|
Version
17.0
|
License
OPL-1
|
Editions
Community & Enterprise
|
Dependencies
Discuss (mail)
|
Technical name: codeerts_dynamic_approval · Optional: the Time Off app (hr_holidays) enables department-manager routing and leave-based delegation
Frequently asked questions
Create an Approval Flow, choose the model and the trigger that needs sign-off, then add as many ordered steps as you want with the approvers for each. Any user action that reaches the trigger is held until every step approves, with no custom code required.
Yes. An action gate blocks the transition, for example a status reaching Confirmed or an invoice about to post, and opens an approval request. When the last step approves, the engine re-runs the original action so its full side effects, like the delivery a confirmation creates, are reproduced exactly.
Use an activation gate. A newly created record is archived and hidden everywhere until the approval is granted, then it is activated automatically. It works even on models that do not have a native archive field, because the module provisions one safely.
Yes. Mark a step as an amount tier and give it a minimum and optional maximum. The step only applies when the document amount falls in that range, so small documents skip the senior approvers and large ones pick them up automatically.
With time-off delegation enabled, the module checks validated Time Off and reassigns the pending step to the approver's personal delegate, or the step's backup approver, and records who it was originally assigned to. Approvals never stall because someone is away.
Use the version selector at the top of this page to pick your Odoo release. Each branch is published as its own listing for that exact version, and the module works on both Community and Enterprise.
The team behind this module
About CODEerts
Full-Service Odoo ERP Agency · Solutions That Scale
Every module in our store is built from real client work, tested in production and maintained long-term by a team of Odoo certified consultants. When you need more than an app, we deliver the full solution.
|
🏗️ Implementation
Full Odoo roll-outs from requirements to go-live, across any industry and company size. |
🧩 Custom Development
Bespoke modules, OWL components and business logic built precisely to your workflow. |
🔄 Migrations
Zero-data-loss upgrades from older Odoo versions with full custom module porting. |
|
🔌 Integrations
Payment gateways, shipping carriers, biometric devices, eCommerce and third-party APIs. |
🔍 Odoo Audits
Performance, security and code-quality reviews that surface risks before they become problems. |
🧑💻 Support & Training
Ongoing helpdesk, user training and monthly retainers so your team stays productive. |
|
Odoo
Certified
|
6+
Years
|
50+
Projects
|
10+
Industries
|
40+
Published Apps
|
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module