Scrap Order Errors in Odoo
When trying to scrap products from inventory, you encounter:
UserError: You cannot scrap a product that is not available in stock.
UserError: The scrap location is not set. Configure a virtual location for scrapped products.
ValidationError: You need to supply a Lot/Serial Number for Product A.
UserError: No journal entry could be created for this scrap order.Fix 1: Product Not Available
# Odoo requires the product to be physically available at the source location
# Check available quantity:
# Inventory > Products > select product > On Hand smart button
# Verify the source location has stock
# If stock is reserved for another order:
# The reserved quantity cannot be scrapped
# First unreserve, then scrap
# To scrap from a specific location:
# When creating a scrap order, set the Source Location
# It must be an internal location with available stockFix 2: Scrap Location Not Configured
# Odoo uses a virtual scrap location to track scrapped items
# Check if scrap location exists:
# Inventory > Configuration > Warehouses > select warehouse
# Under "Technical Information", verify "Scrap Location" is set
# If missing, create one:
# Inventory > Configuration > Locations > Create
# Name: Scrap
# Location Type: Virtual
# Is a Scrap Location: Yes (check this box)
# Or find existing scrap locations:
sudo -u postgres psql -d mydb -c "
SELECT id, complete_name, scrap_location, usage
FROM stock_location
WHERE scrap_location = true;
"Fix 3: Lot/Serial Number Required
# If the product uses lot or serial tracking:
# The scrap order must specify which lot/serial to scrap
# When creating a scrap order:
# 1. Select the product
# 2. Select the Lot/Serial Number
# 3. Set the quantity
# 4. Validate
# If you don't know which lot:
# Check available lots:
# Inventory > Products > select product > Lot/Serial Numbers tab
# Or: Inventory > Products > Lot/Serial Numbers
# To scrap without tracking (for tracked products):
# This is NOT possible — tracking is enforced
# You must specify the lot/serial being scrappedFix 4: Scrap from Manufacturing Order
# Scrapping during manufacturing is different from inventory scrap
# From a Manufacturing Order:
# 1. Open the MO
# 2. Click "Scrap" button
# 3. Select which component or finished product to scrap
# 4. Set quantity and reason
# 5. Validate
# The scrap is linked to the MO for cost tracking
# The scrap location receives the items
# Cost is allocated to the manufacturing orderFix 5: Accounting Entries for Scrap
# If scrap validation fails with accounting errors:
# Check product category accounting configuration:
# Inventory > Configuration > Product Categories > select category
# Account Properties tab:
# - Stock Valuation Account (for automated valuation)
# - Stock Input Account
# - Stock Output Account
# The scrap move uses:
# Debit: Scrap Expense Account (or Stock Valuation decrease)
# Credit: Stock Valuation Account
# Configure scrap expense account:
# If using automated valuation:
# Product Category > Accounting > Stock Scrap Account
# Set to an expense account like "Inventory Scrap Expense"
# Check valuation method:
# Product Category > Inventory Valuation > Automated
# Costing Method > Standard Price, FIFO, or AverageFix 6: Scrap and Inventory Valuation
# Scrapping affects inventory valuation:
# - Standard: scrap at standard cost
# - Average: scrap at current average cost
# - FIFO: scrap at FIFO cost
# If the scrap value seems wrong:
# Check the product's current cost:
# Product > General Information > Cost
# Check the generated journal entry:
# Scrap Order > Journal Entry smart button
# Verify the debit/credit amounts match expected costScrap Order Checklist
| Check | Requirement |
|---|---|
| Stock available | Product must be in the source location |
| Scrap location exists | Virtual location with scrap=True |
| Lot/Serial | Required if product has tracking |
| Accounting accounts | Product category must have valuation accounts |
| User permissions | User needs Inventory Manager role |
Prevention
DeployMonkey's AI agent configures scrap locations, accounting entries, and tracking requirements during setup. The agent validates scrap prerequisites before processing to prevent configuration-related failures.