If you sell anything with a shelf life, turn on expiry tracking for that product and the stock is held as dated batches rather than one number.
Turning it on for a product
Edit the product and enable expiry tracking. From then on, each delivery is received as a batch with its own expiry date, so two deliveries of the same product stay separate.
Leave it off for anything that does not expire. A product without it behaves exactly as before.
Receiving a batch
When you restock a tracked product you are asked for the batch's expiry date. Restock the same product again later and you get a second batch, not a merged total. Your inventory total is the sum of the batches.
Selling
Sales draw from the batch expiring soonest first. Nobody at the counter has to pick, and stock is not left to age behind a fresher delivery.
Expired stock stops counting as sellable. It is still on the record, so it can be written off deliberately rather than quietly vanishing.
Seeing what is coming
Inventory → Expiring lists what is near or past its date, so you can discount it, move it, or write it off while it still has value. Set the warning window per category so a product with a two-year life is not flagged at the same point as one with two weeks.
On the tills
The desktop and mobile tills understand batches, provided they are on a recent build. Update them before you turn expiry tracking on for a busy product, so the shop floor and the admin agree about what is sellable.