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.
- odoo/addons/shopfloor/README.rst +1 -1
- odoo/addons/shopfloor/__manifest__.py +1 -1
- odoo/addons/shopfloor/actions/move_line_search.py +125 -33
- odoo/addons/shopfloor/data/shopfloor_scenario_data.xml +7 -2
- odoo/addons/shopfloor/i18n/ca.po +106 -4
- odoo/addons/shopfloor/i18n/de.po +104 -2
- odoo/addons/shopfloor/i18n/es_AR.po +108 -6
- odoo/addons/shopfloor/i18n/it.po +108 -6
- odoo/addons/shopfloor/i18n/pt_BR.po +104 -2
- odoo/addons/shopfloor/i18n/shopfloor.pot +102 -0
- odoo/addons/shopfloor/migrations/16.0.2.2.1/post-init_search_move_line_options.py +33 -0
- odoo/addons/shopfloor/models/shopfloor_menu.py +85 -0
- odoo/addons/shopfloor/services/location_content_transfer.py +20 -41
- odoo/addons/shopfloor/services/menu.py +6 -3
- odoo/addons/shopfloor/services/service.py +28 -2
- odoo/addons/shopfloor/services/zone_picking.py +2 -2
- odoo/addons/shopfloor/static/description/index.html +1 -1
- odoo/addons/shopfloor/tests/__init__.py +2 -0
- odoo/addons/shopfloor/tests/test_actions_search_move_line.py +128 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py +41 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py +2 -2
- odoo/addons/shopfloor/tests/test_menu_contrains.py +40 -0
- odoo/addons/shopfloor/tests/test_menu_counters.py +112 -2
- odoo/addons/shopfloor/views/shopfloor_menu.xml +54 -0
- {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/METADATA +2 -2
- {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/RECORD +28 -25
- {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/WHEEL +0 -0
- {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.
|
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.
|
136
|
+
.search([("profile_id", "=", self.wms_profile.id)])
|
54
137
|
)
|
55
|
-
|
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>
|
{odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: odoo-addon-shopfloor
|
3
|
-
Version: 16.0.2.2.
|
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:
|
39
|
+
!! source digest: sha256:bb5933746c40b25c45fcadac4704a1a752a86c48bb857969ca935196736d24c6
|
40
40
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
41
41
|
|
42
42
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
{odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/RECORD
RENAMED
@@ -1,6 +1,6 @@
|
|
1
|
-
odoo/addons/shopfloor/README.rst,sha256=
|
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=
|
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=
|
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=
|
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=
|
47
|
-
odoo/addons/shopfloor/i18n/de.po,sha256=
|
48
|
-
odoo/addons/shopfloor/i18n/es_AR.po,sha256=
|
49
|
-
odoo/addons/shopfloor/i18n/it.po,sha256=
|
50
|
-
odoo/addons/shopfloor/i18n/pt_BR.po,sha256=
|
51
|
-
odoo/addons/shopfloor/i18n/shopfloor.pot,sha256=
|
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=
|
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=
|
78
|
-
odoo/addons/shopfloor/services/menu.py,sha256=
|
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=
|
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=
|
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=
|
87
|
-
odoo/addons/shopfloor/tests/__init__.py,sha256=
|
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=
|
143
|
-
odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py,sha256=
|
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/
|
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=
|
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.
|
186
|
-
odoo_addon_shopfloor-16.0.2.2.
|
187
|
-
odoo_addon_shopfloor-16.0.2.2.
|
188
|
-
odoo_addon_shopfloor-16.0.2.2.
|
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,,
|
{odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|