Skip to content

Commit dc749d5

Browse files
[MIG] sale_order_carrier_auto_assign: Migration to 19.0
1 parent 78012d8 commit dc749d5

File tree

5 files changed

+66
-38
lines changed

5 files changed

+66
-38
lines changed

sale_order_carrier_auto_assign/README.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ Sale Order Carrier Auto Assign
2121
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
2222
:alt: License: AGPL-3
2323
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github
24-
:target: https://github.com/OCA/sale-workflow/tree/18.0/sale_order_carrier_auto_assign
24+
:target: https://github.com/OCA/sale-workflow/tree/19.0/sale_order_carrier_auto_assign
2525
:alt: OCA/sale-workflow
2626
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
27-
:target: https://translation.odoo-community.org/projects/sale-workflow-18-0/sale-workflow-18-0-sale_order_carrier_auto_assign
27+
:target: https://translation.odoo-community.org/projects/sale-workflow-19-0/sale-workflow-19-0-sale_order_carrier_auto_assign
2828
:alt: Translate me on Weblate
2929
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
30-
:target: https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&target_branch=18.0
30+
:target: https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&target_branch=19.0
3131
:alt: Try me on Runboat
3232

3333
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -58,7 +58,7 @@ Bug Tracker
5858
Bugs are tracked on `GitHub Issues <https://github.com/OCA/sale-workflow/issues>`_.
5959
In case of trouble, please check there if your issue has already been reported.
6060
If you spotted it first, help us to smash it by providing a detailed and welcomed
61-
`feedback <https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_order_carrier_auto_assign%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
61+
`feedback <https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_order_carrier_auto_assign%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
6262

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

@@ -107,6 +107,6 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
107107

108108
|maintainer-jbaudoux|
109109

110-
This module is part of the `OCA/sale-workflow <https://github.com/OCA/sale-workflow/tree/18.0/sale_order_carrier_auto_assign>`_ project on GitHub.
110+
This module is part of the `OCA/sale-workflow <https://github.com/OCA/sale-workflow/tree/19.0/sale_order_carrier_auto_assign>`_ project on GitHub.
111111

112112
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

sale_order_carrier_auto_assign/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
{
44
"name": "Sale Order Carrier Auto Assign",
55
"summary": "Auto assign delivery carrier on sale order confirmation",
6-
"version": "18.0.1.0.0",
6+
"version": "19.0.1.0.0",
77
"development_status": "Beta",
88
"category": "Operations/Inventory/Delivery",
99
"website": "https://github.com/OCA/sale-workflow",

sale_order_carrier_auto_assign/models/sale_order.py

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -50,32 +50,23 @@ def action_confirm(self):
5050
def _set_delivery_carrier(
5151
self, set_delivery_line=True, preserve_order_carrier=True
5252
):
53-
"""Automatically change delivery carrier.
54-
55-
:param set_delivery_line: It will create or update the delivery line
56-
:param preserve_order_carrier: It will respect the carrier set on the order
57-
"""
5853
for order in self:
5954
if order.delivery_set:
6055
continue
61-
delivery_wiz_action = order.action_open_delivery_wizard()
62-
delivery_wiz_context = delivery_wiz_action.get("context", {})
63-
if not delivery_wiz_context.get("default_carrier_id"):
64-
continue
65-
delivery_wiz_model = self.env[
66-
delivery_wiz_action.get("res_model")
67-
].with_context(**delivery_wiz_context)
68-
if self._origin:
69-
delivery_wiz = delivery_wiz_model.create({})
70-
else:
71-
delivery_wiz = delivery_wiz_model.new({})
72-
# Do not override carrier
56+
7357
if preserve_order_carrier and order.carrier_id:
74-
delivery_wiz.carrier_id = order.carrier_id
75-
if not set_delivery_line or order.is_all_service:
76-
# Only set the carrier
77-
if order.carrier_id != delivery_wiz.carrier_id:
78-
order.carrier_id = delivery_wiz.carrier_id
58+
carrier = order.carrier_id
7959
else:
80-
delivery_wiz._get_delivery_rate()
81-
delivery_wiz.button_confirm()
60+
carrier = (
61+
order.with_company(
62+
order.company_id
63+
).partner_shipping_id.property_delivery_carrier_id
64+
or order.with_company(
65+
order.company_id
66+
).partner_shipping_id.commercial_partner_id.property_delivery_carrier_id
67+
)
68+
order.carrier_id = carrier
69+
70+
if set_delivery_line and not order.is_all_service and carrier:
71+
price_unit = carrier._get_price_available(order)
72+
order._create_delivery_line(carrier, price_unit)

sale_order_carrier_auto_assign/static/description/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ <h1>Sale Order Carrier Auto Assign</h1>
374374
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375375
!! source digest: sha256:6d48637f9ee2411385b4af73106ce3082bf4b38c1226bd705e0725765623c661
376376
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377-
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/sale-workflow/tree/18.0/sale_order_carrier_auto_assign"><img alt="OCA/sale-workflow" src="https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/sale-workflow-18-0/sale-workflow-18-0-sale_order_carrier_auto_assign"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
377+
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/sale-workflow/tree/19.0/sale_order_carrier_auto_assign"><img alt="OCA/sale-workflow" src="https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/sale-workflow-19-0/sale-workflow-19-0-sale_order_carrier_auto_assign"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/sale-workflow&amp;target_branch=19.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378378
<p>This module assigns automatically delivery carrier on sale order create
379379
or confirmation.</p>
380380
<p>You may also have a look at the module delivery_auto_refresh in
@@ -409,7 +409,7 @@ <h2><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h2>
409409
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/sale-workflow/issues">GitHub Issues</a>.
410410
In case of trouble, please check there if your issue has already been reported.
411411
If you spotted it first, help us to smash it by providing a detailed and welcomed
412-
<a class="reference external" href="https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_order_carrier_auto_assign%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
412+
<a class="reference external" href="https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_order_carrier_auto_assign%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
413413
<p>Do not contact contributors directly about support or help with technical issues.</p>
414414
</div>
415415
<div class="section" id="credits">
@@ -446,7 +446,7 @@ <h3><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h3>
446446
promote its widespread use.</p>
447447
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
448448
<p><a class="reference external image-reference" href="https://github.com/jbaudoux"><img alt="jbaudoux" src="https://github.com/jbaudoux.png?size=40px" /></a></p>
449-
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/sale-workflow/tree/18.0/sale_order_carrier_auto_assign">OCA/sale-workflow</a> project on GitHub.</p>
449+
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/sale-workflow/tree/19.0/sale_order_carrier_auto_assign">OCA/sale-workflow</a> project on GitHub.</p>
450450
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
451451
</div>
452452
</div>

sale_order_carrier_auto_assign/tests/test_sale_order_carrier_auto_assign.py

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Copyright 2020 Camptocamp SA
22
# Copyright 2024 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
33
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
4+
from odoo.exceptions import UserError
45
from odoo.fields import Command
56
from odoo.tests import Form
67

@@ -25,9 +26,22 @@ def setUpClass(cls):
2526
"type": "service",
2627
}
2728
)
28-
cls.delivery_local_delivery = cls.env.ref("delivery.delivery_local_delivery")
29-
cls.delivery_local_delivery.fixed_price = 10
30-
cls.delivery_local_delivery.free_over = False
29+
cls.delivery_local_delivery = cls.env["delivery.carrier"].create(
30+
{
31+
"name": "Test Local Delivery",
32+
"delivery_type": "fixed",
33+
"fixed_price": 10,
34+
"free_over": False,
35+
"product_id": cls.env["product.product"]
36+
.create(
37+
{
38+
"name": "Delivery Product",
39+
"type": "service",
40+
}
41+
)
42+
.id,
43+
}
44+
)
3145
cls.partner = cls.env["res.partner"].create(
3246
{
3347
"name": "Test partner",
@@ -97,6 +111,7 @@ def setUpClass(cls):
97111

98112
def test_sale_order_carrier_auto_assign(self):
99113
self.assertFalse(self.sale_order.carrier_id)
114+
self.sale_order.partner_shipping_id = self.partner.id
100115
self.sale_order.action_confirm()
101116
self.assertEqual(self.sale_order.state, "sale")
102117
self.assertEqual(self.sale_order.carrier_id, self.delivery_local_delivery)
@@ -113,13 +128,15 @@ def test_sale_order_carrier_auto_assign_disabled(self):
113128
self.assertFalse(self.sale_order.carrier_id)
114129
self.settings.carrier_auto_assign = False
115130
self.settings.set_values()
131+
self.sale_order.partner_shipping_id = self.partner.id
116132
self.sale_order.action_confirm()
117133
self.assertEqual(self.sale_order.state, "sale")
118134
self.assertFalse(self.sale_order.carrier_id)
119135

120136
def test_sale_order_carrier_auto_assign_no_carrier(self):
121137
self.partner.property_delivery_carrier_id = False
122138
self.assertFalse(self.sale_order.carrier_id)
139+
self.sale_order.partner_shipping_id = self.partner.id
123140
self.sale_order.action_confirm()
124141
self.assertEqual(self.sale_order.state, "sale")
125142
self.assertFalse(self.sale_order.carrier_id)
@@ -128,9 +145,28 @@ def test_sale_order_carrier_auto_assign_carrier_already_set(self):
128145
self.assertEqual(
129146
self.partner.property_delivery_carrier_id, self.delivery_local_delivery
130147
)
131-
carrier = self.env.ref("delivery.delivery_carrier")
148+
carrier = self.env["delivery.carrier"].create(
149+
{
150+
"name": "Another Test Carrier",
151+
"delivery_type": "fixed",
152+
"fixed_price": 20,
153+
"free_over": False,
154+
"product_id": self.env["product.product"]
155+
.create(
156+
{
157+
"name": "Another Delivery Product",
158+
"type": "service",
159+
}
160+
)
161+
.id,
162+
}
163+
)
132164
self.sale_order.carrier_id = carrier
133-
self.sale_order.action_confirm()
165+
try:
166+
self.sale_order.partner_shipping_id = self.partner.id
167+
self.sale_order.action_confirm()
168+
except UserError as e:
169+
self.fail(f"Carrier not available for current order: {e}")
134170
self.assertEqual(self.sale_order.state, "sale")
135171
self.assertEqual(self.sale_order.carrier_id, carrier)
136172

@@ -139,6 +175,7 @@ def test_sale_order_carrier_auto_assign_all_service(self):
139175
self.partner.property_delivery_carrier_id, self.delivery_local_delivery
140176
)
141177
self.sale_order.order_line.product_id = self.product_service
178+
self.sale_order.partner_shipping_id = self.partner.id
142179
self.sale_order.action_confirm()
143180
self.assertEqual(self.sale_order.state, "sale")
144181
self.assertFalse(self.sale_order.carrier_id)

0 commit comments

Comments
 (0)