Account Moves for Anglo Saxon Accounting

I wish to use a perpetual inventory system and am using the account_stock_anglo_saxon module.

My account category is setup as follows (all products have this accounting category):

Now, when I create a purchase order, and shipment reception has not been done, validating an invoice creates the following moves:

If shipment reception is done and then invoice is validated, the following account moves are shown:

Could someone please clarify:

  1. why there are expense account entries being made here since in a perpetual inventory system, it is the inventory/stock journal that should be affected (unless it’s the COGS account).

  2. No entries are created involving the ‘Account Stock’ or the Stock Journal when a shipment is received. Only if the invoice is validated after shipment reception, then ‘Account Stock IN’ is debited. Since no ‘Account Stock’ entries are being made, which account should be used for stock valuation? Should ‘Account Stock IN’ and ‘Account Stock OUT’ be set to the same account?

The stock move will be created when your receive the shipment from the supplier. If you do not receive any shipment it is expected that stock valuation is not updated.

It is because there may be a difference between the cost and the invoice price (for example with landed cost).

You should ensure that the fiscal year has the proper stock method defined. But also that a unit price is set on the incoming move done.

My fiscal year is set to use ‘Anglo-Saxon’ account stock method. My shipment/incoming move does have the unit price (it is taken directly from the Purchase Invoice):

But in the account moves, only ‘Account Stock IN’ is involved, not ‘Account Stock’. Is this the expected behaviour, or am I missing something?


Probably as we have test that shows stock account being filled.

The test scenario you have pointed to covers the case in which reception is done before validating invoice.

I’ve done some testing in the case when invoice is validated first and shipment is received afterwards.

Below is a summary of the results, which I find strange.


  1. The cost price (on the variant form) for ‘product’ is set to $5.
    Cost price method is ‘Fixed’.
  2. My purchase order has just one line:
    Product = ‘product’, Unit price = $55, Quantity = 2 units.

Now, validating invoice first and then receiving shipment gives the following account moves:


  1. The cost price (on the variant form) for ‘product’ is set to $6.
    Cost price method is ‘Average’.
  2. My purchase order has just one line:
    Product = ‘product’, Unit price = $56, Quantity = 2 units.

Now, validating invoice first and then receiving shipment gives the following account moves:

In both the above Cases, if reception is not done, the amount on the Account Stock IN is not equal to the payable amount and the entries on the Expense account are rather confusing.

Do the above entries make any sense or should the shipment reception always be done before invoice validation?


What would you expect then?

I was expecting that the Stock IN account would be cleared. But I suppose the case I have shown above is not how it’s meant to be used anyway.

But how could it be cleared with a setup where cost prices are so different from the purchase price.
When I’m asking what you expect, I would mean the exact accounting moves.

I would like to provide an opinion to this topic.

If you don’t want the confusing entries to show in the Expense account then you must not enter a unit cost for the product and leave it zero. Under the Average cost price method, the system will compute and assign the correct cost to each purchased product when you execute the shipment reception. The cost will be computed based on the price and quantity paid on purchase (from the purchase invoice). This way the Account Stock IN is cleared when the both: purchase invoice is posted and shipment received.

I hope this helps.

Continuing with the discussion started by Iocx regarding the Anglo Saxon inventory accounting, I am a bit confused too why the resulting accounting move from a purchase invoice has a line where the additional costs of the product is always placed to the expense account instead of putting it together in the line that debits the Stock IN account. In my opinion, the additional costs whether it is from a price increase or landed cost should all be part of the inventory cost.

The difference between the cost price and the invoiced price can not be in the stock account because it will then never be removed when the product is leaving the stock (like sold or lost).
The problem is to have a cost price that is different but also probably to use post the invoice before having do the receipt of the goods in the stock because in this case the system must use the default cost as no other data is available.

For what I understand about handling the stock account is that if I have a new batch of products (from a purchase) that is added to the inventory, it can use the unit price from its origin purchase invoice as its cost value, hence the total cost is transferred from Stock IN to the Stock account (in the shipment move), and at the same time if there is existing inventory for the same product, the system will update the cost per item to a new average using the newly added inventory; i.e. new_unit_cost = ((existing_cost * existing_count) + (new_cost * new_count)) / (existing_count + new_count).
So when the product leaves the stock (sold or lost) it just use its newly updated new_unit_cost and the correct values are removed from the Stock account.

I see it the other way, if a stock is received before the purchase invoice is posted then the unit cost for the product will have to be the default cost as no other data is available. But if the flexibility for allowing shipment reception before posting purchase invoice is not very compatible with the Anglo Saxon inventory valuation, why don’t we just block it and never let that happen? I.e. no inventory shipment can be done without proper purchase invoice associated, when Anglo Saxon mode is enabled.

I can not discuss in the vague. I need concrete example of something not working correctly otherwise I just assume it is working.

Ok, let me prepare a concrete example.