Run a mock recall before you choose anything
Here’s the exercise we suggest to every food business evaluating an ERP. Pick a raw material lot you received three months ago. Time how long it takes to list every finished batch that used it, every customer who received those batches, and how much is still on your shelves.
If the answer involves exports and VLOOKUPs, that’s your first module. Everything else, from recipe costing to sales dashboards, can wait until this works.
Odoo and ERPNext don’t trace the same way
This is one of the few areas where the two platforms feel quite different out of the box.
Odoo has lots and serial numbers with expiration, best-before, removal and alert dates per lot, FEFO as a removal strategy on locations, and a traceability report that follows a lot upstream to its components and downstream to deliveries. For many food businesses that covers the basics well. Custom work tends to focus on quality holds, customer shelf-life rules and recall actions.
ERPNext has batch-tracked items with expiry dates and shelf life, batch selection by expiry, and manufacture Stock Entries that record which batches went into which output batch. The information for a full trace is all there in the stock ledger. Depending on your version, though, the standard reports stop short of a single recall view, so a trace report plus a one-step stock block is often the first thing we build.
If you’re still choosing, our ERPNext vs Odoo comparison goes into cost and hosting, which usually matter as much.
One bad lot of cocoa powder, worked through
A dairy receives 500 kg of cocoa powder from a supplier as lot C-4471. Over two weeks it’s used like this:
- 180 kg in batch B-0912, producing 3,600 bottles of chocolate milk.
- 200 kg in batch B-0915, producing 4,000 bottles.
- 120 kg still in the dry store.
Then the supplier calls. C-4471 may contain an undeclared allergen.
Sam in quality enters the lot number. The trace shows both finished batches, the 120 kg in store, and 22 delivery notes across 9 customers. B-0912 has fully shipped. B-0915 has 1,150 bottles still in the cold store and 400 on a truck that left at 6am.
Sam clicks “block”. The 120 kg of cocoa and 1,150 bottles are moved to a quarantine status that stops them being picked. Sales sees the 9 customers with contact details and quantities, and transport is told about the truck. Every action is logged with Sam’s name and a timestamp, which is exactly what an auditor will ask for later.
FEFO is a rule, pickers are people
First-expiry, first-out only works if the picker takes the batch the system suggests. On a busy morning they won’t, unless the scanner stops them.
The picking changes we usually generate for food warehouses do three things. They reject a scan of any batch other than the suggested one, unless a supervisor overrides with a reason. They check the customer’s minimum remaining shelf life before allocating, so a supermarket order never gets stock with 18 days left when their rule says 21. And they surface short-dated stock daily, so sales can move it through outlets before it becomes a write-off. That sits on top of warehouse management and inventory management.
What an ERP won’t do for your food safety plan
Be sceptical of anyone who says software makes you compliant. Your HACCP plan, supplier approval process, cleaning records, allergen controls and audits are yours to run. A module can make them easier to evidence. Temperature logs attached to batches, QC results that release holds and allergen changeover checks on the manufacturing module all help. They don’t replace the people doing the work.
For how the generated code is structured, see ERPNext custom module development or Odoo module development.