Stock Expiry Dates in an App: An Alert Is Not a Decision About the Goods
An expiry dashboard should tell staff which stock needs attention, where its date came from and what action is still unresolved. A coloured date is not proof that goods are safe, blocked from dispatch or correctly disposed of. Define those decisions separately before commissioning the feature.
This guide concerns operational software requirements. Product-specific date meanings, suitability for use and any legal obligations need competent review for your goods and market. Do not derive them from the labels used by an inventory vendor.
Start with the date on the actual batch
A product can arrive in several batches with different dates. Decide how staff capture the date accompanying each receipt and how they distinguish a supplier-provided value from a calculated default. The Odoo 19 expiry guide ties expiration information to lot or serial tracking. That supports a batch-level starting point, not a rule that every item of the same product expires together.
The same documentation describes configured offsets that calculate dates when goods enter stock. In your project, ask whether calculation is appropriate at all. A receipt date plus a default interval must not silently replace authoritative information accompanying the goods. Keep the origin visible and give conflicting or missing dates a reviewed exception path.
Use fictional batches in the demonstration. Receive one product twice with different dates, then check whether staff can still identify the dates after a partial movement. Correcting a date should preserve who changed it and why rather than silently rewriting the record.
Separate warning, removal and permission to dispatch
Odoo exposes separate expiration, best-before, removal and alert settings. Treat these as vendor field distinctions, not universal definitions of safe use. Agree your own reviewed meanings and which operational event each controls.
An approaching-date warning may create work for a stock owner. A removal instruction may require moving goods to a defined location. A dispatch restriction is another control again. Ask the developer to show each requested behaviour; do not infer a block from a red banner.
For example, a hypothetical supplies team might review approaching dates before assigning stock to orders. Whether the goods can still be supplied is a decision for its approved process, not for this article. The software should record the decision and enforce the agreed restrictions wherever staff can allocate or dispatch goods.
Give the warning a person and an outcome
The Odoo guide describes a notification to the responsible user after a tracked lot or serial number passes its expiry date. That is a specific notification example, not evidence that every system provides advance escalation or stops shipment.
Specify who monitors upcoming dates, who substitutes during absence and how unresolved work stays visible. A dismissed notification should not look like completed inspection. Record an outcome such as awaiting review, moved to a restricted location or handled through the approved disposal process. Do not automatically remove physical quantity merely because a date passed.
Also decide what a date means around the daily boundary. Show the agreed warehouse date and test the transition, including a user in another time zone. An overnight task must not be the only protection if the agreed restriction is needed during dispatch itself.
Demonstrate the exception before accepting the dashboard
Ask for a missing date, a conflicting receipt date, two batches of the same product and an approaching date whose responsible person is absent. Then test a date correction after a warning was created. The queue, stock restriction and history should follow the reviewed policy, not disagree silently.
Put these scenarios in the acceptance criteria and bring sample labels with confidential details removed to a stock-app discussion. The useful deliverable is an explainable date-to-action workflow. It is not a safety certificate or a guarantee that recording dates prevents expired shipments.