FIFO is an acronym for first in, first out, a method for organizing and manipulating a data buffer, where the oldest (first) entry, or 'head' of the queue, is processed first. It is analogous to processing a queue with first-come, first-served (FCFS) behaviour: where the people leave the queue in the order in which they arrive.
When a customer complains that their system is NOT BATCH TRACKING, the customer needs to understand that FIFO CAN NOT WORK RELIABLY without batch tracking.
Receive Stock 1 / 1 / 2015 10 units into BIN A1
Receive Stock 1 /1/ 2016 50 units into BIN A2
Receive Stock 1/6/2016 10 units into BIN A1
When you ask the system to pick 20 units - system will direct to BIN A1 and pick the 20 units. BUT TRUE FIFO would be, 10 unit from Bin A1 and 10 unit from Bin A2.
Why is not working?
Because once you move NEW STOCK into the same BIN as OLD STOCK they MERGE together them the system has no way to tell the articles apart. It will certainly try to use the oldest created stock (as per the example above) but once you have old stock and new stock MIXED TOGETHER in Bins FIFO will not work unless you provide BATCH information against which a date inwards is tracked against each article.
So as a RULE - FIFO FEXFO , LIFO, LEFO all require Articles with BATCH TRACKING ENABLED to work effectively. (No system can provide FIFO support without tracking the exact stock group per receive by date.)
If they use UNTRACKED STOCK (~) there is no way to guarantee FIFO.
For untracked stock FIFO selection will revert back to the order in which the BINS/Inventory was initially loaded into the system.
It's not a fault or bug, it is just a fact that generic stock is lumped into one big bundle regardless of which bin it is in or when it was received.
Basically, if customers want to use FIFO, they need to track the PO# as the batch number.