2
2
# Copyright 2023 Tecnativa - Pedro M. Baeza
3
3
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
4
4
from odoo import _ , api , fields , models
5
+ from odoo .tools import config
5
6
6
7
7
8
class StockPicking (models .Model ):
@@ -15,6 +16,7 @@ class StockPicking(models.Model):
15
16
default = 0 ,
16
17
copy = False ,
17
18
)
19
+ ask_number_of_packages = fields .Boolean (compute = "_compute_ask_number_of_packages" )
18
20
19
21
@api .depends ("package_ids" )
20
22
def _compute_number_of_packages (self ):
@@ -37,24 +39,36 @@ def _action_generate_number_of_packages_wizard(self):
37
39
),
38
40
}
39
41
40
- def _check_set_number_of_packages (self ):
42
+ def _compute_ask_number_of_packages (self ):
43
+ """To Know if is needed raise wizard to ask user by package number"""
44
+ for picking in self :
45
+ picking .ask_number_of_packages = bool (
46
+ picking .carrier_id
47
+ and not picking .package_ids
48
+ or picking .picking_type_id .force_set_number_of_packages
49
+ )
50
+
51
+ def _get_pickings_to_set_number_of_packages (self ):
52
+ """Get pickings that needed raise wizard to fill number of packages"""
41
53
pickings_to_set_number_of_packages = self .browse ()
42
54
for picking in self :
43
- if (
44
- picking .picking_type_id .force_set_number_of_packages
45
- and not picking .number_of_packages
46
- ):
55
+ if not picking .number_of_packages :
47
56
pickings_to_set_number_of_packages |= picking
48
57
return pickings_to_set_number_of_packages
49
58
50
59
def _pre_action_done_hook (self ):
51
60
res = super ()._pre_action_done_hook ()
61
+ test_condition = not config ["test_enable" ] or self .env .context .get (
62
+ "test_delivery_package_number"
63
+ )
52
64
if (
53
65
res
66
+ and test_condition
54
67
and isinstance (res , bool )
68
+ and any (picking .ask_number_of_packages for picking in self )
55
69
and not self .env .context .get ("bypass_set_number_of_packages" )
56
70
):
57
- pickings_to_set_nop = self ._check_set_number_of_packages ()
71
+ pickings_to_set_nop = self ._get_pickings_to_set_number_of_packages ()
58
72
if pickings_to_set_nop :
59
73
return pickings_to_set_nop ._action_generate_number_of_packages_wizard ()
60
74
return res
0 commit comments