Odoo Inventory + MRP EOQ
Odoo’s reordering rules expose three fields per product: Min Quantity, Max Quantity, and Quantity Multiple. There is no Wilson Q* solver in either Odoo 17 or Odoo 18 (the current LTS lineage). The EOQ-equivalent workflow: set Min to lead-time-demand + safety stock, set Max to Min + Q*, and set Quantity Multiple to a case-pack rounder if the supplier ships in cases.
Where the rule lives
- Inventory > Configuration > Reordering Rules. One rule per product per warehouse.
- Min Quantity: when stock falls to or below this, a replenishment trigger fires.
- Max Quantity: top-up target; the PO line is set to (Max minus on-hand minus incoming), rounded up to the next Quantity Multiple.
- Quantity Multiple: case-pack rounding. If MOQ binds, set this to MOQ and the PO line becomes max(MOQ, EOQ).
Wiring EOQ into the reordering rule
Compute Q* externally. Set Min = ROP (lead-time demand plus safety stock), Max = Min + Q*, Multiple = case-pack (or 1 if no pack). The auto-PO will then size each line at Q* rounded to the case. The forecast-driven replenishment view (under Inventory > Operations > Replenishment) lets you see the predicted PO before it’s confirmed, which is the right place to sanity-check a Q* refresh.
Pricing reality
Community edition free (self-hosted). Odoo Online starts at $0 for one app, then $24.90 per user per month (Standard) or $37.40 per user per month (Custom) for multi-app deployments. Odoo 17 (Nov 2024) and Odoo 18 (Oct 2025) keep reordering rules min/max plus 'Quantity multiple' as the EOQ-adjacent lot-sizing mechanism; no native Wilson Q* solver - buyer computes Q* externally and pastes it into Quantity Multiple.