Expiry dates, enforced at the dock.
Cerevantix Expiry on Incoming Shipments turns Odoo’s buried expiry fields into an inline, enforced part of every incoming receipt, so expiration, best-before, removal and alert dates are captured before validation completes — not chased down afterward.
The problem
Warehouse staff receive stock, validate the transfer, then must return in a separate manual pass to open each lot and enter its expiration, best-before, removal and alert dates. Odoo’s native fields are buried behind an optional-columns menu with nothing forcing them to be filled, so dates get missed — breaking FEFO picking, letting expired stock ship, and turning recalls and audits into guesswork.
The solution
Expiry on Incoming Shipments puts all four expiry date fields inline on the receipt’s Detailed Operations list, flags missing or implausible dates in red and orange as you work, and blocks validation until required dates are filled — with a reviewer-only override, a bulk-apply wizard for fast entry, and an immutable audit log of every change.
Built for compliant, high-volume receiving
Every capability below is implemented in the module.
Inline Date Capture
Expiration, best-before, removal and alert dates all appear directly in the receipt’s Detailed Operations list — no extra clicks, no optional-columns menu to discover.
Enforced Validation
Receipts cannot be validated while a required expiry date is missing. A dedicated gate stops the process and lists exactly which lines and dates need attention.
Reviewer Override
When an exception is genuinely needed, only users in the Warehouse / Quality Reviewer group can confirm the receipt anyway — receiving clerks cannot bypass the gate.
Instant Visual Feedback
Lines missing a required date are highlighted in red; lines with an implausible date are flagged in orange — so problems are obvious before you even try to validate.
Plausibility Warnings
Expiration dates already in the past, or shelf lives far longer than a product’s configured expiration time, are flagged automatically so typos and mis-scans get caught early.
Bulk-Apply Wizard
Set one or several expiry dates across every eligible line of a receipt in a single action, with the option to fill only blank dates or overwrite existing ones.
Immutable Audit Log
Every date change is recorded with the product, lot, old and new value, who made the change and when — a tamper-resistant trail that only administrators can edit.
Role-Based Access
Receiving Clerks capture dates day-to-day; a separate Warehouse / Quality Reviewer group holds override rights, settings access and the audit log.
Company-Level Configuration
Choose which date types are shown and which are required, toggle plausibility warnings, and tune the shelf-life sensitivity factor — all from Inventory Settings.
How it works
Receive the Shipment
Confirm the incoming transfer as usual; an onboarding banner appears whenever a receipt has lot-tracked, expiry-enabled products.
Enter or Bulk-Apply Dates
Fill expiration, best-before, removal and alert dates inline per lot, or use the Set Expiry Dates wizard to apply dates across the whole receipt at once.
Validate With Confidence
Try to validate: missing required dates trigger the enforcement wizard automatically, showing exactly what’s incomplete before anything is confirmed.
Review the Audit Trail
Quality and warehouse managers review every date change, override and receipt from the Expiry Date Log under Inventory Reporting.
Frequently asked
No sales fog. If your question isn't here, email us and we'll answer it the same way.
It requires the standard Inventory (stock) and Expiration Dates (product_expiry) apps, both included in Odoo Community. No other paid apps are needed.
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.
Expiry on Incoming Shipments
Expiration, best-before, removal and alert dates captured inline on the receipt and enforced at validation, with plausibility warnings, a bulk-apply wizard, a role-gated reviewer override and an immutable log of both.
Buy on Odoo App Store