OdooWiki OCA HUB

Product Expiry Simple

product_expiry_simple folder_open OCA/stock-logistics-workflow open_in_new
Product License: AGPL-3

This module is similar to the official product_expiry module that adds support for Expiry Dates on products, but it is both simpler and better:

  • Only one Expiry Date field instead of 4 fields (Expiration Date, Best before Date, Removal Date, Alert Date)!
  • Use date field instead of datetime field for Expiry Date.
  • No automatic computing of Expiry Date based on a delay configured on product because it is not used most of the time (for manufacturing companies, the rules that control expiry dates are usually more complex than that ; for reseller companies, they have to copy the expiry date written on the good when they receive it in their warehouse).

This modules keeps the main feature of the official product_expiry module: the support of FEFO (First Expiry First Out).

I decided to develop this module because, after implementing product_expiry at several companies, I noticed that I spent more time inheriting the official product_expiry module to make always the same kind of changes that re-developping a simpler and better alternative.

auto_awesome What this module does

AI-generated from the code · Odoo 16.0

Add a single expiry date on lots/serials and use FEFO (First Expiry First Out) to pick the soonest-expiring stock first. Odoo warns you when a transfer contains expired lots.

This module adds a simple expiry date to products tracked by lot or serial number, and makes Odoo pick stock using FEFO (First Expiry First Out).

On a product form, a new 'Use Expiry Date' checkbox appears next to the Tracking field. It is only visible when the product is tracked by lot or serial, and Odoo blocks you from ticking it otherwise. When it is ticked, every lot or serial number of that product must have an expiry date: Odoo refuses to save a lot without one, and also refuses an expiry date on a lot whose product does not use expiry dates.

Lots and serial numbers show the expiry date, and an 'Expired' badge appears when the date is in the past. In lot lists, expired lines are shown in red, and you can filter by Expiry Date, Expired or Not Expired, or group by expiry month. The lot name displayed in many screens is prefixed with the expiry date (with a warning sign when expired).

On stock operations, you can enter the expiry date directly on the move lines, and when assigning serial numbers you can set one expiry date for the whole batch. On a transfer (picking) that is ready or waiting, a warning banner appears if any line contains an expired lot. Stock quantities (quants) show the expiry date and expired status, with the same filters and red highlighting.

Finally, a new removal strategy 'First Expiry First Out (FEFO)' is available on product categories and locations, so reservation takes the earliest expiry date first.

Depends on

stock

Required by other modules

Models and fields (7)
  • stock.lot · extends an existing modelexpired, expiry_date, use_expiry_date
  • stock.move · extends an existing modelserial_expiry_date (Expiry Date), product_use_expiry_date
  • stock.quant · extends an existing modelexpired, expiry_date
  • stock.picking · extends an existing modelshow_expiry_warning
  • stock.move.line · extends an existing modelexpiry_date
  • product.template · extends an existing modeluse_expiry_date
  • stock.assign.serial · extends an existing modelserial_expiry_date (Expiry Date), product_use_expiry_date

Text generated by AI (DeepSeek) from reading the Odoo 16.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 2 confirmed, 7 with no information of 9 versions.

Sources · Odoo 16.0

Confirmed on 2026-11-03 in branch 16.0 of OCA/stock-logistics-workflow.

terminal Installation and usage

No verified information

Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.