| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 76 |
| Technical Name |
delivery_carrier_from_partner |
| License | OPL-1 |
| Website | https://oddons.com |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 76 |
| Technical Name |
delivery_carrier_from_partner |
| License | OPL-1 |
| Website | https://oddons.com |
| Versions | 17.0 18.0 19.0 |
|
Inventory / Delivery Module
Delivery Carrier Auto-Assignment
|
Your contacts have a preferred carrier — but pickings don’t know about it
Odoo lets you define a preferred delivery carrier on each contact via the
Delivery Method field (property_delivery_carrier_id).
In standard Odoo, this field is used in two places: to pre-select the carrier in the
"Add a shipping method" wizard on sale orders, and as the preferred carrier
during the eCommerce checkout. In both cases it influences a selection or suggestion —
it is never automatically copied to the Carrier (carrier_id)
field of the picking itself.
The result: warehouse operators must manually select the carrier on every single delivery order and receipt, even when the customer or vendor always uses the same carrier. This is repetitive, error-prone, and slows down daily operations.
Everything you need, nothing you don’t
Automatic assignment from contact
When a new delivery order or receipt is created, the carrier defined on the contact
(Delivery Method) is automatically copied to the Carrier (carrier_id)
field of the picking — if and only if no carrier is already set.
Never overrides an existing carrier
If the carrier was already set — for example from the sale order — the module does
nothing. The auto-assignment only fills an empty Carrier (carrier_id), never
overwrites a value already there.
Always editable by hand
The automatically assigned carrier can be changed at any time directly on the picking form, just like any other field. The change is then tracked in the chatter.
Full chatter traceability
A note is posted in the chatter when the carrier is auto-assigned. Every subsequent manual change (set, changed, removed) is also logged, giving a complete audit trail directly on the picking.
Per-partner opt-out
A simple checkbox on the contact form (Propagate carrier to pickings) lets you disable auto-assignment for specific contacts whose carrier field is informational only.
Lightweight & non-intrusive
The module overrides only create and write on
stock.picking. No new models, no scheduled actions, no configuration
UI — install and it works.
Four steps, fully automatic
Set the preferred carrier on the contact
On the contact form (Sales & Purchase tab), fill in the Delivery Method field. Make sure Propagate carrier to pickings is checked (it is by default).
A picking is created
Whenever a delivery order or receipt is created — from a sale order, purchase order,
replenishment, or manually — the module checks whether Carrier (carrier_id) is empty.
Carrier is assigned & logged
If empty, the carrier from the contact is set automatically. The chatter immediately shows: "Carrier automatically assigned from contact: DHL Express".
Manual changes are tracked
If an operator later changes the carrier, a new chatter note is posted: "Delivery carrier changed: DHL Express → UPS Standard".
When does the auto-assignment trigger?
All conditions must be met for the carrier to be assigned automatically:
| Condition | Details |
|---|---|
| Picking type is outgoing or incoming | Delivery orders and receipts only — internal transfers are excluded |
| No carrier already set on the picking | If Carrier (carrier_id) is already set (e.g. from the sale order), the module does nothing |
| Partner opt-out not active | Propagate carrier to pickings is checked on the contact form (default: checked) |
| Contact has a preferred carrier | Delivery Method (property_delivery_carrier_id) is set on the contact |
|
Support
Need help?Our team is available to answer your questions, help you configure the module, or handle any bug report. ✉ Contact supportcontact@oddons.com |
Frequently asked questions
Does it override the carrier set from the sale order?
No. The auto-assignment only runs when Carrier (carrier_id) is empty at the moment
the picking is created. If a carrier was already set from the sale order, the module
does nothing.
Which picking types are supported?
Delivery orders (outgoing) and receipts (incoming).
Internal transfers are intentionally excluded.
What if the contact has no preferred carrier?
Nothing — the module silently skips the assignment. The Carrier (carrier_id) field
stays empty, exactly as in standard Odoo.
Does it work for pickings created outside sale orders?
Yes. The auto-assignment is triggered at the stock.picking creation level,
regardless of origin — sale order, purchase order, replenishment, or manual creation.
Can I still change the carrier manually?
Yes, the field remains fully editable. The change will be tracked in the chatter with the old and new carrier names.
Does it modify any existing data?
No. The module only reacts to the creation of new pickings. Uninstalling it restores standard Odoo behavior completely and leaves existing data untouched.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module