Odoo CMS - a big picture

Price List in Odoo 9 & 10

Simplification of Pricelist

Hieu Le

Basically, Price List is a list of the current prices of items on sale. In Odoo, there are 2 types of Price List: Sales Price List which is used in Sales Order, and Purchase Price List which is used in Purchase Order. You can find them at menu Sales > Configuration > Pricelists, or menu Purchase > Configuration > Pricelists.


In previous Odoo versions, for instance Odoo 8, both Price List used the same Python model ‘product.pricelist’. They had Price List Types (Sale Price List and Purchase Price List) to differentiate. 


And there were Price List versions to manage different Price List in different periods with Start Date and End Date.

Read more: 
Odoo 8 Pricelist
Sales - 7.2 - Ensure Margins on Retailer Prices
Purchase - 6.1 - Register Specific Supplier Prices



Since Odoo 9, Odoo has simplified its Price Lists. No more Pricelist Versions, just single version per Price List. The duration is defined on Price List Items. And the applicable products can be Global (all products), Product Category, Product, or Product Variant.

One important thing is that the Purchase Price List was technically removed. Therefore there is no Price List Type. Menu Sales > Configuration > Pricelists are for Sales Price only. Purchase Price List is now Vendor Price Lists located at menu Purchases > Purchase > Vendor Pricelists. 


Compared to Odoo 8, it does not use the Python model ‘product.pricelist’, instead, it uses the Vendors list (Python model ‘product.supplierinfo’) on Product form > tab Inventory (before it was the Suppliers list on Product form > tab Procurements). I can either create them one by one from the Product form (read more How to set several suppliers on a product?), 


or batch import using the Import / Export feature in Odoo (read more How to import supplier pricelists?). To do the import, I need to activate that feature in the Purchases Settings.


As the result of this new Vendor Price List, field Purchase Pricelist on Vendor form was also removed.


In Sales Settings, there are 3 configuration modes for Sales Price Lists:

  • A single sale price per product: all price manage from product Sale Price (product form > tab General Information).

  • Different prices per customer segment: you can assign price on buying of minimum quantity (product form > tab Sales).

  • Advanced pricing based on formula: you have all the rights and flexibility on price lists.



This is a price list item in the advanced mode.

I can compute price using Fix Price, Percentage (discount), Formula. The base price can be Public Price (Sale Price on product form), or Cost Price (field Cost on product form), or based on Other Price List. By filling all parameters, I will have my expected sale price on the Sales Orders. Each Customer has his default Sale Price List (Customer form > tab Sales & Purchases) that will be populated on Sales Order by default, but I can change it later to any Price List I want on Sales Order.

I can specify a rounding method. The rounding calculation is carried out to the nearest number. For example if I set 0.05 in this example, a price of 45,66 will be rounded to 45,65, and 14,567 rounded to 100 will give a price of 14,600. 

Minimum and Maximum margins enable you to guarantee a given margin over the base price.
If Min Margin is set, then Price will be the maximum value between New Price and (Original Price + Min Margin)
If Max Margin is set, then Price will be the minimum value between New Price and (Original Price + Max Margin)
If you put 0, no effect is taken into account.


Ex 1: Odoo 8 Sales Pricelist. 
I use the ‘Public Pricelist’ to make an example.

  • Step 1: add and define a new rule for the pricelist version

If a customer buys at least 2 Ipad Retina Display, then he receives a discount of 20% of the original price. I define that rule as below: 

  • Step 2: create a Sales Order, add an Order Line for product 

The original price is 750 USD. If I set 1 for the quantity which is less than the Min. Quantity 2, the unit price is automatically populated as 750.

If I set 2 for the quantity which is equal to the Min. Quantity 2, the unit price is 750 - (750 x 20%) = 600 USD.


Ex 2: Odoo 10 Sale Pricelist (redo Ex 1 using Odoo 10)

  • Step 1: there is no Pricelist version in Odoo 10, just add and define a new rule for the product iPad Retina Display on the ‘Public Pricelist.

If a customer buys iPad Retina Display, then he receives a discount of 20% of the original price. I define that rule as below: 

This product has several ‘Product Variants’ with different price. The system will get the price from the related variant to do the calculation.

  • Step 2: create a Sales Order, add an Order Line for 1 product iPad Retina Display (32 GB, Black) with its original price of 800,4 USD. As a result, the Unit Price is populated as 800,4 - (800,4 x 20%) = 640,32 USD.


Ex 3: Odoo 8 Purchase Pricelist

  • Step 1: define a new rule on the default Purchase Pricelist version. If I buy at least 2 iMac from a supplier, then I receive a discount of 10% of the original Cost Price which is 1299 EUR.

  • ​Step 2: create a Purchase Order to buy some iMacs

With the quantity 1, the unit price is still 1299.

But I set 2 for the quantity, the unit price is calculated as 1299 - (1299 x 10%) = 1169.1 EUR as defined in the Purchase Pricelist.


How about the use of Supplier Info on Product form? As you can see the hint says ‘The prices below will only be taken into account when your pricelist is set as based on supplier prices’

I think it is a bit complicated because we have 2 places to adjust the Purchase price. And I also do not care about complex formulas from my suppliers, I just need to know the final price to make a decision on buying their products. That is why the Purchase Pricelist is removed in Odoo 10 where the Supplier Info on Product form is also the Vendor Pricelist.


Ex 4: Odoo 10 Vendor Pricelist (redo Ex3 using Odoo 10)

  • Step 1: define Product cost price on Vendor pricelist

If I purchase product P1 from ASUSTek, the default price is 10 USD.
If I purchase at least 10 products P1 from ASUSTek, the price reduces to 8 USD.


I also can define the Vendor pricelist on Product form view:

  • Step 2: create a Purchase Order to buy some products P1 from ASUSTek

If I buy 5 products, the quantity is between 0 and 10, then the unit price is 10.


If I buy 11 products, the quantity is greater than 10, then the unit price is 8.

In conclusion, that simplification of Price List makes it easier to use the application. In Sales module, there is no change of the calculation for Sale Price List. But in Purchase module, the steps to setup Vendor Price List is really simple and more logical. With the same product, we can have several vendors, and each Vendor has his own price. I think all of that can be handled on the Vendors list on product form, we do not really need a Purchase Price list like in Odoo 8.