Skip to Content
Menú
This question has been flagged
1 Respondre
208 Vistes

Hi all,

I have Odoo Enterprise Inventory set up with two storage categories: High Volume (near the picking bench, limited space) and Low Volume (for bulk storage).

Each product has a defined maximum quantity per location—for example:

  • Product A: 200 units in High Volume
  • Product A: 1000 units in Low Volume

I’ve created putaway rules so that receipts go to High Volume locations first, then to Low Volume if needed.

What I’d like to achieve:

When booking in a receipt (e.g., 600 units of Product A), I want Odoo to automatically allocate 200 units to High Volume and the remaining 400 units to Low Volume, based on the location capacities.

Is there a way to get Odoo to automatically split these incoming moves across locations according to the capacity and putaway rules?

Trust this makes sense!

Thanks :)

Avatar
Descartar
Best Answer

Objective Recap

You want Odoo to:

  • Automatically split a receipt (e.g., 600 units of Product A) based on:
    • Putaway Rules
    • Location maximum capacity
    • Storage Categories (High Volume vs. Low Volume)

So 200 units go to High Volume (its max), and 400 units go to Low Volume.

What You’ve Already Done

  • ✔️ Defined two Storage Categories (High Volume, Low Volume)
  • ✔️ Set Max quantity per product per location
  • ✔️ Set Putaway Rules: e.g., Product A → High Volume, then → Low Volume


How Odoo Normally Works

Odoo's Putaway Rules define:

  • For a given product or product category,
  • Where it should be stored based on Storage Category capacity (i.e., space rules)

But by default, Odoo does not automatically split an incoming move into multiple quants across multiple locations. Instead, it uses the first matching rule that has available space.

 Default Limitation in Odoo

Odoo will not automatically split a single incoming line (e.g., 600 units) into 200 + 400 based on location max capacity.

It will:

  • Try to assign the entire quantity to the first location in the putaway rule list that has enough capacity.
  • If that location is full, it moves to the next one.

So in your example:

If High Volume can only take 200 and you receive 600, Odoo will bypass High Volume and send all 600 to Low Volume, because High Volume can’t handle the full quantity.

Options to Achieve What You Want

 Option 1: Use a Custom Server Action or Module

Create a custom module or automated server action that:

  • Detects the available capacity of the first location.
  • Splits the incoming move into two lines:
    • One for High Volume (max capacity)
    • One for Low Volume (remaining)

This approach fully automates the desired behavior. This is the most accurate and scalable solution in Odoo.

 If you're interested, I can help you with a code snippet or XML record to start with.

 Option 2: Manually Split Incoming Move Lines

Before validating the incoming shipment:

  • Go to the Incoming Transfer.
  • Click on Operations
  • Manually split the incoming line (e.g., 600 units into 200 + 400 lines)
  • Then assign each line to the correct destination location (High Volume / Low Volume)

 This respects the putaway rules if you use "Suggest Locations", but it’s manual.

 Option 3: Use Advanced Putaway Rule Logic with Custom Python Code

If you're comfortable with Python, override the putaway logic (method _get_putaway_strategy) to:

  • Check the remaining capacity of each location.
  • Automatically split the incoming stock move based on that.

Again, this requires customization, but it’s clean and effective.

 Summary

OptionDescriptionAutomation LevelNotes
1Custom module/server action that splits moves based on capacity🔁 Fully automatic✅ Best solution
2Manual split of lines in incoming transfers ManualSimple but labor intensive
3Customization of putaway strategy via code Fully automaticNeeds development

 Recommendation

Since you're using Odoo Enterprise, I recommend:

  • Start with manual splitting as a proof-of-concept
  • Then build a small custom module or automation rule to handle it

Avatar
Descartar