
FIFO Inventory Valuation in Odoo 12
Inventory valuation is the cost associated with an entity’s inventory at the end of a reporting period. It forms a key part of the cost of goods sold (COGS) calculation.
Inventory Valuation is done using different methods depending on how inventory flows through the system.
FIFO ( First In First Out ) is an inventory valuation method where you assume that the first items to enter the inventory are the first ones to be used. In Odoo, FIFO is also termed as a warehouse stock removal strategy.
This blog demonstrates how product costs are managed and stock journal entries (Stock Account Moves) are created when the Costing Method of a product is First In First Out (FIFO).
Let’s begin with Product Category and Product definitions which together defines the following properties of the product when inventory moves are created.
Costing Method
Inventory Valuation type
Stock Accounting Properties, and
Cost Price
The chosen Product Category is “Lamps”. Costing Method is FIFO. Inventory valuation is configured as ‘Automated’, which means, stock journal entries shall be created automatically when the product is received into the inventory (Receipts/Incoming Shipments) or sent out from the inventory (Delivery Orders)
‘Office Lamp New’ is the product considered. The cost of the product is shown as zero. Users can’t define the cost manually since the costing method is FIFO. It is supposed to be updated automatically based on inventory costs. In the absence of inventory moves, the initial cost of the product is zero.
Incoming 1
First Purchase is done for 100 units (Quantity) of the product at a Unit Price of 50
Receipt for 100 Units is created automatically.
The entire quantity ( 100 Units ) is received into a new Lot
Stock Journal Entry ( Stock Account Move ) is created automatically on completion of the transfer. 5000 is the cost of purchase. 100 units at a cost of 50
Inventory Valuation report shows correct value.
Quantity – 100
Value – 5,000
Incoming 2
Second Purchase is done for 100 units (Quantity) of the product at a Unit Price of 70
The entire quantity ( 100 Units ) is received into a new Lot
Stock Journal Entry ( Stock Account Move ) is created automatically on completion of the transfer.7,000 is the cost of purchase. 100 units at a cost of 70
Inventory Valuation report shows Expected value.
Quantity – 100+100 = 100
Value – 5,000+7,000 = 12,000
Right now the inventory contains 200 Units of the product at two different lots. Average cost of the product is 60 (1200/200), while individual cost of the quants ( corresponding to the two lots ) are 50 and 70 in the order of incoming time.
Outgoing 1
The outgoing movement of the product is initiated with a sales order. 50 Units are sold at a unit price of 40.
The units are delivered from a lot which has 100 units available. The product cost of the lot (quant ) has been 50
The stock journal Entry ( Stock Account Move ) clearly indicates the cost of the movement. 50 units worth inventory cost 50 each are moved out. 2,500 is the total inventory cost associated with the move.
New total cost of the product is 9,500 ( 12000 – 2500 )
50 units worth inventory cost 50 each are moved. This happened according to FIFO logic. 50 out of the 100 units received via WH/IN/00011 are moved now. It was the first input move associated with the product.
Outgoing 2
Second Sales Order is created for 100 units of the product.
The required units are taken from two lots, since the first lot doesn’t have enough quantity required to deliver the order quantity.
The important development associated with FIFO costing method can be observed in the stock journal Entry ( Stock Account Move ) created. The unit cost of the product is neither 50( Purchase Lot 1) nor 70( Purchase Lot 2 ), but a new figure 60.
The inventory value is 3500 (9500-6000)
The FIFO method considered the 50 remaining units of purchase lot 1 and another 50 from purchase lot 2. [ (50*50)+(50*70) ] = 6,000. Unit cost of the qunat becomes 60
Change in Product Cost Price
The method also updates the cost of the product with last moved out value.