The inspection that happens after the goods are used
Here’s how quality goes wrong in most small and mid-sized companies. The inspection exists. It’s on a clipboard by the dock, or in a spreadsheet the quality lead updates on Fridays. Meanwhile the receiver has already booked the goods into stock, production has already used half the lot, and the failed result turns up three days later as a sad email.
The fix isn’t more checking. It’s putting the check in the path of the transaction so the receipt, the job or the delivery can’t finish until the result exists.
Building a quality management system inside the ERP, not beside it
A standalone QMS tool is fine for documents and audits. The trouble is it doesn’t know when stock moves. Your ERP does.
ERPNext is well equipped here. Quality Inspection is standard and can be required before purchase, before delivery or during manufacturing. Templates hold parameters and acceptable ranges. The Quality module adds Non Conformance, Quality Action, Quality Procedure and Quality Review. Most of our ERPNext work in this area is configuration plus a few doc_events that turn a rejected inspection into a hard stop and a Non Conformance record.
Odoo splits by edition. The Quality app, with quality points, checks and alerts, is Enterprise. On Community there’s nothing built in, so we generate a lean inspection model, a quarantine location and a validation override. The code on this page is the core of it. If you’re choosing between the two for a quality-heavy operation, the ERPNext vs Odoo comparison is worth ten minutes.
Worked example: moisture limits for a food ingredients importer
Picture an importer of rice and pulses running Odoo Community. A container arrives with 18 lots. Grain over 12% moisture goes mouldy in storage, so the quality lead, Chidi, samples one bag per lot.
What the prompt asked for:
- Products flagged “requires inspection” can’t be received until every lot on the receipt has a passing reading.
- A reading above the product’s limit is a fail. The limit defaults to 12% and can be changed per inspection.
- Failed lots open a non-conformance for Chidi with the supplier and container number.
Seventeen lots read between 10.8% and 11.9%. Lot 7 reads 13.4%. When the receiver clicks Validate, Odoo refuses and names lot 7. Now there are two legitimate paths: re-sample it (sometimes the first bag was from the wet corner of the container) or remove lot 7 from the receipt and raise a return. What doesn’t happen is 13.4% grain quietly sitting next to good stock for a month.
It adds maybe 20 minutes of sampling per container. Chidi was doing that anyway. She just wasn’t able to stop anything. The non-conformance record and a quarantine location come with the same addon, so the supplier conversation starts with a lot number and a reading instead of a vague complaint.
What we won’t pretend a module can do
Make you certified. We don’t hand out ISO certificates and neither does software. We generate the records. You run the system.
Replace judgement on borderline results. A reading of 12.05% against a 12% limit is a conversation. Give someone the right to release a lot with a reason, and log it.
Inspect everything, always. Sampling plans exist for a reason. If your team has to test every carton of a supplier with a clean two-year record, they’ll start faking readings. Skip-lot rules are better than fiction.
Carry your whole document library. Controlled procedures and training records can live in the ERP, but if you already have a working document system, link to it.
Where quality connects
Inspections sit on top of receipts from purchase management, and in-process checks belong on work orders in manufacturing. Quarantine and release are really stock movements, so inventory management should be solid first. Food businesses in particular should read our notes on ERP for food and beverage companies, where lot traceability matters as much as the test itself. Odoo users can see how we extend the standard apps in Odoo customization.