Replenishment Failures in Odoo
When automatic replenishment does not create purchase orders or manufacturing orders:
Issues:
- Reordering rules exist but no PO/MO is generated
- Product goes below minimum stock with no replenishment
- MTO (Make to Order) route doesn't trigger procurement
- "Run Scheduler" produces no results
- Replenishment report shows nothing to orderFix 1: Reordering Rule Configuration
# Check the reordering rule:
# Inventory > Configuration > Reordering Rules
# Or: Product > Reordering Rules smart button
# Required settings:
# - Product: correct product/variant
# - Location: usually WH/Stock (internal location)
# - Minimum Quantity: stock level that triggers reorder
# - Maximum Quantity: target stock level after reorder
# - Route: Buy, Manufacture, or specific route
# - Active: must be checked
# Example:
# Min: 10, Max: 50, On Hand: 8
# Should trigger PO for 42 units (50 - 8 = 42)
# Common mistakes:
# - Min = 0 (only triggers when stock is negative)
# - Max = Min (orders only difference, may be 0)
# - Wrong location (rule on WH/Input instead of WH/Stock)
# - Rule is archivedFix 2: Procurement Scheduler Not Running
# The scheduler cron triggers replenishment checks
# Check if the scheduler is running:
# Settings > Technical > Scheduled Actions
# Find: "Procurement: run scheduler" or "Run Reordering Rules"
# Verify: Active = True, Next Execution Date is not in the past
# Run manually:
# Inventory > Operations > Run Scheduler
# Or: Inventory > Operations > Replenishment > "Order Once" button
# In Odoo shell:
env['procurement.group'].run_scheduler()
env.cr.commit()Fix 3: Product Route Configuration
# The product must have the correct route for replenishment:
# Product > Inventory tab > Routes
# For purchased products: enable "Buy"
# For manufactured products: enable "Manufacture"
# For MTO: enable "Replenish on Order (MTO)"
# The reordering rule's route must match:
# If the rule says "Buy" but the product only has "Manufacture" route
# → no replenishment happens
# Check vendor is set for "Buy" route:
# Product > Purchase tab > Vendors list
# Must have at least one vendor with price and lead timeFix 4: MTO (Make to Order) Not Working
# MTO creates procurement when a sales order is confirmed
# NOT based on stock levels (that's MTS with reordering rules)
# For MTO to work:
# 1. Product > Inventory > Routes > enable "Replenish on Order (MTO)"
# 2. Also enable "Buy" or "Manufacture" (MTO needs a supply route)
# 3. Confirm a sales order → PO or MO should be auto-created
# If MTO doesn't trigger:
# Check the sale order's procurement status:
sudo -u postgres psql -d mydb -c "
SELECT sol.product_id, pt.name, sol.product_uom_qty,
sol.route_id, sol.order_id
FROM sale_order_line sol
JOIN product_template pt ON sol.product_id = pt.id
WHERE sol.order_id = SO_ID;
"
# The sale order line should show the MTO route
# If route_id is empty, MTO is not applied to this lineFix 5: Warehouse and Location Mismatch
# Reordering rules are location-specific
# The rule must be on the same location where stock is tracked
# Common issue: rule on "WH/Stock" but product is in "WH2/Stock"
# Multi-warehouse setups need rules per warehouse
# Check:
# Inventory > Configuration > Reordering Rules
# Verify the Location column matches your active warehouse
# For each warehouse, create separate reordering rulesFix 6: Lead Time and Scheduling
# The scheduler respects lead times:
# If vendor lead time is 14 days and minimum stock = 10
# The scheduler triggers when:
# Forecasted stock in 14 days < 10
# Check product lead times:
# Product > Purchase tab > Vendor > Delivery Lead Time
# Product > Inventory tab > Customer Lead Time
# Product > Inventory tab > Manufacturing Lead Time
# If lead times are set very long, replenishment triggers earlier
# If set to 0, it only checks current stock levelsFix 7: Check Scheduler Errors
# The scheduler may fail silently
# Check Odoo logs for procurement errors:
# grep -i "procurement\|scheduler\|reorder" /var/log/odoo/odoo.log | tail -30
# Common scheduler failures:
# - No vendor set on product (Buy route but no supplier)
# - No BOM defined (Manufacture route but no BOM)
# - No price on vendor line
# - Product is archivedPrevention
DeployMonkey's AI agent validates reordering rules, vendor configurations, and route setups during product configuration. The agent monitors scheduler execution and alerts on replenishment failures.