stock_picking_many2many
The transfers list on a wave. Adding one does not link a record directly: it opens a selection, creates a wizard, and lets the server attach them properly.
| Technical name | stock_picking_many2many |
|---|---|
| Field types | many2many |
| Views | form, with an embedded list |
| Module | stock_picking_batch, batch and wave transfers |
| Used in core | 1 occurrence, the transfers list on a wave |
| Versions | Odoo 20.0, Odoo 19.0 |
| No-code setup | No. It is set in view XML and depends on module-specific data |
| Alternatives | many2many, sml_x2_many, stock_move_one2many, one2many |
What the wave transfers field does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
the exclusion domain | built by the widget | Transfers already linked, filtered to those with a real database identifier, are excluded from the selection dialog.(since Odoo 19.0) |
from_wave_form | context key sent to the wizard | Tells the server the attach call came from the wave form rather than another entry point.(since Odoo 19.0) |
editable | string (list attribute) | Set on the embedded list. Governs inline editing of the linked rows. |
Only saved transfers are excluded. The exclusion filters the relation's current identifiers down to real database ones before building the domain, so unsaved additions are not filtered. In practice a wave is saved before transfers are attached, so this rarely shows.
Working examples
Deferring the whole operation to the server
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. Byte-identical to Odoo 19 on the development branch. |
| Odoo 19.0 | Verified | First version. Verified against the shipped source. |
| Odoo 18.0 | Not available | Widget does not exist. |
| Odoo 17.0 | Not available | Widget does not exist. |
| Odoo 16.0 | Not available | Widget does not exist. |
Upgrade note. The widget is new in Odoo 19. On earlier versions building a wave went through the wizard from a different entry point, so an upgrade improves the wave form with the standard views and nothing needs migrating.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| A transfer already on the wave is offered again | It has no database identifier yet, so the exclusion did not catch it. Save the wave first; the filter only excludes saved links. |
| Adding does nothing visible | The server returned an action that closes without changing the view. Reload the wave; the attachment happens server side. |
| The dialog offers unrelated transfers | The field has no domain beyond the exclusion. Add a domain on the field to narrow the candidates. |
| Rows can be created from the list | The forwarded CRUD settings allow it. Pass no_create in the options; transfers should be linked, not created here. |
| The wizard behaves differently than expected | The context flag tells the server the call came from the wave form. Expected; the same wizard behaves differently from other entry points. |
| Missing widget error | The batch transfers module is not installed in that database. Install it, or use a plain relation widget. |
Wave transfers field vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
stock_picking_many2many | Linking transfers to a wave where the link reshapes stock moves | Opens a selection, creates a wizard and lets the server attach, excluding what is already linked |
| many2many | Links that are just a write | No wizard, no exclusion and no server call |
sml_x2_many | Adding move lines from real stock | Picks quants rather than transfers |
stock_move_one2many | Operations on a transfer | The lines of one transfer rather than a set of transfers |
| one2many | Owned child records | Creates and deletes rather than linking |
Frequently asked questions
Why does adding a transfer open a dialog?+
Why is a transfer I already added still offered?+
Does it support options?+
Why force many-to-many behavior?+
Which versions have it?+
Wave picking that actually saves the walk
Batching, waves and zone picking each suit a different warehouse layout, and choosing wrong costs more steps than it saves. We design and implement Odoo picking strategies on versions 16 through 19.
Book a free consultation