Extend Magento inventory management

Magento inventory management is very basic – only an Inventory Qty figure. Strictly speaking, it is not an “in-stock” figure, but an “orderable”. Because orders keep coming in but you only do despatch once a day, Magento inventory quantity changes upon order is placed online, so you can not tell how many pieces of a product sitting in the warehouse.

Use only one figure to manage inventory is not enough. Imagine this scenario:
You are doing stocktake someday. At the time of last despatch, Magento inventory quantity of product X is 100. Stocktaking takes many hours, and when it finishes, Magento inventory quantity has changed to 80. If you physically count product X as 95, you can not simply update Magento inventory figure to be 95. Instead you should change it to 75 (worked out as 80 – 100 + 95). It is very easy to make such mistakes in stocktaking, but I have only Magento to blame – if stocktaking is based on a figure which is changing from time to time, it is not rock solid.

However, I am not thinking of introducing a 3rd party inventory management system to work with Magento, largely because I do not know which one can fit.

I am thinking of a simple extension to Magento – use 3 figures to show stock level from different concerts. Let’s clarify the terminology first.
Figure 1: inventory orderable, i.e. the existing Magento Inventory Qty;
Figure 2: inventory in-stock, i.e. how many pieces in the warehouse;
Figure 3: inventory coming, i.e. expected purchase.

  • When an order is placed, decrease inventory orderable
  • When an order is despatched, decrease inventory in-stock
  • When an order is cancelled before despatch, increase inventory orderable
  • When an order is cancelled after despatch, do nothing (some companies raise RMA at this point but we do not need it.)
  • When an order is returned, if goods in good condition, increase inventory orderable, and increase inventory in-stock
  • When a purchase order is placed (by us to our supplier), increase inventory coming
  • When a purchase order arrives, decrease inventory coming, increase inventory orderable, and increase inventory in-stock
  • When stocktake begins, snapshot inventory in-stock as inventory1
  • When stocktake ends, update inventory in-stock to inventory2, and add (inventory2 – inventory1) to inventory orderable

If all above events are logged, we have a kind of traceability. The log gives some clue to analyse where “inventory2 – inventory1” is from.

In case a customer asks “how many you have? I take them all”, we tell him/her inventory orderable.

In case we need find out “how many on hold (for late despatch)”, we use the balance between inventory orderable and inventory in-stock.

Inventory orderable (figure 1) is built-in with Magento. Inventory coming (figure 3) is not essential to stock control. We can introduce it after we have implemented inventory in-stock (figure 2).


  1. Hi,

    I read your article aobut extending magento inventory management. I was wondering if you made any progress on it. I am facing the issue to connect magento to external inventory management, and wondering if you have created an extension based on your idea ?

    Thanks a lot,


Leave a comment

Your email address will not be published. Required fields are marked *