The floor runs on paper even when the office doesn’t
Most manufacturers we talk to aren’t short of software. Sales orders, purchasing and the general ledger are usually in decent shape. The trouble starts the moment a work order is released. The planner’s view says 400 brackets are in progress. The floor knows 26 of them are sitting in a red tote next to the press brake, and half of those can be saved.
That information matters. It changes material requirements, it changes the delivery date the customer was promised, and it changes what the job actually cost. If it lives on a clipboard, your ERP is running a slightly fictional factory.
What ERPNext and Odoo already do on the floor
Before anyone builds anything, it’s worth knowing how much is already there.
ERPNext covers BOMs with operations, Routings, Workstations with hour rates, Production Plans that explode demand into Work Orders and Material Requests, and Job Cards with time logs. There’s a Downtime Entry DocType, a scrap items table on the Job Card, process loss on the BOM, and proper Subcontracting Orders and Receipts since v14. Quality Inspections can be required on receipt, during manufacture or on delivery.
Odoo has manufacturing orders split into work orders, work centres with OEE and loss reasons, unbuild orders, scrap from the MO, and by-products. The shop floor tablet view is good. Quality control points and PLM with engineering change orders are Enterprise apps, so budget for that if you need them.
If your process is “make the thing the BOM says, using the routing”, you may not need a custom module at all. Some settings and a couple of Print Formats will get you there.
Where manufacturers usually end up customising
The requests we see from manufacturing teams are rarely exotic. They’re the places where the standard model is one level too simple:
- Reject reasons with consequences. Every reject carries a reason code as well as a quantity, and the code decides whether the part is scrapped, reworked or returned to the supplier.
- Rework as a real loop. A new job card for the rework operation, with its own time, feeding back into the original work order’s cost.
- Subcontractor tracking by batch. How many went out, how many came back, how many failed incoming inspection, per dispatch.
- Customer-specific inspection sheets. One customer wants three dimensions checked on every tenth part. Another wants a signed certificate with each shipment.
For those, a proper manufacturing module with job cards and routings plus a quality management module for inspections and non-conformance is usually the right split.
Worked example: rejects at a bending station
Take a sheet metal shop running a work order for 400 brackets. Steel and consumables cost $3.20 a bracket. At the bending station, Dev rejects 26 parts. He taps “reject” on the tablet, picks “springback out of tolerance” for 18 and “cracked on bend” for 8.
The module does the rest. The 8 cracked parts are scrapped, so $25.60 of material is booked against the work order. That’s 2% of the batch, under the 5% threshold, so no alert. The 18 reworkable parts get a rework job card at 0.15 hours each, which is 2.7 hours at the $40 workstation rate, so $108 lands on the job cost.
Next week a different coil comes in and the same job scraps 30 of 400. That’s 7.5%. The production manager gets a notification with the coil’s batch number, and purchasing can see which supplier to call. None of it depended on someone’s memory on Friday.
On ERPNext this is a Frappe app with a Reject Log child table on Job Card, a controller hooked through doc_events, and a Script Report for scrap by reason. Our page on ERPNext custom module development shows how that app is laid out. On Odoo it’s an addon that _inherits mrp.workorder, covered on the Odoo module development page.
Requests we’d talk you out of
A few ideas come up often and tend to go badly. A finite capacity scheduler with drag-and-drop Gantt charts is a product in its own right, and you’ll be happier buying one and syncing it. Real-time machine dashboards need an MES or IoT layer before the ERP sees anything useful. And costing every operation to the second creates data that sits unread. Track the three or four losses that actually move your margin, then add more.
Still choosing a platform? Read our ERPNext vs Odoo comparison first. If you produce food or drink, the food and beverage page covers batch genealogy, which works differently.