Product Pricelist Discount by Range
This module allows you to define discount ranges in a pricelist based on a reference price (e.g., cost). Instead of applying a single discount percentage to all products, you can configure different discount percentages for specific price intervals. If the reference price is out of the ranges, the pricelist will not be applied and Odoo will show a warning.
auto_awesome What this module does
AI-generated from the code · Odoo 18.0Adds a "By range" discount option to pricelist rules, so you can set different discount percentages for different price intervals instead of one single discount.
When you edit a pricelist rule (a pricelist item) and choose a formula-based price, a new radio choice "Simple" or "By range" appears next to the base price field. With "By range" selected, the normal discount field is hidden and a table of discount ranges is shown instead.
In that table you enter, for each range, a minimum price, a maximum price, a discount percentage and an optional surcharge. The minimum must be lower than the maximum, and ranges belonging to the same rule cannot overlap: Odoo blocks saving and shows an error naming the conflicting range.
When Odoo computes the price of a product for that rule, it looks at the reference price (for example the cost) and finds the range that contains it. It then applies that range's percentage and adds its surcharge. If the reference price falls outside all ranges, Odoo refuses to compute the price and raises an error saying no discount range was found.
The rule description shown on the pricelist rule is also rewritten to explain each range, with a small calculation example. The feature is available on product.pricelist.item and the new range lines are stored in product.pricelist.item.discount_range. Regular users can read the ranges; only users with pricelist management rights can create, change or delete them.
Depends on
Models and fields (2)
- product.pricelist.item · extends an existing modeldiscount_type, price_discount, discount_range_ids
- product.pricelist.item.discount_range · new modelmax, min, surcharge, percentage, pricelist_item_id (Pricelist Item)
Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 2 confirmed, 7 with no information of 9 versions.
Sources · Odoo 15.0
Confirmed on 2026-11-03 in branch 15.0 of OCA/product-attribute.
terminal Installation and usage
OCA documentation · Odoo 18.0Configuration
Source · Odoo 18.0To configure pricelists with the new feature of this module, you need to:
- Create or edit a Sales Pricelist at Sales \> Products \> Pricelists.
- Add or edit a pricelist item and check "Formula" option in "Price Computation" section and set Discount Type to "By range".
- You will see the new option "Discount Ranges".
- Add discount ranges and save Pricelist.
Usage
Source · Odoo 18.0For checking pricelists in action, you can (with sale module installed):
- Go to Sales \> Orders \> Quotations
- Create or edit a quotation.
- Select a correct pricelist (with discount ranges).
- Add a line.
- Select a product with the criteria to match the pricelist.
- See the proper price appears in the line.
No verified information in OCA: Installation.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.