Stock valuation

Asked by Ana Juaristi Olalde

Hi: There is some points I would like to clear about stock valuation.

When you make a purchase order, and confirm, a packing is created. Since you confirm a purchase order the stock value reports are updated.

What is happening after that if purchase invoice price is different from purchase order price. Since on packing we can't change the price, not in order, not in packing, How does OpenERP manage this situation? Is it updated the price of stock move on invoicing or not? If answer is not, I think there is a big problem here. If answer is yes... How does it manage the situation where there is some stock_moves valued with purchase price, mixed with stock_moves valued with invoice price.

I need financial and production experts answer for this question.

Thank you very much:


Question information

English Edit question
Odoo Addons (MOVED TO GITHUB) Edit question
No assignee Edit question
Solved by:
Ana Juaristi Olalde
Last query:
Last reply:
Revision history for this message
Joël Grand-Guillaume @ camptocamp (jgrandguillaume-c2c) said :

Hi Ana,

I think you misunderstood something here...

Once packing is confirm, the stock valuation will be done depending on the price method :

1. Standard price or
2. Average price

If Std price, then the std price is used to value the stock.

If average, then a wizard allow you to enter the current price on that delivery and value the stock with the new computed average price.

I hope it helps, and if I'm not in the scope of your interrogations, forgive me :) !



Revision history for this message
Ana Juaristi Olalde (ajuaristio) said :

Hi Joel:

Thank you very much for your quick answer.

Yes... I think I'm missing something here. I can't fit all puzzle pieces on my mind, maybe because in other systems I used to see 3 different stock valuation at the same time, so it's difficult for me to change my mind to have only one field for it. But I'm trying. Maybe I didn't explain correctly my question. Sorry for my awfull english. :)

This is, in other systems the stock valuation was something like standar_price, medium_price, last_purchase_price, all at the same time on the same screen. Only medium_price was legal but three fields together used to be very very usefull to see analytic data.

So... in OpenERP, I have to choose between standar_price and medium_price, my missing point is the moment where price change and how this affects to stock valuation.

Standar_price: I fix it manually, so until I change it manually the stock valuation is not going to change. In the moment I change the price, only the future stock moves would be affected for the change. Is this like that?

Medium_price: Each time I purchase, the price can change, so the medium_price is changing each time I validate the invoice? (This would be correct) but on the time between I confirm the purchase order and I receive the invoice I could be wrong stock valuation since medium price has not changed.
Or is it changing each time I confirm the purchase order (that would be incorrect, in my mind)

Another point is that the stock valuation is calculated in different way depending on product, so it's a little bit difficult knowing if it's correct or not. The way of watching 3 fields at the same time, assure that the stock valuation is made always same way for all products.

I don't know, You can see I'm a little bit lost with this. It's because of that I've written the question.

Thank you again...


Revision history for this message
David Janssens (david.j-almacom) said :

The cost price of a purchased product is equal to the supplier invoice price + the landing costs (shipping, insurance, etc.).
AFAIK, there was no module to record landing costs properly in OpenERP. But we implemented this in our Thai accounting module ac_account_thai (with some other basic costing features such as FIFO).

Revision history for this message
Nhomar - Vauxoo (nhomar) said :

Hello Ana....

The missing point is when you configure the accounting information in a Product.

We work with average_price.... 2 Stuff happend inmediatly (depends of your configuration) you confirm an order...

-- An Invoice.
-- A Picking.

The Picking: when your picking go in to your stock quantities are updated and the _average_price is updated on product information, yes no historical, no past, we build a module that check in the middle this values, but is not ready yet.

The Invoice: Make a -very important- function the "valuation move line" this is done in the same move related to the invoice.... this is done in the account selected on product.

If arrive in first time the Invoice, all will work fine because you will have a real price in the invoice to make calcs.
If arrive in first time the Picking it will take the price incated on order.... be carefull...

This is a work very hard.... because it has a little bug... with refund.... this is another history.....

If you re working with standard price all is exactly the same except for the recalculation, this function is not done, remember FIFO process said....
"For an accounting point of view You must value your stock related to the older price in your inventory.... not average not exactly the same"...

I hope this help you.......

Check this:

Is a little better explained....

Revision history for this message
Ana Juaristi Olalde (ajuaristio) said :

Hi David:

I'm still trying to understand the standar functionality on stock valuation without landing costs or insurance :) But I think we should evaluate your module. My only concern is that a Thai accountancy module would be compatible with owr spanish localization modules. :)

I will try and tell you.

Hi Nhomar:
In spain almost the %90 companies make invoice from packing, not from order. So our proccess is order, packing, invoice. The second one you say. Normally you make a purchase order with or without prices (depending on the supplier and the urgency on order) Then you receive the picking where normally supplier puts the right price that he is going to invoice. Is in this point where normally we should fix the standar_price or medium price. But we can't since on packing there is no way to indicate that price changed from order. This is a problem. We can open the product form and change the standar_price, but if we set medium_price...

When you say: The Picking: when your picking go in to your stock quantities are updated and the _average_price is updated on product information --> In this case the average_price is changed with purchase order price... would be incorrect.

The Invoice: Make a -very important- function the "valuation move line" this is done in the same move related to the invoice.... this is done in the account selected on product. --> Sorry, I don't understand this line. :(

Revision history for this message
Jan Verlaan (jan-verlaan) said :

Stock valuation (via the stock module) is done based on quantity on stock * Std_price field on productfile.
This is true for both settings, std and average. Only with average the std price is updated when confirming every purchase invoice and thus the stock value will change at the moment the invoice is confirmed.

The value written to the general ledger is something different and with standard OpenERP it is based on the product standard value written to stock account while receiving the goods and the value of the invoices to the creditors account when confirming the invoice. These could be different! and here you have point. I understood that this is Rhine or also called Continental accounting system whereas Spain belongs too?

With the account_anglo_saxon module installed this behavior is changed. It is needed by e.g. Northern Europe and the new European countries, USA and many other countries. It works with fixed standard price.
This module will support the Anglo-Saxons accounting methodology by changing the accounting logic with stock transactions. The difference between the Anglo-Saxon accounting countries and the Rhine or also called Continental accounting countries is the moment of taking the Cost of Goods Sold versus Cost of Sales.
Anglo-Saxons accounting does take the cost when sales invoice is created, Continental accounting will take the cost at he moment the goods are shipped. This module will add this functionality by using a interim account, to store the value of shipped goods and will contra book this interim account when the invoice is created to transfer this amount to the debtor or creditor account.
Secondly, price differences between actual purchase price and fixed product standard price are booked on a seperate account.

Revision history for this message
Ana Juaristi Olalde (ajuaristio) said :

Sorry everybody... This is a so silly thing I can't believe I have been for hours trying to understand it!!!

OK... My problem was that always my configuration was with standar price. So, I changed to medium price and I realized that the packing wizard change to show the product price where you can change it!!!! So.. it's perfect. I don't know how after so long I didn't realize about this!!

So thank you very much for your answers and sorry again for inconveniences. I have learnt very much about stock valuation with this post.

Thank you very much: