Hi everyone,
I’m struggling with a specific case in Odoo (v18, Enterprise on Odoo.sh) and I’d like to know if anyone has managed to configure this without custom development.
👉 Scenario:
- We have a location WH/Pre-Production.
- When a Manufacturing Order (MO) is launched, Odoo creates a picking WH/Stock → WH/Pre-Production (Pick Components).
- In practice, the forklift driver always moves the full box (e.g. 50 units), even if the MO only requires 10.
👉 What happens now:
- After the MO is validated, Odoo consumes only the 10 units.
- The remaining 40 units stay in Pre-Production as free stock.
- The next MO ignores those 40 and triggers a new picking from WH/Stock, leaving leftovers piling up in Pre-Production.
👉 The logic I need:
-
If in Pre-Production we have:
- On Hand > Forecasted (i.e. there is more stock than what is reserved to be consumed),
- then the difference should be considered surplus and should be automatically (or semi-automatically) pushed back to WH/Stock.
👉 What I tried:
- I created a second operation type Return (WH/Pre-Production → WH/Stock).
-
Then I added a push rule with conditions like:
- Forecasted Quantity > 0
- On Hand Quantity > 0
- But Odoo rules only allow comparing against fixed numbers, not against each other.
👉 Question:
Has anyone found a standard way to handle this kind of “return of surplus to stock”?
- Is there a way to configure routes/rules so that Odoo detects On Hand > Forecasted and pushes back the difference?
- Or do I really need a Server Action / custom module to implement this logic?
Any advice or shared experience would be super helpful 🙏