WindoorERP Documentation 19.0

Decide which units leave first

Send the oldest stock out first

Why this step

FIFO is the sane default for gaskets, sealant and anything with a shelf life, and it stops a pallet ageing quietly in a corner for two years. It is also what keeps batch drift from accumulating on your racks.

What this does

First in, first out: every reservation takes the units that have been in the warehouse longest. Stock rotates, nothing ages forgotten at the back of a rack — the sensible policy for gaskets, sealants, coated profile, anything that degrades or gets superseded. On this system FIFO needs no setup at all: it is the default the moment neither the product's category nor the location says otherwise, and today nothing does.

Before you start

  • Nothing, for the default behaviour — FIFO is already how every product here removes.
  • To force it explicitly on a family even if locations change later: the category's Force Removal Strategy field.

Making FIFO explicit (optional)

  1. 01
    Open Inventory › Configuration › Product Categories and pick the category — the profile or consumable family you care about.
  2. 02
    Set Force Removal Strategy to First In First Out (FIFO). "Force" means it now wins over any location setting, everywhere.
  3. 03
    Save — the change is logged in the category's chatter, so you can see who changed the policy and when.
  4. 04
    From the next reservation on, the oldest units are taken first; reservations that already exist keep the units they hold.

Where the "age" comes from

Every parcel of stock carries an incoming date, whether or not the product is tracked: it is stamped when goods are received, and it travels with the units when they are moved between internal locations — moving old profile to another rack does not make it young again. When identical stock merges in one spot, the merged pile keeps the oldest date of its parts, so age is never understated. This is why the old advice "FIFO needs lot tracking" is wrong: dates exist regardless. What lot tracking adds is precision and proof — with lots, each batch keeps its own age, the picking line names the exact lot to take, and the paper trail shows it. Without lots, FIFO works at the level of "the pile that arrived first", which is usually exactly enough. (On this system the Lots & Serial Numbers feature is currently switched off for users, so FIFO runs in the untracked style except for the serial-tracked finished goods.)

One refinement: units that do carry a lot or serial are always consumed before untracked units of the same product — the system prefers to empty the identified stock first.

Troubleshooting

The picker was sent to newer stock — the reservation predates your FIFO change (unreserve and re-check to re-order it), or the older units were already reserved by someone else.

Old and new stock merged and now everything counts as old — by design: a merged pile takes the oldest date so rotation errs on the safe side. Keep receipts in distinct locations or lots if that matters.

You need per-batch traceability, not just rotation — that is lot tracking, a separate feature to enable, not a removal-strategy setting.

Common mistakes

  • Believing FIFO is off because no field says FIFO — an empty strategy is FIFO here.
  • Enabling lot tracking on everything just to get FIFO — the dates are already there; add lots for traceability, not rotation.
  • Expecting a strategy change to fix already-reserved transfers — it never re-shuffles them.

Checkpoint

Picking a stocked consumable draws from the oldest receipt, not the nearest pallet.