Keep sale prices locked to policy from quote to invoice
Sale Price Change Restriction stops unauthorized price edits at the source: a Price Editor group gates every reduction, a minimum floor protects margin, and every attempt is logged — from the first quotation through the confirmed order to the final invoice.
The problem
Any user with sales-order edit rights can lower a unit price on a quotation, informally win a deal, or grant an unrecorded discount. Odoo has no built-in way to lock price fields by role or by order state, so most companies rely on trust, after-the-fact audits, or a patchwork of custom rules — and margin leaks through every gap.
The solution
Sale Price Change Restriction enforces price policy on the server, in create and write, so it holds whether the change comes from the form, an import, or the API. A Price Editor group, a state-aware lock, a minimum-price floor, and a full audit trail work together to keep quoted and confirmed prices exactly as intended.
Price control built into every step
Every capability below is implemented in the module.
Price Editor authorization
Only users in the Price Editor group can reduce a unit price below the pricelist reference. The check runs in create and write on the server, so it cannot be bypassed by an import, an automation, or a direct API call.
Minimum price floor
Set a floor price per product, or per category as a fallback, below which no unauthorized user can go. Prices above the floor and any price increase pass through untouched.
Floor override, logged separately
A distinct Floor Override group can price below the configured floor when a real exception is needed. Every override is recorded with its own audit entry and an optional reason, separate from ordinary authorized changes.
State-aware lock on confirmation
Once a quotation is confirmed into a sales order, its price and discount fields lock automatically for anyone outside the Price Editor group — closing the loophole that most competing apps leave open after confirmation.
Locked-field reason, right in the list
A visible Price Lock column shows exactly why a field is locked — order confirmed, or authorization required — instead of a plain disabled field with no explanation.
Order-to-invoice price consistency
Invoice lines linked back to a sales order cannot be priced below the sale price unless the user is authorized, closing the gap where competing apps stop enforcing once an order is confirmed.
Pricelist-change gate
A separate permission controls who may change the pricelist on a sales order, independent of line-level price editing — so top-level pricing control and line-item control can be assigned separately.
Full price-change audit trail
Every authorized change, manager override, and blocked attempt is logged with the user, timestamp, old and new price, and a reason. A colour-coded list and a smart button on the order make the history easy to review.
Who has price rights, at a glance
A permission overview list shows every user's price-edit, floor-override, and pricelist-change rights in one place, so admins can audit configuration without opening each user record.
How it works
Set the rules
Turn on enforcement in Sales Settings, assign the Price Editor and Floor Override groups, and set minimum-price floors on products or categories.
Quote as usual
Sales reps build quotations normally; only a real reduction below the pricelist price is checked, so increases and recomputes are never blocked.
Confirm and lock
Confirming the order locks its prices for anyone outside the Price Editor group, and invoice lines stay consistent with the sale price.
Review the trail
Managers review every authorized change, override, and blocked attempt from the audit log, or check the permission overview at any time.
Frequently asked
No sales fog. If your question isn't here, email us and we'll answer it the same way.
Yes. Enforcement runs inside the sale order line's create and write methods on the server, so a reduction below the pricelist price is checked no matter how it arrives — the web form, an import, an automation, or a direct API call.
Buy it on the Odoo App Store
Purchase, download and install directly from the official Odoo Apps Store — you'll always get the latest supported build.
Sale Price Change Restriction
Price policy enforced server-side on create and write, so it holds from the form, an import or the API — a Price Editor group, a minimum floor with separately logged overrides, a state-aware lock, and order-to-invoice consistency.
Buy on Odoo App Store