Key Features
FEFO Lot Suggestion
Suggested lots/serials are re-ordered by expiration date, ascending, so the batch closest to expiring is offered first.
Standard POS Popup
Works inside the existing Point of Sale lot/serial popup — no new screens, buttons, or steps for the cashier.
Serial & Lot Support
Handles both lot-tracked and serial-tracked products — a serial with the earliest expiry is offered first for single-unit items.
Dated Lots Only
Lots without an expiration date are pushed to the bottom of the list, never hidden; non-dated products behave exactly as standard POS.
No Configuration Required
Activates automatically per product once Tracking and Use Expiration Date are set — nothing to enable on the module itself.
Lightweight
A single method override on pos.order.line — no new models, views, menus, security groups, or cron jobs.
Description
Automatic FEFO Ordering
Standard Point of Sale lists available lots in whatever order the database returns them. This module re-sorts that list by expiration date the moment the lot popup opens, so the batch closest to expiring is always at the top.
- Sorting happens server-side on every lot/serial lookup, ascending by expiration date
- Lots without a set expiration date fall to the bottom instead of interrupting the FEFO order
- Reduces shrinkage from expired stock without adding a manual stock-rotation step


Zero-Click Cashier Experience
There is nothing new to learn at the till. The FEFO ordering happens inside the exact same lot/serial popup cashiers already use — they just tap the topmost entry, same as before.
- No new buttons, screens, or training required
- Standard "no existing serial/lot number" behaviour is untouched when no dated stock is available
- Non-tracked products behave exactly as stock Point of Sale
POS Product Screen

Tap a Tracked Product to Open the Lot Popup

Lot Popup — FEFO Order Close-up

Lot Selected and Added to Cart

Cart Line Close-up

Payment Screen

Receipt with Lot Number

| Versions | 18.0, 20.0 |