All posts
Functional5 min read

Demand Forecasting and Replenishment Planning in Odoo

Use Odoo replenishment forecasting to plan purchases based on historical sales velocity and lead times - ensuring stock arrives before stockouts occur without excessive overstock.

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.

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free