Purchase Order Approval Workflow for Odoo 19 – Multi-Level RFQ and PO Approval by Amount or Discount
Stop big purchase orders and big discounts from being confirmed without a manager's OK. Levels by amount or discount, approvers in sequence, reasons for rejection, tasks and a full history.
A purchase order for a large amount, or with a large discount, should not become an order without approval.
Purchase Order Approval Workflow adds that approval to Odoo: you define approval levels, the buyer presses Request approval, the approvers are asked one after the other, and the purchase order cannot be confirmed until every level has approved it.
Levels
By order total, by the highest line discount, or both
Several levels in sequence: orders from 5,000 need the purchase manager, from 20,000 the purchase manager and then the director
Any one of the approvers of a level can approve it
The flow
A banner tells the buyer what to do and Confirm is refused until approved
Each approver gets a task; the To Approve list shows the purchase orders waiting for them, even those of colleagues
A rejection needs a reason, which the buyer sees
Every step is written in the chatter; the Approval tab shows who decided what
Safe
If the total or a discount changes after approval, the purchase order must be approved again
The buyer and the person who asked cannot approve their own purchase order (a setting allows it)
It works together with Odoo's own two-step validation: ours is asked first
Cancelling or resetting clears the steps
Tested
29 automated tests: levels by amount, discount and currency, sequential approval, who may approve, rejection, changes after approval, auto-confirm, cancel, record rules, settings.
Documented
Illustrated documentation in English and Arabic and an Arabic translation of the module.
What's included
taqnix_purchase_approval.zip: the Odoo 19 module (with Arabic translation)
Illustrated documentation in English and Arabic (HTML and PDF)
Automated tests, licence file (OPL-1) and changelog
Requirements
Odoo 19.0 with Purchase.
What's in the download
The files in the archive you can download after you buy.
Sequential levels, tasks for approvers, To Approve list
Confirm is refused until every level approved; changes after approval ask again
Rejection reasons, chatter history and an Approval tab
Settings: switch off, confirm when approved, self-approval
Arabic translation, automated tests
Frequently asked questions
Does it replace Odoo's built-in two-step validation?+
No, they work together. Our approval is asked first when someone presses Confirm Order; Odoo's own validation by amount still applies afterwards if you use it.
Can I have more than one approval level?+
Yes. Levels that apply are asked in sequence: for example the purchase manager first, then the director.
Can I trigger approval by discount?+
Yes. A level can apply from a total, from a discount on any line, or both.
What if the purchase order changes after approval?+
If the total or a discount is different, the purchase order must be approved again before it can be confirmed.
Can a buyer approve their own purchase order?+
Not by default. A setting allows it; if a level has nobody else to approve, the request is refused with a clear message.
How do approvers know there is something to approve?+
They get a task, and Purchase → Orders → To Approve lists the purchase orders waiting for them, even those of colleagues.
Does it work with Arabic?+
Yes. The levels, banners, buttons, notes and settings are translated and the interface works right to left. The documentation is in Arabic too.
Is there an approval for sales quotations?+
Yes, as a separate module: Sales Order Approval Workflow.
More from TAQNIX
ModuleNew
Product Warranty & Claims for Odoo 19 – Automatic Warranties, Expiry and Claims
Warranties created by the delivery, with a start, an end and a status for every customer, and claims that say at once whether the product is in or out of warranty.
Purchase Requests for Odoo 19 – Internal Requests, Approval and RFQs per Vendor
Let everyone ask for what they need: purchase requests with approval, one RFQ per vendor created from the approved lines, and what was ordered and received followed on the request.
Employee Loans & Salary Advances for Odoo 19 – Requests, Approval, Installments, Interest and Accounting
Loans and salary advances to employees in Odoo: request, approval, payment with its entry, a monthly installment schedule with optional interest, collection and a balance per employee.
Financial Reports for Odoo 19 Community – Trial Balance, General Ledger, Profit and Loss, Balance Sheet
The four reports every accountant asks for, in Odoo Community: trial balance, general ledger, profit and loss and balance sheet, for any period, with a comparison. On screen, in PDF and in Excel.
Purchase Requests for Odoo 19 – Internal Requests, Approval and RFQs per Vendor
Let everyone ask for what they need: purchase requests with approval, one RFQ per vendor created from the approved lines, and what was ordered and received followed on the request.
Product Warranty & Claims for Odoo 19 – Automatic Warranties, Expiry and Claims
Warranties created by the delivery, with a start, an end and a status for every customer, and claims that say at once whether the product is in or out of warranty.
Employee Loans & Salary Advances for Odoo 19 – Requests, Approval, Installments, Interest and Accounting
Loans and salary advances to employees in Odoo: request, approval, payment with its entry, a monthly installment schedule with optional interest, collection and a balance per employee.
Financial Reports for Odoo 19 Community – Trial Balance, General Ledger, Profit and Loss, Balance Sheet
The four reports every accountant asks for, in Odoo Community: trial balance, general ledger, profit and loss and balance sheet, for any period, with a comparison. On screen, in PDF and in Excel.