Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 90 additions & 0 deletions website_sale_carrier_auto_assign/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
================================
Website Sale Carrier Auto Assign
================================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:a9b46f72bc3da4b07f6f3b421bb0d4aa16cec7073c5f7059c3f8313a6a024168
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fe--commerce-lightgray.png?logo=github
:target: https://github.com/OCA/e-commerce/tree/18.0/website_sale_carrier_auto_assign
:alt: OCA/e-commerce
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/e-commerce-18-0/e-commerce-18-0-website_sale_carrier_auto_assign
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/e-commerce&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module is a glue between
`website_sale <https://github.com/odoo/odoo/tree/18.0/addons/website_sale>`__
and
`sale_order_carrier_auto_assign <https://github.com/OCA/sale-workflow/tree/18.0/sale_order_carrier_auto_assign>`__.

When ``sale_order_carrier_auto_assign`` is installed with
``carrier_on_create`` enabled and a shipping partner has
``property_delivery_carrier_id`` set, its ``create``/``write`` overrides
automatically add a delivery line from the partner's default carrier. On
website orders, ``website_sale`` already handles carrier selection via
``_get_preferred_delivery_method`` (which reads
``property_delivery_carrier_id``) and ``_set_delivery_method`` (which
removes any existing delivery line before adding the new one). Letting
both mechanisms run in parallel creates two delivery lines, causing a
``ValueError: Expected singleton`` crash in ``order_2_return_dict`` at
checkout confirmation.

This module prevents the OCA auto-assign from running on website orders
(``website_id`` is set) so that ``website_sale`` remains the sole owner
of delivery-line management for e-commerce carts.

**Table of contents**

.. contents::
:local:

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/e-commerce/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/e-commerce/issues/new?body=module:%20website_sale_carrier_auto_assign%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* ADHOC SA

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/e-commerce <https://github.com/OCA/e-commerce/tree/18.0/website_sale_carrier_auto_assign>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions website_sale_carrier_auto_assign/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import models
15 changes: 15 additions & 0 deletions website_sale_carrier_auto_assign/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright 2026 ADHOC SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Website Sale Carrier Auto Assign",
"summary": "Prevent duplicate delivery lines on website orders when "
"sale_order_carrier_auto_assign is installed.",
"version": "18.0.1.0.0",
"development_status": "Beta",
"category": "Website",
"website": "https://github.com/OCA/e-commerce",
"author": "ADHOC SA, Odoo Community Association (OCA)",
"license": "AGPL-3",
"depends": ["website_sale", "sale_order_carrier_auto_assign"],
"auto_install": True,
}
3 changes: 3 additions & 0 deletions website_sale_carrier_auto_assign/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import sale_order
14 changes: 14 additions & 0 deletions website_sale_carrier_auto_assign/models/sale_order.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright 2026 ADHOC SA
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import models


class SaleOrder(models.Model):
_inherit = "sale.order"

def _is_auto_set_carrier_on_create(self):
self.ensure_one()
if self.website_id:
return False
return super()._is_auto_set_carrier_on_create()
3 changes: 3 additions & 0 deletions website_sale_carrier_auto_assign/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
19 changes: 19 additions & 0 deletions website_sale_carrier_auto_assign/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
This module is a glue between
[website_sale](https://github.com/odoo/odoo/tree/18.0/addons/website_sale)
and
[sale_order_carrier_auto_assign](https://github.com/OCA/sale-workflow/tree/18.0/sale_order_carrier_auto_assign).

When `sale_order_carrier_auto_assign` is installed with `carrier_on_create`
enabled and a shipping partner has `property_delivery_carrier_id` set, its
`create`/`write` overrides automatically add a delivery line from the partner's
default carrier. On website orders, `website_sale` already handles carrier
selection via `_get_preferred_delivery_method` (which reads
`property_delivery_carrier_id`) and `_set_delivery_method` (which removes any
existing delivery line before adding the new one). Letting both mechanisms run
in parallel creates two delivery lines, causing a
`ValueError: Expected singleton` crash in `order_2_return_dict` at checkout
confirmation.

This module prevents the OCA auto-assign from running on website orders
(`website_id` is set) so that `website_sale` remains the sole owner of
delivery-line management for e-commerce carts.
Loading
Loading