2
Price management policies
3
=========================
5
Some companies are notorious for their complicated pricelists. Many forms of price variation are
6
used, such as end-of-year refunds, discounts, changes of terms and conditions with time, various
7
prepayments, cascaded rebates, seasonal promotions, and progressive price reductions.
9
.. note:: Rebate, Refund, Reduction
11
In some accounting jurisdictions you have to differentiate between the three following terms:
13
* Rebate: reimbursement to the client, usually at the end of the year, that depends on the
14
quantity of goods purchased over a period.
16
* Refund: reduction on the order line or invoice line if a certain quantity of goods is purchased
17
at one time or is sold in a framework of a promotional activity.
19
* Reduction: a one-off reduction resulting from a quality defect or a variation in a product's
20
conformance to a specification.
22
Intelligent price management is difficult, because it requires you to integrate several conditions
23
from clients and suppliers to create estimates quickly or to invoice automatically. But if you have
24
an efficient price management mechanism you can often keep margins raised and respond quickly to
25
changes in market conditions. A good price management system gives you scope for varying any and all
26
of the relevant factors when you're negotiating a contract.
28
To help you work most effectively, Open ERP's pricelist principles are extremely powerful yet are
29
based on simple and generic rules. You can develop both sales pricelists and purchase pricelists for
30
products capable of accommodating conditions such as the date period, the quantity requested and the
33
.. tip:: Don't confuse the different price specifications
35
Don't confuse the sale price with the base price of the product.
36
In Open ERP's basic configuration the sale price is the list price set on the product form
37
but a customer can be given a different sale price depending on the conditions.
39
It's the same for purchase price and standard cost. Purchase price is your suppliers' selling price,
40
which changes in response to different criteria such as quantities, dates, and supplier. This is
41
automatically set by the accounting system. You'll find that the two prices have been set by default to the
42
same for all products with the demonstration data, which can be a source of confusion.
43
You're free to set the standard cost to something different.
45
Each pricelist is calculated from defined policies, so you'll have as many sales pricelists as
46
active sales policies in the company. For example a company that sells products through three sales
47
channels could create the following price lists:
51
- pricelist for Walbury,
53
- pricelist for TesMart,
59
A single pricelist can exist in several versions, only one of which is permitted to be active at a
60
given time. These versions let you set different prices at different points in time. So the
61
pricelist for walk-in customers could have five different versions, for example: \ ``Autumn``\, \
62
``Summer``\, \ ``Summer Sales``\, \ ``Winter``\, \ ``Spring``\. Direct customers will see prices
63
that change with the seasons.
65
Each pricelist is expressed in a single currency. If your company sells products in several
66
currencies you'll have to create as many pricelists as you have currencies.
68
The prices on a pricelist can depend on another list, which means that you don't have to repeat the
69
definition of all conditions for each product. So a pricelist in USD can be based on a pricelist in
70
EUR. If the currency conversion rates between EUR and USD change, or the EUR prices change, the USD
71
rates can be **automatically** adjusted.
74
single: pricelist; create
79
To define a pricelist use the menu :menuselection:`Products --> Pricelists --> Pricelists` .
81
For each list you should define:
83
* a :guilabel:`Name` for the list,
85
* a :guilabel:`Type` of list: \ ``Sale``\ for customers or \ ``Purchase``\ for suppliers,
87
* the :guilabel:`Currency` in which the prices are expressed.
92
.. tip:: Customer Price
94
If you install the module :mod:`edi` (in ``addons-extra`` at the time of writing)
95
a third type of list appears – the :guilabel:`Customer Price` - which
96
defines the price displayed for the end user.
97
This doesn't have to be the same as your selling price to an intermediary or distributor.
100
single: pricelists; version
105
Once the list is defined you must provide it with at least one version. To do that use the menu
106
:menuselection:`Products --> Pricelists --> Pricelist Versions`. The version contains all of the
107
rules that enable you to calculate a price for a product and a given quantity.
109
So set the :guilabel:`Name` of this associated version. If the list only has a single version you
110
can use the same name for the pricelist and the version. In the :guilabel:`Pricelist` field select
111
the pricelist you created.
113
Then set the :guilabel:`Start date` and :guilabel:`End date` of this version. The fields are both
114
optional: if you don't set any dates the version will be permanently active. Only one version
115
may be active at any one point, so bear this in mind when creating them.
116
Use the :guilabel:`Active` field in the versions to activate or disable a pricelist version.
118
.. note:: Automatically updating the sale pricelist
120
You can make any sale pricelist depend on one of the other pricelists.
121
So you could make your sale pricelist depend on your supplier's purchase pricelist, to
122
which you add a margin.
123
The prices are automatically calculated as a function of the purchase price and need no further
128
Rules for calculating price
129
^^^^^^^^^^^^^^^^^^^^^^^^^^^
131
A pricelist version is made up of a set of rules that apply to the product base prices.
133
.. figure:: images/service_pricelist_line.png
137
*Detail of a rule in a pricelist version*
139
You define the conditions for a rule in the first part of the definition screen labeled :guilabel:`Rules Test
140
Match`. The rule applies to the :guilabel:`Product` or :guilabel:`Product Template` and/or the named :guilabel:`Product
141
Category`. If a rule is applied to a category then it is automatically applied to all of its
142
subcategories too (using the tree structure for product categories).
144
If you set a minimum quantity in :guilabel:`Min. Quantity` the rule will only apply to a quantity the same
145
as or larger than that set. This lets you set reduced rates in steps that depend on the quantities ordered.
147
Several rules can be applied to an order. Open ERP evaluates these rules in sequence to select
148
which to apply to the specified price calculation. If several rules are valid only the first in
149
sequence is used for the calculation. The :guilabel:`Sequence` field determines the order, starting with the
150
lowest number and working up.
152
Once a rule has been selected, the system has to determine how to calculate the price from the rule.
153
This operation is based on the criteria set out in the lower part of the form, labeled :guilabel:`Price
156
The first field you have to complete is labeled :guilabel:`Based on`. Set the mode for
157
partner price calculation, choosing between:
159
* the :guilabel:`List Price` set in the product file,
161
* the :guilabel:`Standard Cost` set in the product file,
163
* an :guilabel:`Other Pricelist` given in the field :guilabel:`If Other Pricelist`,
165
* the price that varies as a function of a supplier defined in the :guilabel:`Partner section of the
168
Several other criteria can be considered and added to the list, as you'll see in the following
171
Next, various operations can be applied to the base price to calculate the sales or purchase price
172
for the partner at the specified quantities. To calculate it you apply the formula shown on the
173
form: ``Price = Base Price x (1 – Field1) + Field2`` .
175
The first field, :guilabel:`Field1`, defines a discount. Set it to 0.20 for a discount of 20% from
176
the base price. If your price is based on standard cost, you can set -0.15 to get a 15% price uplift
177
compared with the standard costs.
179
:guilabel:`Field2` sets a fixed supplement to the price, expressed in the currency of the pricelist.
180
This amount is just added (or subtracted, if negative) to the amount calculated with the
181
:guilabel:`Field1` discount.
183
Then you can specify a rounding method. The rounding calculation is carried out to the nearest
184
number. For example if you set 0.05 in this example, a price of 45.66 will be rounded to 45.65, and
185
14,567 rounded to 100 will give a price of 14,600.
187
.. note:: Swiss special situation
189
In Switzerland, the smallest monetary unit is 5 cents.
190
There aren't any 1 or 2 cent coins.
191
So you set Open ERP's rounding to 0.05 to round everything in a Swiss franc pricelist.
193
The supplement from :guilabel:`Field2` is applied before the rounding calculation, which enables
194
some interesting effects. For example if you want all your prices to end in 9.99, set your rounding
195
to 10 and your supplement to -0.01 in :guilabel:`Field2`.
197
Minimum and Maximum margins enable you to guarantee a given margin over the base price. A margin of
198
10 USD enables you to stop the discount from returning less than that margin. If you put 0 into this
199
field, no effect is taken into account.
201
Once the pricelist is defined you can assign it to a partner. To do this, find a Partner and select
202
its :guilabel:`Properties` tab. You can then change the :guilabel:`Purchase Pricelist` and the
203
:guilabel:`Sale Pricelist` that's loaded by default for the partner.
205
Case of using pricelists
206
------------------------
208
Take the case of an IT systems trading company, for which the following product categories have
225
- Large-screen portables
231
- Professional Computers
233
In addition, the products presented in the table below are defined in the currency of the installed
238
.. csv-table:: Examples of products with their different prices
240
"Product ","List Price","Standard Price","Default supplier price",
241
"Acclo Portable","1,200 ","887 ","893 ",
242
"Toshibishi Portable","1,340 ","920 ","920 ",
243
"Berrel Keyboard","100 ","50 ","50 ",
244
"Office Computer","1,400 ","1,000 ","1,000 ",
248
single: pricelist; default pricelist
253
.. figure:: images/product_pricelist_default.png
257
*Default pricelist after installing Open ERP*
259
When you install the software two pricelists are created by default: one for sales and one for
260
purchases. These each contain only one pricelist version and only one line in that version.
262
The price for sales defined in the Default Public Pricelist is set by default to
263
the Public Price of the product in the product file, which is the Sale Price in the Product file.
265
The price for purchases defined in the Default Purchase Pricelist is set by default in the same way to
266
the Standard Cost of the product in the product file.
269
single: trading company
271
Example of a trading company
272
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
274
Take the case of a trading company, where the sale price for resellers can be defined like this:
276
* For portable computers, the sale price is calculated from the list price of the supplier Acclo,
277
with a supplement of 23% on the cost of purchase.
279
* For all other products the sale price is given by the standard cost in the product file, on which
280
31% is added. The price must end in ``.99`` .
282
* The sale price of Berrel keyboards is fixed at 60 for a minimum quantity of 5 keyboards purchased.
283
Otherwise it uses the rule above.
285
* Assume that the Acclo pricelist is defined in Open ERP. The pricelist for resellers and the
286
pricelist version then contains three lines:
288
#. \ ``Acclo``\ line:
290
* :guilabel:`Product Category` : \ ``Portables``\ ,
292
* :guilabel:`Based on` : \ ``Other pricelist``\ ,
294
* :guilabel:`Pricelist if other` : \ ``Acclo pricelist``\ ,
296
* :guilabel:`Field1` : \ ``-0.23``\ ,
298
* :guilabel:`Priority` : \ ``1``\ .
300
#. \ ``Berrel Keyboard``\ line:
302
* :guilabel:`Product Template` : \ ``Berrel Keyboard``\ ,
304
* :guilabel:`Min. Quantity` : \ ``5``\ ,
306
* :guilabel:`Field1` : \ ``1.0``\ ,
308
* :guilabel:`Field2` : \ ``60``\ ,
310
* :guilabel:`Priority` : \ ``2``\ .
312
#. \ ``Other products``\ line:
314
* :guilabel:`Based on:` \ ``Standard Price``\ ,
316
* :guilabel:`Field1` : \ ``-0.31``\ ,
318
* :guilabel:`Field2` : \ ``-0.01``\ ,
320
* :guilabel:`Rounding` : \ ``1.0``\ .
322
* :guilabel:`Priority` : \ ``3``\ .
324
It's important that the priority of the second rule is set below the priority of the third in this
325
example. If it were the other way round the third rule would always be applied because a quantity of
326
5 is always greater than a quantity of 1 for all products.
328
Also note that to fix a price of 60 for the 5 Berrel Keyboards, the formula \ ``Price = Base Price x
329
(1 – 1.0) + 60``\ has been used.
331
Establishing customer contract conditions
332
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
334
The trading company can now set specific conditions to a customer, such as the company TinAtwo, who
335
might have signed a valid contract with the following conditions:
337
* For Toshibishi portables, TinAtwo benefits from a discount of 5% of resale price.
339
* For all other products, the resale conditions are unchanged.
341
The list price for TinAtwo, called ``TinAtwo contract`` , contains two rules:
343
#. \ ``Toshibishi portable``\ :
345
* :guilabel:`Product` : \ ``Toshibishi Portable``\ ,
347
* :guilabel:`Based on` : \ ``Other pricelist``\ ,
349
* :guilabel:`Pricelist if other` : \ ``Reseller pricelist``\ ,
351
* :guilabel:`Field1` : \ ``0.05``\ ,
353
* :guilabel:`Priority` : \ ``1``\ .
355
#. \ ``Other Products``\ :
357
* :guilabel:`Product` :
359
* :guilabel:`Based on` : \ ``Other pricelist``\ ,
361
* :guilabel:`Pricelist if other` : \ ``Reseller pricelist``\ ,
363
* :guilabel:`Priority` : \ ``2``\ .
365
Once this list has been entered you should look for the partner form for TinAtwo again. Click the
366
:guilabel:`Properties` tab to set the :guilabel:`Sale List Price` field to *TinAtwo Contract*. If
367
the contract is only valid for one year, don't forget to set the :guilabel:`Start Date` and
368
:guilabel:`End Date` fields in the :guilabel:`Price List Version`.
370
Then when salespeople prepare an estimate for TinAtwo the prices proposed will automatically be
371
calculated from the contract conditions.
373
Different bases for price calculation
374
-------------------------------------
376
Open ERP's flexibility enables you to make prices that depend not only on prices on the product
377
form, but in addition to the two predefined ones – Cost Price and Public Price.
379
To do this use the menu :menuselection:`Products --> Definitions --> Price Types`. Create a new
380
entry for the new price type. Enter the field name, the field on the product form that this type of
381
price corresponds to and the currency that will be expressed in this field. The operation works just
382
as well on new fields added to the product form to meet specific developments.
384
Once this operation has been carried out you can make pricelists depend on this new price type.
386
Then, adding the weight and/or volume field, the price of a product by piece can vary by its weight
387
and/or volume. This is different from defining a price by weight – in that case the default unit
388
of measure is weight and not piece.
390
Pricelists and managing currencies
391
----------------------------------
393
If your trading company wants to start a product catalog in a new currency you can handle this
396
* Enter the prices in a new independent pricelist and maintain the lists in the two currencies
399
* Create a field in the product form for this new currency and make the new pricelist depend on this
400
field: prices are then maintained separately but in the product file,
402
* Create a new pricelist for the second currency and make it depend on another pricelist or on the
403
product price: the conversion between the currencies will then be done automatically at the
404
prevailing currency conversion rate.
406
.. Copyright © Open Object Press. All rights reserved.
408
.. You may take electronic copy of this publication and distribute it if you don't
409
.. change the content. You can also print a copy to be read by yourself only.
411
.. We have contracts with different publishers in different countries to sell and
412
.. distribute paper or electronic based versions of this book (translated or not)
413
.. in bookstores. This helps to distribute and promote the Open ERP product. It
414
.. also helps us to create incentives to pay contributors and authors using author
415
.. rights of these sales.
417
.. Due to this, grants to translate, modify or sell this book are strictly
418
.. forbidden, unless Tiny SPRL (representing Open Object Press) gives you a
419
.. written authorisation for this.
421
.. Many of the designations used by manufacturers and suppliers to distinguish their
422
.. products are claimed as trademarks. Where those designations appear in this book,
423
.. and Open Object Press was aware of a trademark claim, the designations have been
424
.. printed in initial capitals.
426
.. While every precaution has been taken in the preparation of this book, the publisher
427
.. and the authors assume no responsibility for errors or omissions, or for damages
428
.. resulting from the use of the information contained herein.
430
.. Published by Open Object Press, Grand Rosière, Belgium