odoo-addon-shopfloor 16.0.2.2.0__py3-none-any.whl → 16.0.2.2.1.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. odoo/addons/shopfloor/README.rst +1 -1
  2. odoo/addons/shopfloor/__manifest__.py +1 -1
  3. odoo/addons/shopfloor/actions/move_line_search.py +125 -33
  4. odoo/addons/shopfloor/data/shopfloor_scenario_data.xml +7 -2
  5. odoo/addons/shopfloor/i18n/ca.po +106 -4
  6. odoo/addons/shopfloor/i18n/de.po +104 -2
  7. odoo/addons/shopfloor/i18n/es_AR.po +108 -6
  8. odoo/addons/shopfloor/i18n/it.po +108 -6
  9. odoo/addons/shopfloor/i18n/pt_BR.po +104 -2
  10. odoo/addons/shopfloor/i18n/shopfloor.pot +102 -0
  11. odoo/addons/shopfloor/migrations/16.0.2.2.1/post-init_search_move_line_options.py +33 -0
  12. odoo/addons/shopfloor/models/shopfloor_menu.py +85 -0
  13. odoo/addons/shopfloor/services/location_content_transfer.py +20 -41
  14. odoo/addons/shopfloor/services/menu.py +6 -3
  15. odoo/addons/shopfloor/services/service.py +28 -2
  16. odoo/addons/shopfloor/services/zone_picking.py +2 -2
  17. odoo/addons/shopfloor/static/description/index.html +1 -1
  18. odoo/addons/shopfloor/tests/__init__.py +2 -0
  19. odoo/addons/shopfloor/tests/test_actions_search_move_line.py +128 -0
  20. odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py +41 -0
  21. odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py +2 -2
  22. odoo/addons/shopfloor/tests/test_menu_contrains.py +40 -0
  23. odoo/addons/shopfloor/tests/test_menu_counters.py +112 -2
  24. odoo/addons/shopfloor/views/shopfloor_menu.xml +54 -0
  25. {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/METADATA +2 -2
  26. {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/RECORD +28 -25
  27. {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/WHEEL +0 -0
  28. {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/top_level.txt +0 -0
@@ -105,6 +105,47 @@ class TestLocationContentTransferGetWork(LocationContentTransferCommonCase):
105
105
  )
106
106
  self.assertEqual(response["next_state"], "scan_destination_all")
107
107
 
108
+ def test_find_work_additional_domain(self):
109
+ next_location = self.service._find_location_to_work_from()
110
+ self.assertTrue(next_location)
111
+ self.menu.sudo().move_line_search_additional_domain = [
112
+ ("picking_id.id", "not in", self.pickings.ids)
113
+ ]
114
+ next_location = self.service._find_location_to_work_from()
115
+ self.assertFalse(next_location)
116
+ response = self.service.dispatch("find_work", params={})
117
+ self.assert_response(
118
+ response,
119
+ next_state="get_work",
120
+ data={},
121
+ message=self.service.msg_store.no_work_found(),
122
+ )
123
+
124
+ def test_find_work_custom_sort_key(self):
125
+ # fmt: off
126
+ self.menu.sudo().write(
127
+ {
128
+ "move_line_search_sort_order": "custom_code",
129
+ "move_line_search_sort_order_custom_code":
130
+ f"key = (-1 if line.location_id.id == {self.content_loc.id} else 10, )",
131
+ }
132
+ )
133
+ # fmt: on
134
+
135
+ next_location = self.service._find_location_to_work_from()
136
+ self.assertEqual(next_location, self.content_loc)
137
+ self.menu.sudo().move_line_search_sort_order_custom_code = (
138
+ f"key = (-1 if line.location_id.id == {self.content_loc2.id} else 10, )"
139
+ )
140
+ next_location = self.service._find_location_to_work_from()
141
+ self.assertEqual(next_location, self.content_loc2)
142
+ self.menu.sudo().move_line_search_sort_order_custom_code = f"""
143
+ key = (-1 if line.location_id.id == {self.content_loc2.id} else 10, ) + \
144
+ get_sort_key_assigned_to_current_user(line)
145
+ """
146
+ next_location = self.service._find_location_to_work_from()
147
+ self.assertEqual(next_location, self.content_loc2)
148
+
108
149
  def test_cancel_work(self):
109
150
  next_location = self.service._find_location_to_work_from()
110
151
  stock = self.service._actions_for("stock")
@@ -370,8 +370,8 @@ class LocationContentTransferMixCase(LocationContentTransferCommonCase):
370
370
  lambda l: not l.shopfloor_user_id and l.location_id == dest_location2
371
371
  )
372
372
  picking_before = pack_second_pallet.picking_id
373
- move_lines = self.service._find_location_move_lines(
374
- pack_second_pallet.location_id
373
+ move_lines = self.service.search_move_line.search_move_lines(
374
+ locations=pack_second_pallet.location_id
375
375
  )
376
376
  response = self._location_content_transfer_process_line(pack_second_pallet)
377
377
  response_packages = response["data"]["scan_destination_all"]["package_levels"]
@@ -0,0 +1,40 @@
1
+ # Copyright 2024 ACSONE SA/NV
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
3
+ from odoo import exceptions
4
+
5
+ from .test_menu_base import MenuCountersCommonCase
6
+
7
+
8
+ class TestMenuContrains(MenuCountersCommonCase):
9
+ def test_move_line_search_sort_order_custom_code_invalid(self):
10
+
11
+ with self.assertRaises(exceptions.ValidationError):
12
+ # wrong indentation in python code
13
+ self.menu1.sudo().write(
14
+ {
15
+ "move_line_search_sort_order_custom_code": """
16
+ key = 1
17
+ toto(1)
18
+ """,
19
+ "move_line_search_sort_order": "custom_code",
20
+ }
21
+ )
22
+
23
+ self.menu1.sudo().write(
24
+ {
25
+ "move_line_search_sort_order_custom_code": "key = 1",
26
+ "move_line_search_sort_order": "custom_code",
27
+ }
28
+ )
29
+
30
+ def test_move_line_search_sort_order_mismatch(self):
31
+ with self.assertRaises(exceptions.ValidationError):
32
+ self.menu1.sudo().move_line_search_sort_order = "custom_code"
33
+
34
+ self.menu1.sudo().write(
35
+ {
36
+ "move_line_search_sort_order_custom_code": "key = 1",
37
+ "move_line_search_sort_order": "priority",
38
+ }
39
+ )
40
+ self.assertFalse(self.menu1.move_line_search_sort_order_custom_code)
@@ -24,6 +24,9 @@ class TestMenuCountersCommonCase(MenuCountersCommonCase):
24
24
  .sudo()
25
25
  .search([("profile_id", "=", self.wms_profile.id)])
26
26
  )
27
+ # ensures expected counters are in the expected menu items
28
+ self.assertIn(self.menu1, expected_menu_items)
29
+ self.assertIn(self.menu2, expected_menu_items)
27
30
  service = self.get_service("menu", profile=self.wms_profile)
28
31
  response = service.dispatch("search")
29
32
  self._assert_menu_response(
@@ -33,6 +36,51 @@ class TestMenuCountersCommonCase(MenuCountersCommonCase):
33
36
  )
34
37
 
35
38
  def test_menu_search_profile2(self):
39
+ expected_menu_items = (
40
+ self.env["shopfloor.menu"]
41
+ .sudo()
42
+ .search([("profile_id", "=", self.wms_profile2.id)])
43
+ )
44
+ expected_counters = {
45
+ expected_menu_item[0].id: {
46
+ "lines_count": 0,
47
+ "picking_count": 0,
48
+ "priority_lines_count": 0,
49
+ "priority_picking_count": 0,
50
+ }
51
+ for expected_menu_item in expected_menu_items
52
+ }
53
+ service = self.get_service("menu", profile=self.wms_profile2)
54
+ response = service.dispatch("search")
55
+ self._assert_menu_response(
56
+ response,
57
+ expected_menu_items.sorted("sequence"),
58
+ expected_counters=expected_counters,
59
+ )
60
+
61
+ def test_menu_counter_priority(self):
62
+ """Test that priority counters are correctly computed.
63
+
64
+ Priority on lines must be based on the move priority.
65
+ Priority on pickings must be based on the picking priority.
66
+ """
67
+ self.pickings.write({"priority": "0"})
68
+ self.pickings.move_ids.write({"priority": "0"})
69
+ pickings_menu_2 = self.pickings.filtered(
70
+ lambda p: p.picking_type_id == self.menu2_picking_type
71
+ )
72
+ # Set priority on pickings only for first picking of menu 2
73
+ pickings_menu_2[0].write({"priority": "1"})
74
+ pickings_menu_2[0].move_ids.write({"priority": "0"})
75
+
76
+ # set priority on move lines only for second picking of menu 2
77
+ pickings_menu_2[1].write({"priority": "0"})
78
+ pickings_menu_2[1].move_ids[0].write({"priority": "1"})
79
+
80
+ # set priority on both move lines and pickings for third picking of menu 2
81
+ pickings_menu_2[2].write({"priority": "1"})
82
+ pickings_menu_2[2].move_ids.write({"priority": "1"})
83
+
36
84
  expected_counters = {
37
85
  self.menu1.id: {
38
86
  "lines_count": 2,
@@ -40,6 +88,41 @@ class TestMenuCountersCommonCase(MenuCountersCommonCase):
40
88
  "priority_lines_count": 0,
41
89
  "priority_picking_count": 0,
42
90
  },
91
+ self.menu2.id: {
92
+ "lines_count": 6,
93
+ "picking_count": 3,
94
+ "priority_lines_count": 1 + len(pickings_menu_2[2].move_ids),
95
+ "priority_picking_count": 2,
96
+ },
97
+ }
98
+ expected_menu_items = (
99
+ self.env["shopfloor.menu"]
100
+ .sudo()
101
+ .search([("profile_id", "=", self.wms_profile.id)])
102
+ )
103
+ # ensures expected counters are in the expected menu items
104
+ self.assertIn(self.menu1, expected_menu_items)
105
+ self.assertIn(self.menu2, expected_menu_items)
106
+ service = self.get_service("menu", profile=self.wms_profile)
107
+ response = service.dispatch("search")
108
+ self._assert_menu_response(
109
+ response,
110
+ expected_menu_items.sorted("sequence"),
111
+ expected_counters=expected_counters,
112
+ )
113
+
114
+ def test_menu_search_additional_domain(self):
115
+ self.menu1.sudo().move_line_search_additional_domain = [
116
+ ("picking_id.priority", "=", "1")
117
+ ]
118
+
119
+ expected_counters = {
120
+ self.menu1.id: {
121
+ "lines_count": 0,
122
+ "picking_count": 0,
123
+ "priority_lines_count": 0,
124
+ "priority_picking_count": 0,
125
+ },
43
126
  self.menu2.id: {
44
127
  "lines_count": 6,
45
128
  "picking_count": 3,
@@ -50,9 +133,36 @@ class TestMenuCountersCommonCase(MenuCountersCommonCase):
50
133
  expected_menu_items = (
51
134
  self.env["shopfloor.menu"]
52
135
  .sudo()
53
- .search([("profile_id", "=", self.wms_profile2.id)])
136
+ .search([("profile_id", "=", self.wms_profile.id)])
54
137
  )
55
- service = self.get_service("menu", profile=self.wms_profile2)
138
+ # ensures expected counters are in the expected menu items
139
+ self.assertIn(self.menu1, expected_menu_items)
140
+ self.assertIn(self.menu2, expected_menu_items)
141
+ service = self.get_service("menu", profile=self.wms_profile)
142
+ response = service.dispatch("search")
143
+ self._assert_menu_response(
144
+ response,
145
+ expected_menu_items.sorted("sequence"),
146
+ expected_counters=expected_counters,
147
+ )
148
+
149
+ self.menu1.sudo().move_line_search_additional_domain = [
150
+ ("picking_id.priority", "=", "0")
151
+ ]
152
+ expected_counters = {
153
+ self.menu1.id: {
154
+ "lines_count": 2,
155
+ "picking_count": 2,
156
+ "priority_lines_count": 0,
157
+ "priority_picking_count": 0,
158
+ },
159
+ self.menu2.id: {
160
+ "lines_count": 6,
161
+ "picking_count": 3,
162
+ "priority_lines_count": 0,
163
+ "priority_picking_count": 0,
164
+ },
165
+ }
56
166
  response = service.dispatch("search")
57
167
  self._assert_menu_response(
58
168
  response,
@@ -169,6 +169,60 @@
169
169
  />
170
170
  <field name="allow_alternative_destination_package" />
171
171
  </group>
172
+ <group
173
+ name="search_move_line"
174
+ attrs="{'invisible': [('move_line_search_sort_order_is_possible', '=', False), ('move_line_search_additional_domain_is_possible', '=', False)]}"
175
+ >
176
+ <field
177
+ name="move_line_search_additional_domain_is_possible"
178
+ invisible="1"
179
+ />
180
+ <field
181
+ name="move_line_search_additional_domain"
182
+ widget="domain"
183
+ options="{'model': 'stock.move.line'}"
184
+ attrs="{'invisible': [('move_line_search_additional_domain_is_possible', '=', False)]}"
185
+ />
186
+ <field name="move_line_search_sort_order_is_possible" invisible="1" />
187
+ <field
188
+ name="move_line_search_sort_order"
189
+ attrs="{'invisible': [('move_line_search_sort_order_is_possible', '=', False)]}"
190
+ />
191
+ <div
192
+ class="o_cell o_wrap_label"
193
+ style="margin-top: 4px;"
194
+ colspan="2"
195
+ attrs="{'invisible': ['|', ('move_line_search_sort_order_is_possible', '=', False), ('move_line_search_sort_order', '!=', 'custom_code')]}"
196
+ >
197
+ <label
198
+ class="text-900"
199
+ for="move_line_search_sort_order_custom_code"
200
+ >Custom code to construct the key to sort move lines</label>
201
+ <p>Three variables are available:</p>
202
+ <ul>
203
+ <li><code
204
+ >line</code>: The move line for with the key must be computed.
205
+ </li>
206
+ <li><code
207
+ >get_sort_key_priority</code>: Return sort key to sort by priority. (return a tuple)
208
+ </li>
209
+ <li><code
210
+ >get_sort_key_location</code>: Return sort key to sort by location. (return a tuple)
211
+ </li>
212
+ <li><code
213
+ >get_sort_key_assigned_to_current_user</code>: Return sort key to get line assigned to current user first. (return a tuple)
214
+ </li>
215
+ <li>To assign the key value: <code
216
+ >key = get_sort_key_assigned_to_current_user(line) + (line.x, )</code></li>
217
+ </ul>
218
+ <field
219
+ name="move_line_search_sort_order_custom_code"
220
+ attrs="{'invisible': ['|', ('move_line_search_sort_order_is_possible', '=', False), ('move_line_search_sort_order', '!=', 'custom_code')]}"
221
+ nolabel="1"
222
+ />
223
+ </div>
224
+
225
+ </group>
172
226
  </group>
173
227
  </field>
174
228
  </record>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-shopfloor
3
- Version: 16.0.2.2.0
3
+ Version: 16.0.2.2.1.5
4
4
  Summary: manage warehouse operations with barcode scanners
5
5
  Home-page: https://github.com/OCA/wms
6
6
  Author: Camptocamp, BCIM, Akretion, Odoo Community Association (OCA)
@@ -36,7 +36,7 @@ Shopfloor
36
36
  !! This file is generated by oca-gen-addon-readme !!
37
37
  !! changes will be overwritten. !!
38
38
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
39
- !! source digest: sha256:8c610188b1ca56f5f11da8e51e3fd390897186bc38eed9c6246f4cc394dccda1
39
+ !! source digest: sha256:bb5933746c40b25c45fcadac4704a1a752a86c48bb857969ca935196736d24c6
40
40
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
41
41
 
42
42
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -1,6 +1,6 @@
1
- odoo/addons/shopfloor/README.rst,sha256=szsiVYJZAeYV4fK26-MbsBS9CcARqiHv7aDoyQz-SQ8,5318
1
+ odoo/addons/shopfloor/README.rst,sha256=1U0h74Cav3zjs92LORr6T9iXjU9F3zMclHtjAWm2uMc,5318
2
2
  odoo/addons/shopfloor/__init__.py,sha256=ke3RmZ7XkX-lz4S8NHAxNIEJ5_Nvj5bjBAqD-W-q73c,91
3
- odoo/addons/shopfloor/__manifest__.py,sha256=oLhK9j-d6jd6CHXkEP5mbXxv8I5y77MOVzBe_ldzShU,2245
3
+ odoo/addons/shopfloor/__manifest__.py,sha256=uEOzWTHkQpWsYE52kY7ygBYjYF5x5pgXHFhKitDJv9c,2245
4
4
  odoo/addons/shopfloor/exceptions.py,sha256=81KpIGVkuYRhA0cIuml4pg4G3izqkAAhLqoXZbUd4X8,197
5
5
  odoo/addons/shopfloor/utils.py,sha256=Be7J8Tu7ivOW4lpe8IjKxwqfTwfmK-ZkeFEavoYIIF4,375
6
6
  odoo/addons/shopfloor/actions/__init__.py,sha256=_yTf-NtaJmSylBJIoJJvKNYEI-wlqpyRw-S5eJRRzEM,400
@@ -11,7 +11,7 @@ odoo/addons/shopfloor/actions/data_detail.py,sha256=m46sLSuQmxt5NHBoV1GNKsSmc26E
11
11
  odoo/addons/shopfloor/actions/inventory.py,sha256=Slg1hcV-kMb1jWHHu0VmYvQ9C0uqXtUAwAmHJUTE1zo,5976
12
12
  odoo/addons/shopfloor/actions/location_content_transfer_sorter.py,sha256=xpzea-w4zFrmpudQK3omRpZVhJdEIVQLXnuImkaZf5A,3110
13
13
  odoo/addons/shopfloor/actions/message.py,sha256=x12GUAQGq3HWOvf5D4D94NoIo_M9cARo0R6fiH1lKno,29956
14
- odoo/addons/shopfloor/actions/move_line_search.py,sha256=VSffegjlzjaT1tVpS9siDg4hYTU1qKhlVYvcFHt0uWg,4155
14
+ odoo/addons/shopfloor/actions/move_line_search.py,sha256=Xhhx9RHaawNpa31DIgA8Q-cE_YmvBzqJlqkte_lgyY4,7719
15
15
  odoo/addons/shopfloor/actions/packaging.py,sha256=uZxD1bisNS_8M5ZQAHuOz2MR6l26XHR4VZY7QgA69Zs,2662
16
16
  odoo/addons/shopfloor/actions/savepoint.py,sha256=Tmqgh1k16x7L0ZSxVz9yNqIGLAyA7vFb5FWpLrb_GTI,1151
17
17
  odoo/addons/shopfloor/actions/schema.py,sha256=r7CLlzmcHRcaKL0_qQBUeMiDrxbIwYfQB_Ydq867JtU,8556
@@ -25,7 +25,7 @@ odoo/addons/shopfloor/components/scan_handler_lot.py,sha256=adzigHMfdqrK2P286OzA
25
25
  odoo/addons/shopfloor/components/scan_handler_package.py,sha256=INbzbxzg07F4vW8DM_mjtf2dkRN1pbiBuo_xjsId9yk,829
26
26
  odoo/addons/shopfloor/components/scan_handler_product.py,sha256=M0GrdwBDm8Srbe2CwYxldGHiqoDBeZNUr8VP9F5vgtI,925
27
27
  odoo/addons/shopfloor/components/scan_handler_transfer.py,sha256=uHtI-3T4g6ZEpoJJQYZhbJQo3bTXTnGnEs4lC0iluKc,820
28
- odoo/addons/shopfloor/data/shopfloor_scenario_data.xml,sha256=gJZjbQ07szlXx4naZ1ayjSHjdWuCr0ksSG6dgqcyHe0,2398
28
+ odoo/addons/shopfloor/data/shopfloor_scenario_data.xml,sha256=VXuWnIsBJh4FgQcD0CoMFUi32rra8A4Qi5NHNfz6UVA,2602
29
29
  odoo/addons/shopfloor/demo/shopfloor_app_demo.xml,sha256=tqAzRijIm0KCfyIuaKH8wYIUDJR_uNQ_i4HLX5wPSgY,420
30
30
  odoo/addons/shopfloor/demo/shopfloor_menu_demo.xml,sha256=5vvD0UDNwGcH6d3cTuAnOApCB8VlErOKtnfy8_n2yWw,2938
31
31
  odoo/addons/shopfloor/demo/shopfloor_profile_demo.xml,sha256=pcz9A6s2-HVtur8_GZXoiAnVvlCZzlLXSNyQ53KEDlM,253
@@ -43,17 +43,18 @@ odoo/addons/shopfloor/docs/single_pack_transfer_diag_seq.plantuml,sha256=FuN70hu
43
43
  odoo/addons/shopfloor/docs/single_pack_transfer_diag_seq.png,sha256=LAsRPfPeEB6Db8oNL4r637bi2iXXI7r0HFuOaPK3Z9A,33901
44
44
  odoo/addons/shopfloor/docs/zone_picking_diag_seq.plantuml,sha256=Bu0NkP2HwV24IgTHEYV5uwMikk00vOEAGxK53OG9p9s,3527
45
45
  odoo/addons/shopfloor/docs/zone_picking_diag_seq.png,sha256=_qGnbfsShydA3Xjefaurt45fzlgJ8upf11B9DRv9OB0,185581
46
- odoo/addons/shopfloor/i18n/ca.po,sha256=qCGrhxtgUxWekljOYkJ2Y1ruEP6RqupTvGHrCMh-MuE,55736
47
- odoo/addons/shopfloor/i18n/de.po,sha256=whBM6A3rYnNnqUz33hhe88TKBcg_SULxh9AYN2nVWt4,54204
48
- odoo/addons/shopfloor/i18n/es_AR.po,sha256=lP5thpzbHRGxgomHRitGWBBmYf3sGdPhtwKd0AJHvi0,76644
49
- odoo/addons/shopfloor/i18n/it.po,sha256=Mp8-V8lHGbdHu7fnHV_HEJEPysRdVEEygKoA3jh3m2k,75532
50
- odoo/addons/shopfloor/i18n/pt_BR.po,sha256=Zkpr_78dV2hCk3pmPjGAdfGFUkMw9v2_6XPLfyqK4ig,54206
51
- odoo/addons/shopfloor/i18n/shopfloor.pot,sha256=almdPvELMXWvXvhNI966187zzKkYoxfv0cetYHKxalM,54196
46
+ odoo/addons/shopfloor/i18n/ca.po,sha256=Mdv7UgORL2NMGoGX23BV_PG3JgImCTWmU_iGwbb9RzU,59104
47
+ odoo/addons/shopfloor/i18n/de.po,sha256=LSdchGr1zUVNlN6MYpa4B7T9opLsruAVF1wagA70fTw,57572
48
+ odoo/addons/shopfloor/i18n/es_AR.po,sha256=X4Io7boNJLC5a4pU7pMbaLu4B-JWFtuRrIq_diev74Y,80012
49
+ odoo/addons/shopfloor/i18n/it.po,sha256=5u_XPUQ2U34RCCndYXLY8nlJfSQ9Yn1oHZidtR1Nszc,78900
50
+ odoo/addons/shopfloor/i18n/pt_BR.po,sha256=ulg9i8rJdOYqIsejyRnlRUXBWgO1XQ_Fe_jimPUStZw,57574
51
+ odoo/addons/shopfloor/i18n/shopfloor.pot,sha256=MTONXXg0MaL7fbQ0GuPdFHeu0DsCysIo-oLbzAsOLRk,57564
52
52
  odoo/addons/shopfloor/migrations/16.0.2.0.0/post-migration.py,sha256=WfXnS5fj_K78VFaUAe0UiNhFX1C8LA0lkh6Zofllvc4,1311
53
+ odoo/addons/shopfloor/migrations/16.0.2.2.1/post-init_search_move_line_options.py,sha256=OfsDBUUEKtWQOv9pU86edeFlnT2YiPli4PMpv74Q8IY,1176
53
54
  odoo/addons/shopfloor/models/__init__.py,sha256=hQY6dfl-ATXYffWa6cRlVQbyZ2BYc3voUNiNSC32miA,368
54
55
  odoo/addons/shopfloor/models/priority_postpone_mixin.py,sha256=AEu_K9mul_SmjyLK8NLCycRn3BLzirUqNOaf0RVYEpE,1503
55
56
  odoo/addons/shopfloor/models/shopfloor_app.py,sha256=ZfVahQYm0jzyeH7EtlOOhxYUif9OwcHIsyZAbQxEeXA,292
56
- odoo/addons/shopfloor/models/shopfloor_menu.py,sha256=QLz7aN2r_Irp9d1YOUsb6eLeldhLrRnwlpWxjZXzjnE,18013
57
+ odoo/addons/shopfloor/models/shopfloor_menu.py,sha256=glADVnoHw-YKFAe74uKedMH5zVIlaWDtwdtnl0Wkl8E,21366
57
58
  odoo/addons/shopfloor/models/stock_location.py,sha256=wrLZ_-yjLB-1zWevWtqNdk8WMdyKJcpnzuNGyQOKL70,3098
58
59
  odoo/addons/shopfloor/models/stock_move.py,sha256=1G_HyWY6xHwybBbR92IKS1euqnUHeMP91VOCdoE-asI,4940
59
60
  odoo/addons/shopfloor/models/stock_move_line.py,sha256=uYZJZdhf-X1HHHRYfWf_oygkDNrzNgP0TIG5TXJxSAY,13360
@@ -74,17 +75,17 @@ odoo/addons/shopfloor/services/__init__.py,sha256=4lhF0VNx8QosVEZj9QJYgv6oWD0kl9
74
75
  odoo/addons/shopfloor/services/checkout.py,sha256=sNCRIJi7THcCoBWNIybfzJ2b82L_0MXWP1IS6a9I3AQ,76251
75
76
  odoo/addons/shopfloor/services/cluster_picking.py,sha256=v3UduBo5iIUW85nP7JtNFAsFr3LmePvGSK-DXvn_WYI,68221
76
77
  odoo/addons/shopfloor/services/delivery.py,sha256=ko2xre3q-P2LaGd4CMKFWJoavk9QXTI8WKXghf8PoL0,33226
77
- odoo/addons/shopfloor/services/location_content_transfer.py,sha256=hpcGz9GfZW59WTIdBSV-NQ9aGxAg9_mq3mFD8O9wELo,50268
78
- odoo/addons/shopfloor/services/menu.py,sha256=ByVZo7Hn9nnrfkFI8A7bUfdlqHh0B__xLD4_PvUBFR0,2225
78
+ odoo/addons/shopfloor/services/location_content_transfer.py,sha256=gn-8W_u2tFT-A69Cot8B6CKG6pFB_21EjC2MYisfDME,49472
79
+ odoo/addons/shopfloor/services/menu.py,sha256=m1eNOReTda_xD-p-m8k2Pn5cJQOLWTiaBGW46zxsYsk,2354
79
80
  odoo/addons/shopfloor/services/picking_batch.py,sha256=w51R5HHkQxCHle72k28VetXKfIRRh5GTaEXv6mhikvQ,4649
80
- odoo/addons/shopfloor/services/service.py,sha256=_uuHCHDziPc_yNl9IfQWM4unumg4Tb3BCjfcAjoYyz0,4179
81
+ odoo/addons/shopfloor/services/service.py,sha256=HuxZZQ5MxnvDtr89HWQW2muuPvEF4vjI9ArdSFeAxg8,4882
81
82
  odoo/addons/shopfloor/services/single_pack_transfer.py,sha256=S9zZ027fclqUBvqqFHMnD1QcbUb_dYyCtWs1E4pOAV4,16120
82
- odoo/addons/shopfloor/services/zone_picking.py,sha256=v4CcEqijv9zYGEV8GQ96yKOLLa20wEvKqbFaqHbxIsI,83976
83
+ odoo/addons/shopfloor/services/zone_picking.py,sha256=H6cA3NAHhxq3uUuwsCjep723fUHkxEJJgMD9duV6nek,83952
83
84
  odoo/addons/shopfloor/services/forms/__init__.py,sha256=nxwJdKX47hb56ERf4Qb3UE5dkdsHCbkaXMAXs4XMAd8,27
84
85
  odoo/addons/shopfloor/services/forms/picking_form.py,sha256=F15G5yw78Pd1WgPjMz00-K1JyGaTdfdvVYzG4Dubpqk,2626
85
86
  odoo/addons/shopfloor/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
86
- odoo/addons/shopfloor/static/description/index.html,sha256=2UyCI4z4v_Ycdle35juAOPUQyJgBXti9zW24QNexblk,17547
87
- odoo/addons/shopfloor/tests/__init__.py,sha256=EhvfsI_n8YH9p6SOjrHyHks8hM_lYRdmD37BRFLOh5U,3824
87
+ odoo/addons/shopfloor/static/description/index.html,sha256=HEzd-EovG45y9j9WQixsl1TJCApIrkIEk8wyFu-OFC8,17547
88
+ odoo/addons/shopfloor/tests/__init__.py,sha256=G9IP98Vs4Vx26FYbaxQcJST7xU7gjUggxTEiy8DPCMI,3902
88
89
  odoo/addons/shopfloor/tests/common.py,sha256=v1C7DQT-MvTk81xIYyv--c1BaIpwbia2ey8s35nvrK4,11611
89
90
  odoo/addons/shopfloor/tests/models.py,sha256=jNbYUqYLxkbQMn4j8bejHM3l6CRThJBDfpATl8H83OM,939
90
91
  odoo/addons/shopfloor/tests/test_actions_change_package_lot.py,sha256=iWtTEbIKKrwqvoCUyfuaq1jAtnrW3DP8BQ1xEdZk9t4,46829
@@ -93,6 +94,7 @@ odoo/addons/shopfloor/tests/test_actions_data_base.py,sha256=vPhMBZ5xOKlY8So49PC
93
94
  odoo/addons/shopfloor/tests/test_actions_data_detail.py,sha256=_bPJRbRVqisA7reXqrleXGfqtMb0Uq7ntakVn4C2T_Y,14016
94
95
  odoo/addons/shopfloor/tests/test_actions_packaging.py,sha256=viofwEFk4aqn2tNaQGz2gGvBH6XoY25c6fO0a0uU448,1616
95
96
  odoo/addons/shopfloor/tests/test_actions_search.py,sha256=lQo4G1PRG0iiFD832-H7wDuuSgQR-iNkYmdWk0H-tBk,9139
97
+ odoo/addons/shopfloor/tests/test_actions_search_move_line.py,sha256=ys7Y0mGdg3LNs8l1x8WCx8I_Qb9xsU9XAXOGPKuWv48,5783
96
98
  odoo/addons/shopfloor/tests/test_actions_stock.py,sha256=f4OEAIa39szfOMvVUx686iKrmIusNLgLD9DesOpNH4k,1936
97
99
  odoo/addons/shopfloor/tests/test_checkout_auto_post.py,sha256=enJwyDLRz4N1yv1cCJXijoMZp8lvn1REhh6zCyIsO9c,3107
98
100
  odoo/addons/shopfloor/tests/test_checkout_base.py,sha256=tTHRsm4zEyVMi4ggKF0I0f-diHQHGxvk18PZHuwTmps,3162
@@ -139,8 +141,8 @@ odoo/addons/shopfloor/tests/test_delivery_set_qty_done_line.py,sha256=WOwsAV0qeg
139
141
  odoo/addons/shopfloor/tests/test_delivery_set_qty_done_pack.py,sha256=AILsmgkx4QSRzu4C281DkMKBSy_vqg-pUzu7ytYYgfY,5387
140
142
  odoo/addons/shopfloor/tests/test_delivery_sublocation.py,sha256=UsjtvjRNU1qNTuXpcZyAcBhFHZcj-0IoviIl4a7D1_4,6301
141
143
  odoo/addons/shopfloor/tests/test_location_content_transfer_base.py,sha256=zKwOr-pVEFLxMO6DCiVn6q6d9F9gU3OemJ1Zid1T63A,6837
142
- odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py,sha256=GjzI7me8M-JM-DTwq4I-iLbKKUS3FdFriTw0qmUpeVQ,4712
143
- odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py,sha256=Kb6dEvbsLUrCHalp_RlQlkLX0qNjf7SQu-bXvD5ookw,24002
144
+ odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py,sha256=G4laNv5FDP4wfqLhawkdRRm9LOzunr1jo0HImWiKZfk,6466
145
+ odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py,sha256=ktvi8A8Ve1NIHQzu5CrFoGoJ8msShkoPeRSFrw5Ab70,24021
144
146
  odoo/addons/shopfloor/tests/test_location_content_transfer_putaway.py,sha256=rcnv0Y_J1rr9YuCnnnNzS68lOp5tYn9Xx8_Kb1L6AWM,5847
145
147
  odoo/addons/shopfloor/tests/test_location_content_transfer_scan_location.py,sha256=XvEmMW8e2fMFQ_8iHKbrxm-vFVcBMRYtof7opuVQ6E8,1519
146
148
  odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_all.py,sha256=cMiwpGMzsITHE0HYQLqzqtTX5_i8p5sPRG39H56Xj1Q,14276
@@ -148,7 +150,8 @@ odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_packa
148
150
  odoo/addons/shopfloor/tests/test_location_content_transfer_single.py,sha256=JO8huthUh-qLhXUi14LzrnN5gnr46-8JlAid3MfHh3U,33385
149
151
  odoo/addons/shopfloor/tests/test_location_content_transfer_start.py,sha256=BzCpuJTia8YgjrPe0PjzmSOG8j9aBMGupj_yR_IbKMQ,14461
150
152
  odoo/addons/shopfloor/tests/test_menu_base.py,sha256=5gOKXU0eYTh_6YIV6EFJrhRasQ3Y7UnGYMlDr3EJZOc,9197
151
- odoo/addons/shopfloor/tests/test_menu_counters.py,sha256=rzf0q-ndVj4tUemuZ_odku7yvG60Kj_hXg8zxEQDUjo,2110
153
+ odoo/addons/shopfloor/tests/test_menu_contrains.py,sha256=vyT7fye_-VjxO0oapM5nkygNcABoIxh3xCJ97dVZI8Q,1325
154
+ odoo/addons/shopfloor/tests/test_menu_counters.py,sha256=RkfZYMjS8fQSz0QMsLB8nkciY7X6JN2KoL3MS93S2PI,6328
152
155
  odoo/addons/shopfloor/tests/test_misc.py,sha256=3Fqd3wCuvmiXB7eZxjMzZqCsRkg1jW1xUCkdjiHmhrw,812
153
156
  odoo/addons/shopfloor/tests/test_move_action_assign.py,sha256=pGg2o0gRLM-osexe8mxm8Zow5txXlD2MCoUCMQLfvIM,3472
154
157
  odoo/addons/shopfloor/tests/test_openapi.py,sha256=xkD7AkC-Ple7TIbY5o5_YZTzZGlJjZ9Hh7SnVyiSQdY,746
@@ -178,11 +181,11 @@ odoo/addons/shopfloor/tests/test_zone_picking_unload_buffer_lines.py,sha256=BwQZ
178
181
  odoo/addons/shopfloor/tests/test_zone_picking_unload_set_destination.py,sha256=TdtQf5v1IV_40lRxhwsFZsxVYiTgVVwq5sbyPnZBuIA,13681
179
182
  odoo/addons/shopfloor/tests/test_zone_picking_unload_single.py,sha256=MNqL2YEsG7sU768sYDUh15wDpz3xx1bKy6J_28oVUaQ,4409
180
183
  odoo/addons/shopfloor/tests/test_zone_picking_zero_check.py,sha256=HB0hrvRsH7Ucv1pQm-D8dMWq6tQuTbrI8CPFqZh0Zb0,1376
181
- odoo/addons/shopfloor/views/shopfloor_menu.xml,sha256=aIaefiCViW2OhELeunbyw5S1VU7s0TfPLu4Dq4z2TlE,9039
184
+ odoo/addons/shopfloor/views/shopfloor_menu.xml,sha256=zAKIIMnglUsRnfvusKjKsRaZdQVahFZ2Ob4fFZZGsd0,12059
182
185
  odoo/addons/shopfloor/views/stock_location.xml,sha256=d7iqbOQZbb5YPSdAXlQ6spcj8dUvQ37DpEGuaLX5B1M,829
183
186
  odoo/addons/shopfloor/views/stock_move_line.xml,sha256=tn3pV67aRoYmn3qkm3aSgdYArY-z9SIrl_4fpJFy3Jo,1984
184
187
  odoo/addons/shopfloor/views/stock_picking_type.xml,sha256=Ckn2835hO4HtuZQX9x3382C4gs789fb94Cx0444mBkc,800
185
- odoo_addon_shopfloor-16.0.2.2.0.dist-info/METADATA,sha256=R-HkXqpYIS8RCt-B-HAd0_ZAuBm8SbORiheTDFiHfcU,6761
186
- odoo_addon_shopfloor-16.0.2.2.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
187
- odoo_addon_shopfloor-16.0.2.2.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
188
- odoo_addon_shopfloor-16.0.2.2.0.dist-info/RECORD,,
188
+ odoo_addon_shopfloor-16.0.2.2.1.5.dist-info/METADATA,sha256=xoz8Uff7zxTL91c6dCy2G-6Aj4pCU0-UebBtVPKg_oI,6763
189
+ odoo_addon_shopfloor-16.0.2.2.1.5.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
190
+ odoo_addon_shopfloor-16.0.2.2.1.5.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
191
+ odoo_addon_shopfloor-16.0.2.2.1.5.dist-info/RECORD,,