- Byte Legions
- Odoo Knowledge
Most manufacturers treat scrap, waste, and rework as loose, interchangeable terms. On the production floor, that is a costly habit. Each one carries a different financial weight, requires a different workflow in Odoo 19, and tells a different story about your operational health. Getting them straight is not just semantics: it is the foundation of accurate costing, clean inventory records, and a reliable Odoo process automation setup that actually reflects what is happening inside your factory.
As an Odoo functional consultant working with manufacturers across industries, one of the most common gaps I see during implementations is this: businesses have Odoo running, but their scrap, waste, and rework flows are lumped together under a single process that does not align with what Odoo 19 is designed to do. The result is inflated inventory values, inaccurate production costs, and quality issues that never get traced back to their source.
This article breaks down each concept clearly, walks through how Odoo 19 handles them natively, and gives you a practical framework for deciding which path to take when something goes wrong on the line.
Why Confusing These Three Terms Is Costing Your Factory Money
Here is a scenario that plays out in factories every week. A batch of finished units comes off the line with visible defects. The production team drops them into a scrap bin, the inventory supervisor creates a scrap order, and the cost of those units disappears into a loss account. Nobody asks whether those units could have been reworked. Nobody tracks how much raw material was actually wasted versus how much was legitimately consumed. Scrap counts rise, cost reports look bad, and management has no idea where to intervene.
The issue is not that scrap was created. The issue is that three distinct manufacturing events, a recoverable defect, a planned process loss, and an irrecoverable write-off, are all being handled through the same channel. Odoo 19 has separate, well-designed tools for each. Using the right one gives you real data to act on.
Scrap, Waste, and Rework: Core Definitions in the Odoo 19 Context
Before diving into configuration steps, it helps to anchor these definitions to what Odoo 19 actually models.
What Scrap Actually Means in Odoo 19 Manufacturing
In Odoo 19, scrapping a product is a deliberate, irreversible action. You are declaring that a component or finished product is no longer usable, unsellable, and cannot be recovered through any rework process. When you create a scrap order, Odoo removes the item from physical inventory and moves it to a virtual location called Virtual Locations/Scrap. This location does not represent physical storage: it is a tracking mechanism that keeps your stock counts accurate and generates a corresponding accounting entry to record the loss.
Scrap can be triggered on a component during an active manufacturing order, on a finished product before it leaves the facility, or on existing warehouse stock directly from the Inventory module. The defining characteristic: once validated, the item is removed from both your physical inventory and its valuation in your books.
Rework: Giving Defective Output a Second Chance in Production
Rework is what happens when a product or component has a defect that can be corrected. Instead of writing it off, you route it back through production to fix the issue and bring it up to specification. In Odoo 19, rework is handled through a standard manufacturing order configured for the purpose, where you can assign the right operations, additional components, and work center time needed to return the unit to standard.
The critical difference from scrap: the product still has value. It is recoverable. The extra labor, machine time, and any additional materials consumed during rework need to be captured separately, because they represent an added production expense that directly impacts your true unit cost.
Waste: The Silent Loss Most Manufacturers Never Properly Record
Waste in manufacturing refers to the inevitable material loss that occurs during a production process. Cutting, trimming, mixing, and forming operations all consume raw material that does not end up in the finished product. In Odoo 19, expected waste at the component level is managed through the Bill of Materials using a scrap percentage field on individual component lines. This tells Odoo to reserve and consume a defined percentage of additional material beyond the net quantity that ends up in the finished unit.
The key insight here: waste is a planned, expected loss built into your BoM. Scrap and rework are unplanned losses caused by defects, damage, or process failures. Treating expected process waste as scrap inflates your scrap metrics and distorts your quality reporting entirely.
How Odoo 19 Handles Scrap: Workflow and Configuration
Scrap Orders in the Manufacturing Module: Step by Step
To scrap a product during manufacturing in Odoo 19, navigate to Manufacturing, then Operations, then Manufacturing Orders. Open the relevant order, click the Actions icon, and select Scrap from the dropdown menu. A Scrap Products dialog opens where you select the product (component or finished good), enter the quantity being scrapped, and confirm the source and destination scrap locations.
If you are operating in Shop Floor mode, the same action is available directly from the work order interface. Operators can scrap defective components without leaving the production screen, which keeps the scrap event tied to the correct order and work center for traceability. Once the scrap order is confirmed, the item is removed from available inventory immediately and the stock move is logged with a timestamp.
To review all scrap orders across your facility, navigate to Inventory, then Operations, then Scrap. Each entry records the date, product, quantity, source document, and scrap location, giving supervisors a clean audit trail.
Accounting Entries Behind a Scrap Operation
When a product is scrapped, Odoo 19 generates a journal entry that debits a configured loss account and credits the inventory asset account. The value applied depends on your product costing method: AVCO pulls the current weighted average cost at the time of scrapping, while standard price uses the defined standard cost.
For scrapped products to appear on your Profit and Loss report, the loss account must be explicitly set on the scrap location configuration. A common setup is to map this to an Expenses category such as 600000 Expenses, so every scrap event hits your P&L directly and gives management real visibility into material losses over time. Without this configuration, scrap costs are absorbed silently and never surface in financial reporting.
Managing Rework in Odoo 19: Routing Defects Back Through Production
Creating a Rework Manufacturing Order and Tracking Its Costs
Odoo 19 does not include a standalone rework module in the base installation. Rework is handled through standard manufacturing orders, but with intentional configuration choices that make it function as a proper rework workflow rather than a new production run.
The recommended approach is to create a dedicated BoM for rework operations. This BoM lists only the additional components and operations needed to correct the defect, not the full component structure for producing the item from scratch. You then raise a manufacturing order against this rework BoM, set the finished product to the same item being corrected, and track work through Shop Floor as you would for any regular production run.
For cost traceability, set up a dedicated work center specifically for rework operations. This lets you isolate rework labor and machine time in your production cost reports. At month end, you can immediately see how much your quality failures are costing across the facility, which work centers are generating the most rework, and whether those figures are trending in the right direction after process improvements.
If you want to understand how BoM structure and routing choices affect rework efficiency and production flow, the deeper guide on Odoo 19 BoMs and Shop Floor efficiency covers the configuration logic in detail.
Waste Tracking in Odoo 19: BoM Efficiency and Component Losses
Expected material waste belongs in your Bill of Materials, not your scrap orders. On each component line in an Odoo 19 BoM, you will find a Scrap field where you enter the expected loss percentage for that material. If your fabrication process consistently trims away 6% of a sheet metal component, entering 6% there means Odoo automatically reserves and consumes the correct quantity on every manufacturing order, reflecting your real-world material usage without any manual adjustment.
This keeps your scrap orders focused on genuine exceptions: damage, contamination, or defects that fall outside your normal process range. When actual consumption on a manufacturing order exceeds what the BoM planned for, that gap is a real signal. You can use manufacturing efficiency reports and work order analysis to identify which operators, work centers, or production runs are generating unplanned losses, and address them through process correction or equipment maintenance before the losses compound.
If you are unsure whether your current BoMs accurately capture your real waste rates, or if your scrap reports are inflated because expected losses are being recorded manually, this is a configuration review worth doing before your next period close. Book a Free Consultation with the Byte Legions team and we will audit your BoM structure, scrap account mapping, and rework workflow to identify exactly where your setup is creating blind spots.
Scrap vs Rework: A Decision Framework for Production Managers
When a defective unit comes off the line, production managers need a fast, consistent decision process rather than a judgment call made differently by every shift supervisor.
Start with recoverability. Can the defect be corrected through additional processing, repair, or adjustment without compromising the product specification? If yes, rework is the appropriate action. If the product cannot be brought back to spec in any practical way, scrapping is the correct call.
Next, evaluate the cost trade-off. The total cost of rework, covering additional labor, machine time, and any extra materials, should be weighed against the finished product’s value. When rework cost approaches or exceeds the product’s selling price minus margin, it is often more economical to scrap and produce a replacement unit through normal production.
Finally, determine whether the defect is isolated or systemic. A single defective unit in an otherwise clean batch is a rework candidate. If you are seeing the same defect across multiple consecutive units, you are looking at a process or material problem that needs root cause analysis before more units are routed to rework. In Odoo 19, quality alerts raised directly from the Shop Floor interface are the right tool for flagging systemic issues and escalating them to the quality team without stopping the production flow.
Financial Implications Across All Three Scenarios
Each of the three events hits your accounts differently, and understanding that difference is essential for reading your manufacturing cost reports accurately.
Waste that is captured through BoM scrap percentages is absorbed into standard production cost. It shows up as increased component consumption on the manufacturing order but does not appear as a separate cost line, because it was already factored into your product’s planned cost.
Scrap generates a direct loss. The inventory value of the scrapped item is deducted from your stock and transferred to a loss account. This reduces your inventory asset balance and increases your production losses on the P&L for that period.
Rework creates additional production cost on top of the original manufacturing order. You are effectively paying twice to produce one acceptable unit: once for the original run, and again for the correction. That additional cost is only visible if you have a dedicated rework manufacturing order capturing it. Without one, the extra labor and materials disappear silently into general overhead and never surface as a quality cost.
Best Practices for Odoo 19 Process Automation Setup in Manufacturing
Getting this right is largely about discipline in configuration and team training from day one:
Reserve scrap orders for irreversible losses only. If there is any chance the material can be repaired, reprocessed, or reused, route it to a rework order or back to stock through an internal transfer.
Base your BoM waste percentages on actual production data, not estimates. Review them quarterly and adjust as your processes improve, materials change, or equipment is upgraded.
Use dedicated work centers and BoMs for rework operations. This is the only reliable way to produce meaningful rework cost data in your manufacturing reports.
Map your scrap location’s loss account to a meaningful expense category in your chart of accounts. Leaving it on the system default often makes scrap costs invisible at the financial reporting level.
Train your production team to use the correct workflow for each scenario. The most technically correct Odoo 19 configuration will still produce bad data if operators default to raising a scrap order for every defect that comes off the line.
Frequently Asked Questions (FAQs)
Can I undo a scrap order in Odoo 19 after it has been validated?
Scrap orders in Odoo 19 cannot be reversed through the standard interface once validated. If a product was scrapped by mistake, the correct approach is to create an internal transfer moving the product from the Virtual Locations/Scrap location back to the appropriate stock location, combined with a manual reversal of the accounting entry in the Accounting module. This preserves the audit trail while correcting both the inventory and the financial records.
What is the difference between a scrap order and an unbuild order in Odoo 19?
An unbuild order disassembles a finished product back into its component parts, which are then returned to available stock. It is used for product returns, recalls, or when a unit needs to be fully disassembled to recover the materials. A scrap order removes a product from inventory entirely, without recovering any components. Use unbuild when you want the parts back; use scrap when the entire unit is an irreversible write-off.
How do I track rework costs separately from regular production costs in Odoo 19?
Create a dedicated BoM for rework operations that includes only the additional components and correction steps. Assign a separate work center labeled specifically for rework, and raise manufacturing orders against this BoM for each rework event. All labor costs, tracked through work center rates, and additional material costs will then appear under the rework manufacturing order, giving you a clean, separate cost total in your production reports.
Can Odoo 19 automatically account for expected material waste in a production run?
Yes. Each component line on a BoM includes a Scrap field where you enter the expected waste percentage for that material. Odoo uses this figure to increase the quantity consumed on every manufacturing order created from that BoM. If your mixing process consistently loses 7% of a liquid ingredient through evaporation, entering 7% in the Scrap field on that component line means Odoo automatically plans and consumes the correct quantity without any manual adjustment per order.
Where can I see the total value of scrapped products in Odoo 19 financial reports?
Scrapped product values appear on the Profit and Loss report under the expense account configured on the Virtual Locations/Scrap location, provided that account mapping has been set correctly. You can also review individual scrap orders under Inventory, then Operations, then Scrap for a transaction-level log. For aggregate scrap volume by product, navigate to Inventory, then Configuration, then Locations, remove the Internal filter, and open the Virtual Locations/Scrap location to view cumulative quantities scrapped per item.






Comments are closed