See which stock to ship before it expires
A live rotation and expiry dashboard for Odoo Inventory. Age, FSN velocity, and lot-level expiry status for every product, warehouse, and location — with proactive alerts before stock writes off.
The problem
Perishable, batch-tracked, and expiry-sensitive inventory ages out before it moves. Standard Odoo inventory reports show what is on hand today, not how old it is, how fast it turns, or which lots are closing in on their expiry date — so warehouse teams write off stock, fail traceability audits, and lose margin they never saw coming.
The solution
Warehouse Stock Rotation Report generates a point-in-time snapshot of every on-hand bucket — product, lot, and location — with age, expiry state, and a Fast / Slow / Non-Moving classification. Filter by warehouse, category, and date range from an interactive wizard, then work from a live dashboard instead of a static export.
Everything a rotation report should do
Every capability below is implemented in the module.
Age-based rotation report
Every on-hand quantity is broken down by product, lot, and location with the number of days since receipt, so the oldest stock is always visible first.
Fast / Slow / Non-Moving classification
Configurable velocity thresholds label every line Fast, Slow, or Non-Moving from real outgoing-move history, turning raw age data into a dead-stock signal procurement can act on.
Lot-level expiry tracking
Expiration and removal dates from product_expiry drive an Expired / Expiring Soon / OK status per lot, with a configurable warning threshold in days.
Days-of-stock coverage
On-hand quantity divided by daily velocity shows how many days of cover each product has left, flagging overstock before it becomes write-off risk.
Interactive filter wizard
Warehouse managers generate a report themselves by warehouse, product category, date range, and thresholds — no developer or admin configuration required.
Live rotation dashboard
List, kanban, pivot, and graph views of every snapshot line with expiry and FSN badges give an always-on view of rotation health, not a report you have to re-run to check.
Proactive expiry alerts
A daily scheduled action finds lots approaching their expiry threshold and creates a follow-up activity automatically, so at-risk stock is flagged before it lapses.
Scheduled email digest
A configurable weekly cron generates a fresh report and emails a KPI summary to every Stock Rotation Manager, so reviews happen without anyone remembering to pull a report.
PDF and Excel export
Print a formatted PDF rotation report straight from the record, or use Odoo's native list export for an Excel copy of every line — ready for audits and offline review.
How it works
Set your filters
Open the New Report wizard and choose a warehouse, product category, date range, and expiry / velocity thresholds — or leave them at the configured defaults.
Generate the snapshot
One click builds a frozen snapshot line for every on-hand product, lot, and location bucket with age, expiry state, and FSN classification already calculated.
Work the dashboard
Review the KPI band, list, and kanban dashboard for expiring lots and non-moving stock, or drop into pivot and graph views to spot patterns by warehouse or category.
Export or automate
Print the PDF report, export the line list to Excel, or let the scheduled digest and expiry-alert activities keep managers informed automatically.
Frequently asked
No sales fog. If your question isn't here, email us and we'll answer it the same way.
The module ships for Odoo 17.0, 18.0, and 19.0, with the same rotation, expiry, and FSN logic on every version.
Buy it on the Odoo App Store
Purchase, download and install directly from the official Odoo Apps Store — you'll always get the latest supported build.
Warehouse Stock Rotation Report
Age, expiry, and FSN velocity analysis for every product, lot, and warehouse, with proactive expiry alerts and a scheduled email digest.
Buy on Odoo App Store