2
2
Pricelists, discounts, and formulas
3
3
===================================
4
4
5
- Odoo *Sales * has a useful pricelist feature that can be tailored to fit any unique pricing strategy.
6
-
7
- A *pricelist * is a list of prices (or price rules) that Odoo uses to determine the appropriate price
8
- for a customer. These pricelists can be set with specific criteria (such as time periods, minimum
9
- quantity sold, and more) in order to apply certain prices or discounts.
5
+ A *pricelist * is a method of dynamic pricing that applies a list of prices (or price rules) to
6
+ adjust sales prices. This adjustment can apply to specific customers, customer groups, sales orders,
7
+ time periods, etc., and is useful for creating pricing strategies and optimizing sales margins.
10
8
9
+ Odoo *Sales * has a useful pricelist feature that can be tailored to fit any unique pricing strategy.
11
10
Pricelists suggest certain prices, but they can always be overridden on the sales order.
12
11
13
- Pricing strategy options
12
+ Pricelists configuration
14
13
========================
15
14
16
- To choose a pricing strategy, first navigate to :menuselection: `Sales app --> Configuration -->
17
- Settings `. In the :guilabel: `Pricing ` section, click the checkbox next to the :guilabel: `Pricelists `
18
- feature.
19
-
20
- Doing so reveals two additional options beneath it: :guilabel: `Multiple prices per product ` and
21
- :guilabel: `Advanced price rules (discounts, formulas) `. A link labeled :guilabel: `Pricelists ` also
22
- appears, which leads to a separate pricelists page, wherein pricelists can be created and/or
23
- modified.
24
-
25
- - :guilabel: `Multiple prices per product `: provides the option to set several different prices per
26
- product.
27
- - :guilabel: `Advanced price rules (discounts, formulas) `: provides the option to create detailed
28
- price rules and apply discounts, margins, and roundings.
15
+ To enable pricelists in the Odoo **Sales ** app, first navigate to :menuselection: `Sales app -->
16
+ Configuration --> Settings `. In the :guilabel: `Pricing ` section, tick the checkbox next to the
17
+ :guilabel: `Pricelists ` feature, and click :guilabel: `Save ` to save all changes.
29
18
30
19
.. image :: pricing/pricelist-feature-setting.png
31
20
:align: center
32
21
:alt: How the pricelist feature setting looks in Odoo Sales.
33
22
34
- After clicking the checkbox beside the :guilabel: `Pricelists ` feature, select one of those two
35
- options, then click :guilabel: `Save ` to save all changes.
36
-
37
- Pricelists
38
- ==========
39
-
40
23
After activating and saving the :guilabel: `Pricelists ` feature, the :guilabel: `Settings ` page
41
- reloads and, from here, either select the :guilabel: `Pricelists ` link (beneath the
24
+ reloads. From here, either select the :guilabel: `Pricelists ` link (beneath the
42
25
:guilabel: `Pricelists ` feature on the :guilabel: `Settings ` page), or navigate to
43
26
:menuselection: `Sales app --> Products --> Pricelists `.
44
27
@@ -50,87 +33,104 @@ modified at any time.
50
33
:alt: How the pricelists page looks in Odoo Sales.
51
34
52
35
.. important ::
53
- The order of the pricelists on the :guilabel: `Pricelists ` page has an impact on how they are
54
- applied. If several pricelists share the same criteria, **only ** the first listed pricelist is
55
- applied.
56
-
57
- For example, for two pricelists with different rules, but same criteria (e.g., same website, same
58
- country), only the *first * pricelist in the list is applied.
36
+ If there is no specific pricelist configured on a sales quotation, the :guilabel: `Default `
37
+ pricelist will be applied.
59
38
60
39
.. note ::
61
- The :guilabel: `Public Pricelist ` is the default pricelist used with Odoo *Sales * and * eCommerce *.
62
- This pricelist is applied by default, if there are no matching criteria .
40
+ The :guilabel: `Selectable ` column is only applicable to Odoo ** eCommerce **. This option allows
41
+ website visitors to choose a pricelist when shopping in your ** eCommerce ** website .
63
42
64
43
.. note ::
65
- In Odoo 17 (and above), it is no longer required to have a pricelist entered in the
66
- :guilabel: `Pricelist ` field on a quotation form in order to confirm it (i.e. turn it into a sales
67
- order).
44
+ In Odoo 17 (and above), you are *not required * to enter a pricelist in the :guilabel: `Pricelist `
45
+ field on a sales quotation form in order to confirm it (i.e. turn it into a sales order).
46
+
47
+ The chatter section is available in Odoo 17 and above on pricelist forms, which allows you to add
48
+ notes and communications on each pricelist page.
68
49
69
- It should also be noted that, in Odoo 17 ( and above), a chatter section can be found on pricelist
70
- forms, which enhances the ability to communicate about them.
50
+ Editing and creating pricelists
51
+ -------------------------------
71
52
72
- From the :guilabel: `Pricelists ` page, either select the desired pricelist to edit, or click
53
+ From the :guilabel: `Pricelists ` page, either select the pricelist you would like to edit, or click
73
54
:guilabel: `New ` to create a new pricelist, which reveals a blank pricelist form that can be
74
55
configured in a number of different ways.
75
56
76
- .. image :: pricing/pricelist-detail -form.png
57
+ .. image :: pricing/18-sales-new-pricelist -form.png
77
58
:align: center
78
59
:alt: How the pricelist detail form looks in Odoo Sales.
79
60
80
- When creating a new pricelist, start by adding a name for the pricelist at the top of the form, in
81
- the blank field . Next, select which :guilabel: `Currency ` should be used.
61
+ When creating a new pricelist, start by adding a name for the pricelist at the blank field at top of
62
+ the form . Next, select which :guilabel: `Currency ` should be used.
82
63
83
- Then, if working in a multi-company environment, select which company this pricelist should apply to
64
+ If working in a multi-company environment, select which company this pricelist should apply to
84
65
in the :guilabel: `Company ` field. If this field is left blank, the pricelist is automatically
85
66
applied to all companies in the database.
86
67
68
+ If working in a multinational company, select the countries where this pricelist will apply under
69
+ the :guilabel: `Country Groups ` column.
70
+
87
71
Price Rules tab
88
72
---------------
89
73
90
- The :guilabel: `Price Rules ` tab functionality on a pricelist form varies depending on the
91
- :guilabel: ` Pricelists ` setting chosen: either :guilabel: ` Multiple prices per product ` or
92
- :guilabel: `Advanced price rules (discounts, formulas) ` .
74
+ In the :guilabel: `Price Rules ` tab, each line creates a new record that will implement customized
75
+ pricing to the sales order where the pricelist is applied. To create a new price rule, click on
76
+ :guilabel: `Add a line `, which opens a new pricelist rules form .
93
77
94
- However, the :guilabel: ` Time-based rules` tab and :guilabel: `Configuration ` tab are always the same,
95
- regardless of the chosen :guilabel: `Pricelists ` setting .
78
+ Then, select whether to apply this set of rules to a :guilabel: `Product ` or
79
+ :guilabel: `Category ` .
96
80
97
- Multiple prices per product
98
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
81
+ From here, there are several configuration options:
99
82
100
- With the :guilabel: `Multiple prices per product ` setting activated, the :guilabel: `Price Rules ` tab
101
- on pricelist forms provides the option to add specific products, with a specific price, to a
102
- pricelist.
83
+ - :guilabel: `Product `: Select one or more products to which this pricelist will apply.
84
+ - :guilabel: `Category `: Select one or more product categories to which this pricelist will apply.
85
+ - :guilabel: `Price Type `: Select whether the specialized pricing will fall under
86
+ :guilabel: `Discount `, :guilabel: `Formula `, or :guilabel: `Fixed Price `. Depending on the price
87
+ type, there will be additional configurations on how to apply the pricelist.
88
+
89
+ - :guilabel: `Discount `: Enter the percentage to be discounted. A mark-up can be configured by
90
+ using a negative value in this field.
91
+
92
+ - :guilabel: `Formula `: Calculate the pricelist rules based the following configuration:
93
+
94
+ - :guilabel: `Discount `: Percentage discount to be applied.
95
+ - :guilabel: `Round off to `: Numerical value to act as round-off multiple, to be applied after
96
+ discount. The rounding method sets the price so that it is a multiple of the value in this
97
+ field.
103
98
104
- To add a specific product and price to a pricelist form, click the :guilabel: `Price Rules ` tab, then
105
- click :guilabel: `Add a line ` in the :guilabel: `Products ` column. Then, select the desired product
106
- for which a specific price should be applied.
99
+ .. note ::
100
+ Rounding is applied *after * the discount and *before * the extra fee.
107
101
108
- Next, if necessary, select a product variant under the :guilabel: `Variants ` column (e.g. a specific
109
- product size, color, etc.). If no variants are selected, then this price will apply to all variants
110
- of the product.
102
+ - :guilabel: `Extra Fee `: Fixed amount to be added or subtracted once :guilabel: `Discount ` and
103
+ :guilabel: `Round off to ` have been applied.
111
104
112
- If a minimum amount of the product must be purchased in order to apply the specific price, enter the
113
- amount under the :guilabel: ` Min. Quantity ` column .
105
+ - :guilabel: ` Fixed Price `: Enter fixed price for this pricelist. When applied, all product lines
106
+ in the quotation form will be updated to this price .
114
107
115
- To configure the price of the product for this specific pricelist, enter the desired amount under
116
- the :guilabel: `Price ` column. Then, there is the option to add a :guilabel: `Start Date ` and
117
- :guilabel: `End Date ` to the configured product price, if desired.
108
+ - :guilabel: `Min Qty `: Specify the minimum quantity of selected products for this pricelist to
109
+ apply.
110
+ - :guilabel: `Validity Period `: Specify the start and end date during which this pricelist can be
111
+ applied to quotations.
118
112
119
- To add another product line, click :guilabel: `Add a line ` again, and repeat the process. There is no
120
- limit to how many products can be added in the :guilabel: `Price Rules ` tab of a pricelist form.
113
+ .. example ::
114
+ To formulate a 100% markup (or 2 times the cost of the product), with a $5 minimum margin, set
115
+ the :guilabel: `Based on ` field to :guilabel: `Cost `, the :guilabel: `Discount ` to `-100 `, and the
116
+ :guilabel: `Margins ` to `5 `. This is often seen in retail situations.
121
117
122
- For more information, check out the following section: :ref: `Multiple prices per product
123
- <sales/multiple-prices-per-product>`.
118
+ .. image :: pricing/formula-markup-cost-example.png
119
+ :align: center
120
+ :alt: How it looks to formulate a markup cost with 5 dollar minimum margin in Odoo Sales.
124
121
125
- Advanced price rules
126
- ~~~~~~~~~~~~~~~~~~~~
122
+ .. example ::
123
+ To apply 20% discounts, with prices rounded up to 9.99, set the :guilabel: `Based on ` field to
124
+ :guilabel: `Sales Price `, the :guilabel: `Discount ` field to `20 `, the :guilabel: `Extra Fee ` field
125
+ to `-0.01 `, and the :guilabel: `Rounding Method ` field to `10 `.
127
126
128
- With the :guilabel: ` Advanced price rules (discounts, formulas) ` setting activated, the
129
- :guilabel: ` Price Rules ` tab on pricelist forms provides the option to configure detailed price rules
130
- based on formulas .
127
+ .. image :: pricing/formula-discount-example.png
128
+ :align: center
129
+ :alt: Example of a 20% discount with prices rounded to 9.99 in Odoo Sales .
131
130
132
- Check out the :ref: `Advanced price rules (discounts, formulas) <sales/advanced-price-rules >` section
133
- for detailed steps on how to add advanced price rules to a pricelist.
131
+ .. tip ::
132
+ To have prices that end in 9.99, set the :guilabel: `Rounding Method ` to `10 ` and the
133
+ :guilabel: `Extra Fee ` to `-0.01 `.
134
134
135
135
Recurring Prices tab
136
136
--------------------
@@ -249,84 +249,6 @@ the drop-down menu in the :guilabel:`Pricelist` field.
249
249
from the *Pricelist * field, and the quotation can still be confirmed, and subsequently, turned
250
250
into a sales order.
251
251
252
- .. _sales/multiple-prices-per-product :
253
-
254
- Multiple prices per product
255
- ===========================
256
-
257
- To apply several prices per individual product, select the :guilabel: `Multiple prices per product `
258
- option, after enabling the :guilabel: `Pricelists ` feature on the *Sales * app setting page
259
- (:menuselection: `Sales app --> Configuration --> Settings `), and click :guilabel: `Save `.
260
-
261
- Next, apply pricelists to specific products using the product form. Navigate to the
262
- :menuselection: `Sales app --> Products --> Products ` and select the product for which multiple
263
- prices should be applied. Selecting a product from the :guilabel: `Products ` page reveals that
264
- specific product's product form on a separate page.
265
-
266
- On the product form, click the :guilabel: `Extra Prices ` smart button, located at the top of the
267
- form.
268
-
269
- .. image :: pricing/extra-prices-smartbutton.png
270
- :align: center
271
- :alt: How the extra prices smart button appears in Odoo Sales.
272
-
273
- Doing so reveals a separate page displaying the :guilabel: `Price Rules ` that are specific to that
274
- particular product. Here, price rules can be edited or created at any time.
275
-
276
- .. image :: pricing/price-rules-product-page.png
277
- :align: center
278
- :alt: How the extra price rules per product page appears in Odoo Sales.
279
-
280
- To create a new price rule for a product from this specific :guilabel: `Price Rules ` page, click
281
- :guilabel: `New ` to add a new, customizable row that has the desired product already populated in the
282
- :guilabel: `Applied On ` column.
283
-
284
- Next, select which :guilabel: `Pricelist ` this specific product price rule should apply to, via the
285
- drop-down menu in the :guilabel: `Pricelist ` column.
286
-
287
- .. note ::
288
- The :guilabel: `Public Pricelist ` is the default pricelist used with Odoo *Sales * and *eCommerce *.
289
-
290
- .. tip ::
291
- To create a new pricelist from this page, type in the desired name of the new pricelist in the
292
- :guilabel: `Pricelist ` column, then select :guilabel: `Create ` from the drop-down menu. All
293
- pricelists can be modified at any time, by navigating to :menuselection: `Sales app --> Products
294
- --> Pricelists `. Pricelists can also be created on that specific :guilabel: `Pricelists ` page, as
295
- well.
296
-
297
- After the desired pricelist is added to the row, designate a :guilabel: `Min. Quantity ` for the price
298
- rule.
299
-
300
- .. example ::
301
- If the :guilabel: `Min. Quantity ` column is set to `2 `, the new price in the :guilabel: `Price `
302
- column will be applied to orders of 2 or more products. So, in theory, if a single product costs
303
- $100, customers can be encouraged to buy more, if the :guilabel: `Price ` is set at $85 per product
304
- for a :guilabel: `Min. Quantity ` of `2 ` products.
305
-
306
- Next, enter the desired amount in the :guilabel: `Price ` column. Then, if needed, enter a
307
- :guilabel: `Start Date ` and :guilabel: `End Date ` for the product's price rule.
308
-
309
- And lastly, if working in a multi-company environment, select which company this price rule should
310
- be applied to in the :guilabel: `Company ` field. Leaving this field blank means the price rule
311
- applies for all companies in the database.
312
-
313
- Click away from the row to activate Odoo's auto-save capability, meaning that newly-created price
314
- rule is now ready to be used.
315
-
316
- Proceed to add as many unique price rules per product as desired. There is no limit to how many
317
- price rules can be added per product.
318
-
319
- With the price rule(s) in place for a specific product, customers who fall into those corresponding
320
- pricelists automatically see those new prices applied. The number of price rules applied to a
321
- particular product are also displayed in the :guilabel: `Extra Prices ` smart button, located on every
322
- product form.
323
-
324
- .. note ::
325
- When a price rule/pricelist is added to a product via the :guilabel: `Extra Prices ` smart button,
326
- it is also reflected on the pricelist itself. Similarly, when a price rule for a specific product
327
- is added to a pricelist, it is also reflected on the product form via the :guilabel: `Extra
328
- Prices ` smart button.
329
-
330
252
.. _sales/discounts :
331
253
332
254
Discounts
@@ -408,102 +330,6 @@ following discount options: :guilabel:`On All Order Lines`, :guilabel:`Global Di
408
330
discount is added, make sure to change the value on the :guilabel: `Discount ` line, or remove the
409
331
line and add the discount again.
410
332
411
- .. _sales/advanced-price-rules :
412
-
413
- Advanced price rules
414
- ====================
415
-
416
- The :guilabel: `Advanced price rules (discounts, formulas) ` pricelist feature provides the option to
417
- set price change rules based on discounts and formulas. These changes can be relative to the product
418
- list/catalog price, the product's cost, or another pricelist.
419
-
420
- To use advanced pricing rules, with discounts and formulas, select the :guilabel: `Advanced price
421
- rules (discounts, formulas) ` option, after enabling the :guilabel: `Pricelists ` feature on the
422
- *Sales * app setting page (:menuselection: `Sales app --> Configuration --> Settings `), and click
423
- :guilabel: `Save `.
424
-
425
- After activating and saving that :guilabel: `Pricelists ` feature, the :guilabel: `Settings ` page
426
- reloads and, from here, either select the :guilabel: `Pricelists ` link (beneath the
427
- :guilabel: `Pricelists ` feature on the :guilabel: `Settings ` page), or navigate to
428
- :menuselection: `Sales app --> Products --> Pricelists `.
429
-
430
- Either option reveals the :guilabel: `Pricelists ` page, in which pricelists can be created and/or
431
- modified at any time.
432
-
433
- From the :guilabel: `Pricelists ` page, select a desired pricelist to modify, or create a new
434
- pricelist by clicking the :guilabel: `New ` button.
435
-
436
- On the pricelist form, under the :guilabel: `Price Rules ` tab, click :guilabel: `Add a line ` to add an
437
- advanced price rule. Doing so reveals a :guilabel: `Create Pricelist Rules ` pop-up form, in which the
438
- advanced rule is configured.
439
-
440
- .. image :: pricing/create-pricelist-rules-popup.png
441
- :align: center
442
- :alt: How the Create Pricelist Rules pop-up form looks in Odoo Sales.
443
-
444
- Price computation
445
- -----------------
446
-
447
- On this form, first choose one of the three :guilabel: `Computation ` options:
448
-
449
- - :guilabel: `Fixed Price `: the price computation is based on a fixed price.
450
- - :guilabel: `Discount `: the price computation is based on a discount.
451
- - :guilabel: `Formula `: the price computation is based on a formula.
452
-
453
- .. note ::
454
- Each :guilabel: `Computation ` option reveals its own computation-specific fields on the form.
455
-
456
- If :guilabel: `Fixed Price ` is selected, enter the desired price in the :guilabel: `Fixed Price ` field
457
- below. If :guilabel: `Discount ` is selected, enter the desired discount percentage in the
458
- :guilabel: `Discount ` field that appears.
459
-
460
- If :guilabel: `Formula ` is selected, a number of configurable options appear.
461
-
462
- .. image :: pricing/formula-computation-options.png
463
- :align: center
464
- :alt: The various formula computation options present in Odoo Sales.
465
-
466
- To configure the :guilabel: `Formula ` computation option, start by selecting an option from the
467
- :guilabel: `Based on ` field: :guilabel: `Sales Price `, :guilabel: `Cost `, or :guilabel: `Other
468
- Pricelist `. This determines what the advanced price rule formula will be based on.
469
-
470
- Next, in the :guilabel: `Discount ` field, determine how much of a discount should be applied. It
471
- should be noted that a mark-up can be applied by setting a negative discount in this field.
472
-
473
- .. example ::
474
- To formulate a 100% markup (or 2 times the cost of the product), with a $5 minimum margin, set
475
- the :guilabel: `Based on ` field to :guilabel: `Cost `, the :guilabel: `Discount ` to `-100 `, and the
476
- :guilabel: `Margins ` to `5 `. This is often seen in retail situations.
477
-
478
- .. image :: pricing/formula-markup-cost-example.png
479
- :align: center
480
- :alt: How it looks to formulate a markup cost with 5 dollar minimum margin in Odoo Sales.
481
-
482
- Then, in the :guilabel: `Extra Fee ` field, specify a fixed amount to add (or subtract) to the amount
483
- calculated with the discount. After that, enter a desired figure in the :guilabel: `Rounding Method `
484
- field. The rounding method sets the price so that it is a multiple of the value in the field.
485
-
486
- .. note ::
487
- Rounding is applied *after * the discount and *before * the surcharge.
488
-
489
- .. tip ::
490
- To have prices that end in 9.99, set the :guilabel: `Rounding Method ` to `10 ` and the
491
- :guilabel: `Extra Fee ` to `-0.01 `.
492
-
493
- Lastly, specify the minimum amount of margin over the base price in the :guilabel: `Margins ` field.
494
-
495
- Once all formula-related configurations are complete, Odoo provides an example of the formula in a
496
- blue block to the right of the configurations.
497
-
498
- .. example ::
499
- To apply 20% discounts, with prices rounded up to 9.99, set the :guilabel: `Based on ` field to
500
- :guilabel: `Sales Price `, the :guilabel: `Discount ` field to `20 `, the :guilabel: `Extra Fee ` field
501
- to `-0.01 `, and the :guilabel: `Rounding Method ` field to `10 `.
502
-
503
- .. image :: pricing/formula-discount-example.png
504
- :align: center
505
- :alt: Example of a 20% discount with prices rounded to 9.99 in Odoo Sales.
506
-
507
333
Conditions
508
334
----------
509
335
0 commit comments