Demand Forecasting in Odoo Inventory#
Odoo's replenishment module can suggest order quantities based on historical sales velocity, current stock levels, and vendor lead times - moving from reactive "reorder when empty" to proactive demand-driven planning.
Forecasted Stock View#
Inventory → Products → [Product] → Forecasted:
This view shows:
- On Hand: current physical stock
- Incoming: confirmed POs and MOs not yet received
- Outgoing: confirmed SOs and MOs requiring this product
- Forecasted Quantity: on hand + incoming − outgoing over time
The timeline graph shows the projected stock level day by day - stockouts appear as the line crossing zero.
Setting Up Replenishment Based on Forecast#
Inventory → Operations → Replenishment:
Odoo lists products where the Forecasted Quantity drops below the configured minimum. For each product:
- Quantity to Order: auto-calculated to bring forecast back to maximum
- Vendor: selected from vendor list
- Scheduled Date: based on vendor lead time
Confirm Selected → Odoo creates PO drafts for all suggested replenishments.
Sales Velocity Calculation#
Odoo calculates average daily demand from historical sales:
- Look-back period: configurable (default: last 90 days of confirmed SOs)
- Daily demand = total units sold / number of days in period
This average is used to project future demand for the forecast horizon.
Safety Stock Configuration#
To protect against demand spikes and supply delays, configure safety stock:
- Min Quantity = Safety Stock + (Average Daily Demand × Lead Time)
- Example: 5 units/day demand, 7-day lead time, 3 days safety = 5×7 + 5×3 = 50 units minimum
Odoo triggers replenishment when stock hits the minimum - ensuring the safety stock buffer is never depleted under normal conditions.
Make-to-Order vs. Make-to-Stock#
MTO (Make to Order): produce or purchase only when a sale order is confirmed → zero holding cost, but longer lead time for customers.
MTS (Make to Stock): maintain a stock buffer based on forecast → shorter customer lead time, but holding cost and risk of overstock.
Configure per product: Product → Inventory tab → Route: select MTO or MTS (or both for mixed strategy).
Replenishment Frequency#
Run the replenishment scheduler:
- Automated: Odoo runs the scheduler daily (configurable cron)
- Manual: Inventory → Operations → Replenishment → Run Scheduler
After running: review the suggested orders, adjust quantities, confirm.
ABC-Based Review Cadence#
Combine with ABC classification:
- A items: daily replenishment review (high value, can't afford stockouts)
- B items: weekly review
- C items: monthly review
Set different scheduler frequencies per product category or review manually on cadence.

