1
1
# Copyright 2020 Camptocamp SA
2
+ # Copyright 2024 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
2
3
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
3
4
from odoo .tests import Form , TransactionCase
4
5
5
6
from odoo .addons .base .tests .common import DISABLED_MAIL_CONTEXT
6
7
7
8
8
- class TestSaleOrderCarrierAutoAssign (TransactionCase ):
9
+ class TestSaleOrderCarrierAutoAssignCommon (TransactionCase ):
9
10
@classmethod
10
11
def setUpClass (cls ):
11
12
super ().setUpClass ()
12
13
cls .env = cls .env ["base" ].with_context (** DISABLED_MAIL_CONTEXT ).env
13
- cls .settings = cls .env ["res.config.settings" ].create ({})
14
- cls .settings .carrier_auto_assign = True
15
- cls .settings .set_values ()
16
14
17
15
cls .partner = cls .env .ref ("base.res_partner_2" )
18
- product = cls .env .ref ("product.product_product_9" )
16
+ cls . product_storable = cls .env .ref ("product.product_product_9" )
19
17
cls .delivery_local_delivery = cls .env .ref ("delivery.delivery_local_delivery" )
20
18
cls .delivery_local_delivery .fixed_price = 10
21
- sale_order_form = Form (cls .env ["sale.order" ])
22
- sale_order_form .partner_id = cls .partner
23
- with sale_order_form .order_line .new () as line_form :
24
- line_form .product_id = product
25
- cls .sale_order = sale_order_form .save ()
19
+
20
+
21
+ class TestSaleOrderCarrierAutoAssignOnCreate (TestSaleOrderCarrierAutoAssignCommon ):
22
+ @classmethod
23
+ def setUpClass (cls ):
24
+ super ().setUpClass ()
25
+ cls .settings = cls .env ["res.config.settings" ].create ({})
26
+
27
+ def test_sale_order_carrier_auto_assign_onchange (self ):
28
+ self .assertEqual (
29
+ self .partner .property_delivery_carrier_id , self .delivery_local_delivery
30
+ )
31
+ self .settings .carrier_auto_assign_on_create = True
32
+ self .settings .set_values ()
33
+ sale_order_form = Form (self .env ["sale.order" ])
34
+ sale_order_form .partner_id = self .partner
35
+ sale_order = sale_order_form .save ()
36
+ self .assertEqual (sale_order .carrier_id , self .delivery_local_delivery )
37
+
38
+ def test_sale_order_carrier_auto_assign_create (self ):
39
+ self .assertEqual (
40
+ self .partner .property_delivery_carrier_id , self .delivery_local_delivery
41
+ )
42
+ self .settings .carrier_auto_assign_on_create = True
43
+ self .settings .set_values ()
44
+ sale_order = self .env ["sale.order" ].create ({"partner_id" : self .partner .id })
45
+ self .assertEqual (sale_order .carrier_id , self .delivery_local_delivery )
46
+
47
+ def test_sale_order_carrier_auto_assign_disabled (self ):
48
+ self .assertEqual (
49
+ self .partner .property_delivery_carrier_id , self .delivery_local_delivery
50
+ )
51
+ self .settings .carrier_auto_assign_on_create = False
52
+ self .settings .set_values ()
53
+ sale_order_form = Form (self .env ["sale.order" ])
54
+ sale_order_form .partner_id = self .partner
55
+ sale_order = sale_order_form .save ()
56
+ self .assertFalse (sale_order .carrier_id )
57
+
58
+ def test_sale_order_carrier_auto_assign_no_carrier (self ):
59
+ self .partner .property_delivery_carrier_id = False
60
+ self .settings .carrier_auto_assign_on_create = True
61
+ self .settings .set_values ()
62
+ sale_order_form = Form (self .env ["sale.order" ])
63
+ sale_order_form .partner_id = self .partner
64
+ sale_order = sale_order_form .save ()
65
+ self .assertFalse (sale_order .carrier_id )
66
+
67
+ def test_sale_order_carrier_auto_assign_carrier_already_set (self ):
68
+ self .assertEqual (
69
+ self .partner .property_delivery_carrier_id , self .delivery_local_delivery
70
+ )
71
+ self .settings .carrier_auto_assign_on_create = True
72
+ carrier = self .env .ref ("delivery.delivery_carrier" )
73
+ sale_order = self .env ["sale.order" ].create (
74
+ {
75
+ "partner_id" : self .partner .id ,
76
+ "carrier_id" : carrier .id ,
77
+ }
78
+ )
79
+ self .assertEqual (sale_order .carrier_id , carrier )
80
+
81
+
82
+ class TestSaleOrderCarrierAutoAssignOnConfirm (TestSaleOrderCarrierAutoAssignCommon ):
83
+ @classmethod
84
+ def setUpClass (cls ):
85
+ super ().setUpClass ()
86
+ cls .settings = cls .env ["res.config.settings" ].create ({})
87
+ cls .settings .carrier_auto_assign_on_confirm = True
88
+ cls .settings .set_values ()
89
+ cls .sale_order_form = Form (cls .env ["sale.order" ])
90
+ cls .sale_order_form .partner_id = cls .partner
91
+ with cls .sale_order_form .order_line .new () as line_form :
92
+ line_form .product_id = cls .product_storable
93
+ cls .sale_order = cls .sale_order_form .save ()
26
94
27
95
def test_sale_order_carrier_auto_assign (self ):
28
96
self .assertEqual (
@@ -36,9 +104,30 @@ def test_sale_order_carrier_auto_assign(self):
36
104
delivery_rate = self .delivery_local_delivery .rate_shipment (self .sale_order )
37
105
self .assertEqual (delivery_line .price_unit , delivery_rate ["carrier_price" ])
38
106
107
+ def test_sale_order_carrier_auto_assign_disabled (self ):
108
+ self .assertEqual (
109
+ self .partner .property_delivery_carrier_id , self .delivery_local_delivery
110
+ )
111
+ self .assertFalse (self .sale_order .carrier_id )
112
+ self .settings .carrier_auto_assign_on_confirm = False
113
+ self .settings .set_values ()
114
+ self .sale_order .action_confirm ()
115
+ self .assertEqual (self .sale_order .state , "sale" )
116
+ self .assertFalse (self .sale_order .carrier_id )
117
+
39
118
def test_sale_order_carrier_auto_assign_no_carrier (self ):
40
119
self .partner .property_delivery_carrier_id = False
41
120
self .assertFalse (self .sale_order .carrier_id )
42
121
self .sale_order .action_confirm ()
43
122
self .assertEqual (self .sale_order .state , "sale" )
44
123
self .assertFalse (self .sale_order .carrier_id )
124
+
125
+ def test_sale_order_carrier_auto_assign_carrier_already_set (self ):
126
+ self .assertEqual (
127
+ self .partner .property_delivery_carrier_id , self .delivery_local_delivery
128
+ )
129
+ carrier = self .env .ref ("delivery.delivery_carrier" )
130
+ self .sale_order .carrier_id = carrier
131
+ self .sale_order .action_confirm ()
132
+ self .assertEqual (self .sale_order .state , "sale" )
133
+ self .assertEqual (self .sale_order .carrier_id , carrier )
0 commit comments