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.

Capabilities

Price control built into every step

Every capability below is implemented in the module.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

07

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.

08

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.

09

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.

Workflow

How it works

1

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.

2

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.

3

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.

4

Review the trail

Managers review every authorized change, override, and blocked attempt from the audit log, or check the permission overview at any time.

Questions

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.

Get the app

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