Skip to Content
Retour aux modules
Inventory

Anti-Waste: Automatic Expiry Markdowns

Mark down lots that are close to their expiry date, print discounted shelf labels and measure the waste you avoid.

20.0 19.0 18.0 17.0 16.0
Anti-Waste: Automatic Expiry Markdowns
Anti-Waste: Automatic Expiry Markdowns

Présentation du module

Nalios
Odoo Gold Partner · Belgium

/ Odoo 20 · Inventory

Sell it before it expires

Every night, each lot close to its expiry date gets the markdown you decided: -20 % five days before, -40 % two days before, -60 % the day before. Shelf labels, the Point of Sale and your webshop follow, and a report shows how much waste you avoided.

Rules per category or product Updated every night Shelf labels POS & eCommerce French included

What it does

Markdowns that follow the calendar

Built for grocers, bakeries, delis and organic shops that track their fresh products by lot with an expiry date. No more walking the aisles with a list and a sticker gun.

Rules you set once

Per product category (subcategories included if you want) or per product. Each rule has tiers: N days before the date, X % off. A product rule always wins over a category rule.

Use by or best before

Each rule counts down to the expiration date (use by) or to the best before date of the lot, as you choose.

A list of what to act on

Inventory > Anti-waste > Near expiry: lot, product, date, days left, quantity in stock, value at risk, current markdown and markdown price. Expired lots still in stock show in red.

Updated every night

A scheduled action recomputes every lot in stock (internal locations). Running it twice the same day changes nothing. You can also run it on demand after you change a rule or receive goods.

Near expiry list: lots with their expiry date, days left, quantity, value at risk and markdown

In the shop

Rules on one side, labels on the other

Select lots in the list and print shelf labels: product, regular price struck through, markdown price, use by date, lot and product barcode. Or send the shop manager a to-do for each lot (automatically too, if you wish).

A markdown rule with three tiers

A markdown rule with three tiers

Anti-waste shelf labels (A4, three per row)

Anti-waste shelf labels (A4, three per row)

At the till

The cashier scans, the markdown follows

With the free Point of Sale bridge (installed automatically when you use the Point of Sale), the lot chosen on a line decides its discount.

Lot in, discount on

Enter, select or scan the lot as usual: the line gets the markdown of that lot as a discount. Change the lot and the discount follows.

Clearly labelled

The order line and the receipt show Anti-waste -X %, so customers see why the price is lower. The markdown is saved on the order line.

Works offline

Markdowns are loaded with the products when the session opens, so a network cut does not stop the discounts.

The cashier keeps control

A discount typed by hand replaces the markdown: the line is then no longer flagged as anti-waste.

Point of Sale order and receipt with the Anti-waste -20 % and -70 % lines

Online

A last chance page for your webshop

With the free eCommerce bridge (installed automatically with eCommerce), customers find the deals and get them in their cart.

Last chance ribbon

Products with marked-down lots in stock show Last chance -X % on their picture in the shop.

Last chance page

/shop/last-chance lists only those products, and a Last chance menu entry is added to your website.

Real quantities

The product page shows how many units are marked down and until when. In the cart, the quantity is spread over the lots in stock, closest date first, and each unit gets the markdown of its lot.

Shipped first

With the FEFO removal strategy on your fresh categories, the delivery then ships those same lots first.

Webshop Last chance page with Last chance ribbons on the products

Sales orders

Delivered lots, discounted lines

Odoo does not let you choose a lot on a quotation line: the lot is known when the delivery is validated. At that moment, the markdown of the lots shipped is applied on the sales order line (weighted average if several lots) and noted in the chatter, as long as the line is not invoiced yet and has no bigger discount.

Sales order: the markdown of the delivered lots on the order lines

Reporting

Waste avoided, in numbers

Inventory > Anti-waste > Waste avoided compares, by period and product category, what you sold with a markdown with what you still scrapped after expiry, in quantity and in value at cost. Sales orders, Point of Sale and webshop all count.

Value sold with markdown vs scrapped after expiry, per month

Value sold with markdown vs scrapped after expiry, per month

Quantities and values per product category

Quantities and values per product category

Setup

Ready in ten minutes

1

Lots and dates

Inventory settings: enable Lots & Serial Numbers and Expiration Dates. Track your fresh products by lot with expiration dates.

2

FEFO on fresh categories

Set the First Expiry First Out removal strategy on the product categories concerned, so the oldest lots leave first.

3

Create your rules

Inventory > Anti-waste > Markdown rules: one per category or product, with your tiers. Choose the shop manager in the settings.

4

Print and sell

Every morning, open Near expiry, print the shelf labels. The till and the webshop apply the markdowns by themselves.

Inventory settings: Anti-waste markdowns section

Under the hood

How it works

TiersThe tier with the fewest days that still covers the days left wins. With D-5 20 %, D-2 40 %, D-1 60 %: 3 days left = -20 %, 1 day or the date itself (D-0) = -60 %.
Expired lotsOnce the date is passed, a lot gets no markdown: it is listed as Expired so you remove it from the shelves (and the webshop no longer counts it).
Which lotsLots of products with expiration dates, in stock in internal locations. A lot that leaves the stock is reset at the next update.
PricesMarkdown prices on labels and in the list are the sales price of the product, taxes included, minus the markdown.
Modulesexpiry_markdown (this app), plus two free bridges installed automatically: expiry_markdown_pos (Point of Sale) and expiry_markdown_website (eCommerce).
DependenciesInventory, Sales and Expiration Dates (product_expiry). Community compatible, no Enterprise module needed.
Access rightsTwo groups: Anti-Waste User (list, report, labels; given to Inventory users) and Manager (rules; given to Inventory administrators). Multi-company: rules can be per company or shared.

FAQ

Good to know

Can I choose the lot on a quotation?

Not in standard Odoo, so the markdown of a backend sales order is applied when the delivery is validated, on lines not invoiced yet. You can turn this off in the settings.

Is a markdown added to a customer discount?

Never cumulated: on a sales order line, the markdown is applied only when it is higher than the discount already on the line.

Is the online discount reserved?

No. It is computed from the stock available when the cart changes. Until the order is confirmed, the same lots can be sold at the counter. Confirmed online orders keep the price the customer saw.

When does the Point of Sale see a new markdown?

When the session is (re)loaded, after the nightly update or an update run on demand.

Does it change my sales settings?

Installing it turns on Discounts on sales order lines, so the markdown is visible on your orders.

Which languages?

English and French (also used for fr_BE).

A question? A problem? Talk to the people who built it.

We will get back to you within 8 business hours.

Contact us

Email us directly at

[email protected]

Published by

Nalios — Odoo Gold Partner, Belgium — nalios.be