Spread the love

Stop Guessing When to Reorder: Reordering Rules in Odoo That Actually Work

Most stock-outs are not surprises. Someone on the floor saw the bin getting low, someone in purchasing meant to raise a PO, and the supplier’s lead time did the rest. By the time a customer order arrives for an item that is not there, the problem is already two weeks old.

The opposite problem is just as common. A buyer gets burned once, starts ordering “a bit extra to be safe,” and six months later the warehouse is full of slow stock that ties up cash and shelf space. Both problems usually have the same root cause: reordering lives in people’s heads and spreadsheets instead of in the ERP.

Odoo has a simple, well-proven tool for this: reordering rules. Set up properly, they tell you what to buy, how much, and when, based on real stock and real demand. Set up badly, they produce a flood of RFQs nobody trusts. Here is how to get them right.

What a reordering rule actually does

A reordering rule is a small instruction attached to a product and a warehouse location. In plain words it says: “When the forecasted quantity of this product in this location drops below the minimum, replenish it back up to the maximum.”

Each rule carries a few key settings:

You can manage all of them in one place from the Replenishment screen in the Inventory app, or open a single product and use its Min/Max button.

Why “forecasted” matters more than “on hand”

The most important detail is that Odoo compares the minimum against the forecasted quantity, not just what is physically on the shelf. Forecasted quantity takes on-hand stock, adds confirmed incoming receipts, and subtracts confirmed outgoing deliveries.

That is what makes the rule smart. If you have 40 units on hand but 35 are already promised to confirmed sales orders, Odoo treats the real position as 5. If a purchase order for 100 units is already on its way, Odoo will not order again. This only works when sales orders, purchase orders, and receipts are confirmed in the system on time. Reordering rules reward a disciplined sales and purchasing flow and punish one that runs on side spreadsheets.

Where teams go wrong

  1. Minimums copied from an old spreadsheet. Numbers set years ago, before demand changed, keep triggering orders for items that no longer move and miss the ones that grew.
  2. Lead times left empty. If the vendor line on the product has no delivery lead time, Odoo assumes goods arrive almost immediately and orders far too late.
  3. Minimum and maximum set to the same number. This creates a tiny order every time one unit is sold, which floods purchasing with small RFQs and pushes up freight costs.
  4. No vendor on the product. A buy route without a vendor means Odoo cannot create an RFQ, and the need quietly sits as an exception.
  5. Rules on everything. Putting automatic rules on thousands of products at once, including one-off and project items, buries buyers in noise and they stop trusting the system.

Setting the minimum: cover the lead time

A practical way to think about the minimum is simple: it should cover what you expect to sell while you wait for the next delivery, plus a buffer for uncertainty.

Make sure the vendor’s delivery lead time is filled in on the product’s purchase tab, and review the purchase lead time settings in your configuration. Odoo uses these to decide when an order must be placed, so wrong lead times will undermine even a perfect minimum.

Setting the maximum: think in order size, not hope

The gap between minimum and maximum decides how big each order is and how often you order. A wide gap means fewer, larger orders. A narrow gap means frequent, smaller ones.

Set it based on how you actually like to buy from that supplier: minimum order quantities, carton or pallet sizes, freight economics, and how much cash you are willing to keep on the shelf. Use the multiple field so orders land on full packs instead of awkward quantities that the supplier will round anyway.

Automatic or manual trigger?

Both are useful, and most companies need a mix.

A good starting point is manual for everything during the first few weeks, then switch the items that keep getting approved unchanged to automatic.

Make the Replenishment screen a daily habit

The Replenishment screen in the Inventory app is where reordering becomes a routine instead of a firefight. It lists products whose forecast falls below their minimum, shows the suggested order quantity, and lets buyers order or snooze in a few clicks. Odoo also suggests manual rules for products that are forecast to go negative, which is a handy way to spot items that need a proper rule.

A short daily review, ten or fifteen minutes for a buyer, is usually enough to keep it clean. Group by vendor or product category to make it faster.

What “good” looks like

A practical 30-day plan

  1. Week 1: Clean the basics. Pick your top-moving products. Check that each has the right vendor, purchase unit, pack size, and a real delivery lead time.
  2. Week 2: Set first rules. Calculate minimums and maximums from recent usage and lead times. Create the rules with a manual trigger so buyers can see suggestions without anything being ordered automatically.
  3. Week 3: Review and tune. Have buyers work from the Replenishment screen every day. Note where suggestions feel too high or too low and adjust those rules.
  4. Week 4: Automate the steady items. Switch reliable, fast-moving products to automatic. Keep manual for expensive and volatile items. Agree who reviews the rules each quarter.

The bottom line

Reordering rules will not fix bad data, but they will turn good data into steady, predictable purchasing. When minimums cover real lead times, maximums match how you buy, and buyers work from one screen instead of five spreadsheets, stock-outs and overstock both start to shrink.

If you want help designing reordering rules, lead times, and a replenishment routine that fits your warehouses and suppliers in Odoo, talk to the SOD Infotech team. We help businesses turn their ERP into the place where buying decisions are actually made.