FIFO Inventory Costing Applications in Dynamics NAV
The FIFO or “First in, first out” inventory costing method dictates that costs associated with the earliest inbound movement of an item (purchase, positive adjustment, output, etc.) will also be the first taken out of inventory during sales, negative adjustments, consumption, etc. I often field questions as to what specific logic NAV uses to pull on-hand FIFO items out of inventory as it’s sometimes not quite as simple as you’d expect.
FIFO Logic Summary in Dynamics NAV
NAV will consider variants in its FIFO calculation. For example, consider an item that has two variants of blue and green. If we purchased a blue item on Monday, then purchased a green item on Tuesday, then sold a green item on Wednesday, NAV would pull the green item out of inventory even though the blue unit was purchased earlier.
NAV will consider the location code in its FIFO calculation. For example, when a unit of an item is sold out of the MAIN location, NAV will pull the oldest unit of that item in the MAIN location out of inventory and will not consider on-hand quantities at other locations.
Units of Measure
NAV will always convert your on-hand inventory into the item’s base unit of measure on the item ledger entry. For example, you may have an item that has a base unit of measure of EACH and a secondary unit of measure that represents ten each units called CASE. Regardless of whether you purchase the item in EACH or CASE, NAV will convert the on-hand inventory into EACH because it’s our base unit of measure. Likewise, when an outbound movement of inventory is posted, the unit of measure has no impact on the FIFO calculation. NAV will simply pull the oldest inventory regardless of what unit of measure was used on the inbound and outbound entries.
While it’s true that we can attach a dimension value to our on hand inventory (on open item ledger entries) and also assign a dimension on the outbound movement (a sales line for example), NAV doesn’t consider dimensions in its FIFO calculation. Take for example a dimension called “Product Category” that has dimension values like “electronics”, “plumbing”, “lumber”, etc. If a sales order line is created with a product category dimension value of plumbing, NAV will not consider that dimension value when trying to find the oldest bucket of inventory to pull from. On the other hand, a variant called “Product Category”, could be used to achieve FIFO per product category.
Although NAV doesn’t offer FIFO picking per bin, it should be noted that NAV does give you the ability to “Pick According to FEFO” (First Expiration date, first out) at the bin level. This is a setting that can be selected on NAV’s location card. More detailed information offered here: https://msdn.microsoft.com/en-us/library/hh173733(v=nav.90).aspx
There are times when we may need to override NAV and pull inventory in a non-FIFO manner.
• Prior to posting a negative movement of inventory in NAV, the user can manually fill in the “Applies-to item entry” field as a way of telling NAV to ignore FIFO logic and instead direct NAV to pull from some other open item ledger entry for that item. This especially makes sense when you have dramatic cost fluctuations with a given item. Take for example an item that has "two" quantity on hand. The oldest unit has a cost of $300 and the more recent unit has a cost of $100. If we create a $250 sales order to sell this item, and in reality, we are selling them the $100 item, the “Applies-to item entry” field could be used to instruct NAV to pull the $100 item even though it’s not the oldest. Taking this step would result in a +$150 margin sale. Failing to take this step would result in a sale with a -$50 margin.
• After posting a negative movement of inventory, we can also undo a FIFO application and re-apply the outbound item ledger entry to a different open item ledger entry by using the application worksheet. More information offered here: https://msdn.microsoft.com/en-us/library/hh176934(v=nav.90).aspx