odoo-addon-shopfloor 16.0.2.2.1.6__py3-none-any.whl → 16.0.2.3.0__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/data_detail.py +71 -1
- odoo/addons/shopfloor/actions/schema_detail.py +37 -0
- odoo/addons/shopfloor/static/description/index.html +1 -1
- odoo/addons/shopfloor/tests/test_actions_data_base.py +41 -0
- odoo/addons/shopfloor/tests/test_actions_data_detail.py +3 -2
- {odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.3.0.dist-info}/METADATA +2 -2
- {odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.3.0.dist-info}/RECORD +11 -11
- {odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.3.0.dist-info}/WHEEL +0 -0
- {odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.3.0.dist-info}/top_level.txt +0 -0
odoo/addons/shopfloor/README.rst
CHANGED
@@ -7,7 +7,7 @@ Shopfloor
|
|
7
7
|
!! This file is generated by oca-gen-addon-readme !!
|
8
8
|
!! changes will be overwritten. !!
|
9
9
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
10
|
-
!! source digest: sha256:
|
10
|
+
!! source digest: sha256:4c4dc0050165bd957675ce9d57514bb2868133060d042e37d9ef7cba29c9fd6b
|
11
11
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
12
12
|
|
13
13
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# Copyright 2020 Camptocamp SA (http://www.camptocamp.com)
|
2
2
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
from collections import defaultdict
|
4
|
+
|
3
5
|
from odoo.tools.float_utils import float_round
|
4
6
|
|
5
7
|
from odoo.addons.component.core import Component
|
@@ -24,12 +26,47 @@ class DataDetailAction(Component):
|
|
24
26
|
def _location_detail_parser(self):
|
25
27
|
return self._location_parser + [
|
26
28
|
"complete_name",
|
29
|
+
(
|
30
|
+
"quant_ids:products",
|
31
|
+
lambda record, fname: self._location_content(record),
|
32
|
+
),
|
27
33
|
(
|
28
34
|
"reserved_move_line_ids:reserved_move_lines",
|
29
35
|
lambda record, fname: self.move_lines(record[fname]),
|
30
36
|
),
|
31
37
|
]
|
32
38
|
|
39
|
+
def _location_content(self, record):
|
40
|
+
res = []
|
41
|
+
product_qties = defaultdict(lambda: defaultdict(lambda: 0))
|
42
|
+
for quant in record.quant_ids:
|
43
|
+
product_qties[quant.product_id][quant.lot_id] += quant.quantity
|
44
|
+
for product, quants_qty in product_qties.items():
|
45
|
+
val = self.product(product)
|
46
|
+
lots = []
|
47
|
+
val["lots"] = lots
|
48
|
+
qty_total = 0
|
49
|
+
for lot, qty in quants_qty.items():
|
50
|
+
qty_total += qty
|
51
|
+
if not lot:
|
52
|
+
continue
|
53
|
+
lot_val = self._location_lot(lot)
|
54
|
+
lot_val["quantity"] = qty
|
55
|
+
lots.append(lot_val)
|
56
|
+
val["quantity"] = qty_total
|
57
|
+
res.append(val)
|
58
|
+
return res
|
59
|
+
|
60
|
+
def _location_lot(self, record, **kw):
|
61
|
+
# Define a new method to not overload the base one which is used in many places
|
62
|
+
return self._jsonify(record, self._location_lot_detail_parser, **kw)
|
63
|
+
|
64
|
+
@property
|
65
|
+
def _location_lot_detail_parser(self):
|
66
|
+
return self._lot_parser + [
|
67
|
+
"removal_date",
|
68
|
+
]
|
69
|
+
|
33
70
|
@ensure_model("stock.picking")
|
34
71
|
def picking_detail(self, record, **kw):
|
35
72
|
parser = self._picking_detail_parser
|
@@ -92,7 +129,6 @@ class DataDetailAction(Component):
|
|
92
129
|
def _lot_detail_parser(self):
|
93
130
|
return self._lot_parser + [
|
94
131
|
"removal_date",
|
95
|
-
"expiration_date:expire_date",
|
96
132
|
(
|
97
133
|
"product_id:product",
|
98
134
|
lambda record, fname: self.product_detail(record[fname]),
|
@@ -131,6 +167,10 @@ class DataDetailAction(Component):
|
|
131
167
|
def _product_detail_parser(self):
|
132
168
|
return self._product_parser + [
|
133
169
|
("image_128:image", self._product_image_url),
|
170
|
+
(
|
171
|
+
"stock_quant_ids:locations",
|
172
|
+
lambda record, fname: self._locations_for_product(record),
|
173
|
+
),
|
134
174
|
(
|
135
175
|
"product_tmpl_id:manufacturer",
|
136
176
|
lambda rec, fname: self._jsonify(
|
@@ -139,6 +179,36 @@ class DataDetailAction(Component):
|
|
139
179
|
),
|
140
180
|
]
|
141
181
|
|
182
|
+
def _get_product_locations(self, record):
|
183
|
+
# Retrieve all products -- maybe more than one location
|
184
|
+
product_template = record.product_tmpl_id
|
185
|
+
products = product_template.product_variant_ids
|
186
|
+
quants = self.env["stock.quant"].search(
|
187
|
+
[("product_id", "in", products.ids), ("location_id.usage", "=", "internal")]
|
188
|
+
)
|
189
|
+
return quants.location_id
|
190
|
+
|
191
|
+
def _locations_for_product(self, record):
|
192
|
+
res = []
|
193
|
+
for location in self._get_product_locations(record):
|
194
|
+
quants = location.quant_ids.filtered(lambda q: q.product_id == record)
|
195
|
+
loc = self.location(location)
|
196
|
+
loc["complete_name"] = location.complete_name
|
197
|
+
loc["quantity"] = sum(quants.mapped("quantity"))
|
198
|
+
lots = []
|
199
|
+
quants_lot_qty = defaultdict(lambda: 0)
|
200
|
+
for quant in quants:
|
201
|
+
quants_lot_qty[quant.lot_id] += quant.quantity
|
202
|
+
for lot, qty in quants_lot_qty.items():
|
203
|
+
if not lot:
|
204
|
+
continue
|
205
|
+
lot_val = self._location_lot(lot)
|
206
|
+
lot_val["quantity"] = qty
|
207
|
+
lots.append(lot_val)
|
208
|
+
loc["lots"] = lots
|
209
|
+
res.append(loc)
|
210
|
+
return res
|
211
|
+
|
142
212
|
def _product_image_url(self, record, field_name):
|
143
213
|
if not record[field_name]:
|
144
214
|
return None
|
@@ -16,6 +16,27 @@ class ShopfloorSchemaDetailAction(Component):
|
|
16
16
|
"required": True,
|
17
17
|
},
|
18
18
|
"reserved_move_lines": self._schema_list_of(self.move_line()),
|
19
|
+
"products": self._schema_list_of(self.location_product()),
|
20
|
+
}
|
21
|
+
)
|
22
|
+
return schema
|
23
|
+
|
24
|
+
def location_product(self):
|
25
|
+
schema = self.product()
|
26
|
+
schema.update(
|
27
|
+
{
|
28
|
+
"quantity": {"type": "float", "required": True},
|
29
|
+
"lots": self._schema_list_of(self.location_lot()),
|
30
|
+
}
|
31
|
+
)
|
32
|
+
return schema
|
33
|
+
|
34
|
+
def location_lot(self):
|
35
|
+
schema = self.lot()
|
36
|
+
schema.update(
|
37
|
+
{
|
38
|
+
"removal_date": {"type": "string", "nullable": True, "required": False},
|
39
|
+
"quantity": {"type": "float", "required": True},
|
19
40
|
}
|
20
41
|
)
|
21
42
|
return schema
|
@@ -76,6 +97,22 @@ class ShopfloorSchemaDetailAction(Component):
|
|
76
97
|
"image": {"type": "string", "nullable": True, "required": False},
|
77
98
|
"manufacturer": self._schema_dict_of(self._simple_record()),
|
78
99
|
"suppliers": self._schema_list_of(self.product_supplierinfo()),
|
100
|
+
"locations": self._schema_list_of(self.product_location()),
|
101
|
+
}
|
102
|
+
)
|
103
|
+
return schema
|
104
|
+
|
105
|
+
def product_location(self):
|
106
|
+
schema = self.location()
|
107
|
+
schema.update(
|
108
|
+
{
|
109
|
+
"complete_name": {
|
110
|
+
"type": "string",
|
111
|
+
"nullable": False,
|
112
|
+
"required": True,
|
113
|
+
},
|
114
|
+
"quantity": {"type": "float", "required": True},
|
115
|
+
"lots": self._schema_list_of(self.location_lot()),
|
79
116
|
}
|
80
117
|
)
|
81
118
|
return schema
|
@@ -367,7 +367,7 @@ ul.auto-toc {
|
|
367
367
|
!! This file is generated by oca-gen-addon-readme !!
|
368
368
|
!! changes will be overwritten. !!
|
369
369
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
370
|
-
!! source digest: sha256:
|
370
|
+
!! source digest: sha256:4c4dc0050165bd957675ce9d57514bb2868133060d042e37d9ef7cba29c9fd6b
|
371
371
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
372
372
|
<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/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/wms/tree/16.0/shopfloor"><img alt="OCA/wms" src="https://img.shields.io/badge/github-OCA%2Fwms-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/wms-16-0/wms-16-0-shopfloor"><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/wms&target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
373
373
|
<p>Shopfloor is a barcode scanner application for internal warehouse operations.</p>
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# Copyright 2020 Camptocamp SA (http://www.camptocamp.com)
|
2
2
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
from collections import defaultdict
|
4
|
+
|
3
5
|
from odoo.tools.float_utils import float_round
|
4
6
|
|
5
7
|
from odoo.addons.shopfloor_base.tests.common_misc import ActionsDataTestMixin
|
@@ -181,6 +183,16 @@ class ActionsDataCaseBase(CommonCase, ActionsDataTestMixin):
|
|
181
183
|
data.update(kw)
|
182
184
|
return data
|
183
185
|
|
186
|
+
def _expected_lot(self, record, **kw):
|
187
|
+
data = {
|
188
|
+
"id": record.id,
|
189
|
+
"name": record.name,
|
190
|
+
"ref": record.ref or None,
|
191
|
+
"expiration_date": record.expiration_date or None,
|
192
|
+
}
|
193
|
+
data.update(kw)
|
194
|
+
return data
|
195
|
+
|
184
196
|
|
185
197
|
class ActionsDataDetailCaseBase(ActionsDataCaseBase):
|
186
198
|
@classmethod
|
@@ -206,6 +218,16 @@ class ActionsDataDetailCaseBase(ActionsDataCaseBase):
|
|
206
218
|
"reserved_move_lines": self.data_detail.move_lines(
|
207
219
|
kw.get("move_lines", [])
|
208
220
|
),
|
221
|
+
"products": self.data_detail._location_content(record),
|
222
|
+
}
|
223
|
+
)
|
224
|
+
|
225
|
+
def _expected_location_lot(self, record, **kw):
|
226
|
+
return dict(
|
227
|
+
**self._expected_lot(record),
|
228
|
+
**{
|
229
|
+
"removal_date": record.removal_date or None,
|
230
|
+
"quantity": sum(record.quant_ids.mapped("quantity")),
|
209
231
|
}
|
210
232
|
)
|
211
233
|
|
@@ -215,16 +237,35 @@ class ActionsDataDetailCaseBase(ActionsDataCaseBase):
|
|
215
237
|
record.qty_available - record.free_qty,
|
216
238
|
precision_rounding=record.uom_id.rounding,
|
217
239
|
)
|
240
|
+
locations = self.data_detail._get_product_locations(record)
|
218
241
|
detail = {
|
219
242
|
"qty_available": qty_available,
|
220
243
|
"qty_reserved": qty_reserved,
|
221
244
|
}
|
245
|
+
locations_info = []
|
246
|
+
for location in locations:
|
247
|
+
quants = location.quant_ids.filtered(lambda q: q.product_id == record)
|
248
|
+
loc = self._expected_location(location)
|
249
|
+
loc["complete_name"] = location.complete_name
|
250
|
+
loc["quantity"] = sum(quants.mapped("quantity"))
|
251
|
+
loc["lots"] = []
|
252
|
+
quants_lot_qty = defaultdict(lambda: 0)
|
253
|
+
for quant in quants:
|
254
|
+
quants_lot_qty[quant.lot_id] += quant.quantity
|
255
|
+
for lot, qty in quants_lot_qty.items():
|
256
|
+
if not lot:
|
257
|
+
continue
|
258
|
+
lot_val = self._expected_location_lot(lot)
|
259
|
+
lot_val["quantity"] = qty
|
260
|
+
loc["lots"].append(lot_val)
|
261
|
+
locations_info.append(loc)
|
222
262
|
if kw.get("full"):
|
223
263
|
detail.update(
|
224
264
|
{
|
225
265
|
"image": "/web/image/product.product/{}/image_128".format(record.id)
|
226
266
|
if record.image_128
|
227
267
|
else None,
|
268
|
+
"locations": locations_info,
|
228
269
|
"manufacturer": {
|
229
270
|
"id": record.manufacturer_id.id,
|
230
271
|
"name": record.manufacturer_id.name,
|
@@ -56,11 +56,12 @@ class TestActionsDataDetailCase(ActionsDataDetailCaseBase):
|
|
56
56
|
"name": lot.name,
|
57
57
|
"ref": "#FOO",
|
58
58
|
"expiration_date": "2020-05-31T00:00:00",
|
59
|
+
"removal_date": "2020-05-20T00:00:00",
|
59
60
|
"product": self._expected_product_detail(self.product_b, full=True),
|
60
61
|
}
|
61
62
|
# ignore time and TZ, we don't care here
|
62
|
-
self.assertEqual(data.
|
63
|
-
self.assertEqual(data.
|
63
|
+
self.assertEqual(data.get("removal_date", "").split("T")[0], "2020-05-20")
|
64
|
+
self.assertEqual(data.get("expiration_date", "").split("T")[0], "2020-05-31")
|
64
65
|
self.assertDictEqual(data, expected)
|
65
66
|
|
66
67
|
def test_data_package(self):
|
{odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.3.0.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.
|
3
|
+
Version: 16.0.2.3.0
|
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:4c4dc0050165bd957675ce9d57514bb2868133060d042e37d9ef7cba29c9fd6b
|
40
40
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
41
41
|
|
42
42
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
{odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.3.0.dist-info}/RECORD
RENAMED
@@ -1,13 +1,13 @@
|
|
1
|
-
odoo/addons/shopfloor/README.rst,sha256=
|
1
|
+
odoo/addons/shopfloor/README.rst,sha256=igj3JCBBGe9PVg72B3IpVRw7sJOj7cwqPPl3ZZSbV48,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=A2L2IIHDaRHyEFyHu-m-r6_fqdO4z1viAx73eiFzc_s,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
|
7
7
|
odoo/addons/shopfloor/actions/change_package_lot.py,sha256=-MFk9G5vKJqWwaNYs9BSv4LHprbTLXE9xvRBNpfvFmo,6729
|
8
8
|
odoo/addons/shopfloor/actions/completion_info.py,sha256=Q_wlx8VJHOPFZbwGrxHBYa-gt04ZAXBsRBGh0aLuRrk,1483
|
9
9
|
odoo/addons/shopfloor/actions/data.py,sha256=ASj6VdLrkzJD6jTWsbKQ4LNZ_x2NU4BaXH_FA9RJvJQ,12846
|
10
|
-
odoo/addons/shopfloor/actions/data_detail.py,sha256=
|
10
|
+
odoo/addons/shopfloor/actions/data_detail.py,sha256=eVW5oOpl5Tkwkpb0he0Xj_PHLRS8LkOa5VOI2w5R2Zo,8752
|
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
|
@@ -15,7 +15,7 @@ odoo/addons/shopfloor/actions/move_line_search.py,sha256=Xhhx9RHaawNpa31DIgA8Q-c
|
|
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
|
18
|
-
odoo/addons/shopfloor/actions/schema_detail.py,sha256=
|
18
|
+
odoo/addons/shopfloor/actions/schema_detail.py,sha256=_xtm8ptRXAPBIMTyr8XKMQtogcjBudh-QRqKUZEEHGU,4968
|
19
19
|
odoo/addons/shopfloor/actions/search.py,sha256=ai-pLBLWiDjKYlZ2uWZQG6PeB2jBj5-1D34XjELaXMY,6851
|
20
20
|
odoo/addons/shopfloor/actions/stock.py,sha256=_m8b9u6V1P47G15RHw1JN4nLLy8N8bPlpe7Ip0QUpEs,10758
|
21
21
|
odoo/addons/shopfloor/actions/stock_unreserve.py,sha256=LoFd9hzeNlTQEn0-FN3N4xWLSo1uuiw5E394OEPHm-Y,2720
|
@@ -84,14 +84,14 @@ odoo/addons/shopfloor/services/zone_picking.py,sha256=H6cA3NAHhxq3uUuwsCjep723fU
|
|
84
84
|
odoo/addons/shopfloor/services/forms/__init__.py,sha256=nxwJdKX47hb56ERf4Qb3UE5dkdsHCbkaXMAXs4XMAd8,27
|
85
85
|
odoo/addons/shopfloor/services/forms/picking_form.py,sha256=F15G5yw78Pd1WgPjMz00-K1JyGaTdfdvVYzG4Dubpqk,2626
|
86
86
|
odoo/addons/shopfloor/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
|
87
|
-
odoo/addons/shopfloor/static/description/index.html,sha256=
|
87
|
+
odoo/addons/shopfloor/static/description/index.html,sha256=8N6zktuYYLeo0GK8epzFHAyjez1OTy4iwgBGr7hYokI,17547
|
88
88
|
odoo/addons/shopfloor/tests/__init__.py,sha256=G9IP98Vs4Vx26FYbaxQcJST7xU7gjUggxTEiy8DPCMI,3902
|
89
89
|
odoo/addons/shopfloor/tests/common.py,sha256=v1C7DQT-MvTk81xIYyv--c1BaIpwbia2ey8s35nvrK4,11611
|
90
90
|
odoo/addons/shopfloor/tests/models.py,sha256=jNbYUqYLxkbQMn4j8bejHM3l6CRThJBDfpATl8H83OM,939
|
91
91
|
odoo/addons/shopfloor/tests/test_actions_change_package_lot.py,sha256=iWtTEbIKKrwqvoCUyfuaq1jAtnrW3DP8BQ1xEdZk9t4,46829
|
92
92
|
odoo/addons/shopfloor/tests/test_actions_data.py,sha256=pHuabdpTGbbvh7KSam-slLuwdIxLPy4JqZR0iLA9W4U,16514
|
93
|
-
odoo/addons/shopfloor/tests/test_actions_data_base.py,sha256=
|
94
|
-
odoo/addons/shopfloor/tests/test_actions_data_detail.py,sha256=
|
93
|
+
odoo/addons/shopfloor/tests/test_actions_data_base.py,sha256=bstdEhLIwOTOzQNUrIs-M7lnPdWQ5AILIDn-cXqC4xM,10499
|
94
|
+
odoo/addons/shopfloor/tests/test_actions_data_detail.py,sha256=0eHM8z1kka0FhGMcDk-Rc8hQNvHlivNzWQEMOnZH-9A,14079
|
95
95
|
odoo/addons/shopfloor/tests/test_actions_packaging.py,sha256=viofwEFk4aqn2tNaQGz2gGvBH6XoY25c6fO0a0uU448,1616
|
96
96
|
odoo/addons/shopfloor/tests/test_actions_search.py,sha256=lQo4G1PRG0iiFD832-H7wDuuSgQR-iNkYmdWk0H-tBk,9139
|
97
97
|
odoo/addons/shopfloor/tests/test_actions_search_move_line.py,sha256=ys7Y0mGdg3LNs8l1x8WCx8I_Qb9xsU9XAXOGPKuWv48,5783
|
@@ -185,7 +185,7 @@ odoo/addons/shopfloor/views/shopfloor_menu.xml,sha256=zAKIIMnglUsRnfvusKjKsRaZdQ
|
|
185
185
|
odoo/addons/shopfloor/views/stock_location.xml,sha256=d7iqbOQZbb5YPSdAXlQ6spcj8dUvQ37DpEGuaLX5B1M,829
|
186
186
|
odoo/addons/shopfloor/views/stock_move_line.xml,sha256=tn3pV67aRoYmn3qkm3aSgdYArY-z9SIrl_4fpJFy3Jo,1984
|
187
187
|
odoo/addons/shopfloor/views/stock_picking_type.xml,sha256=Ckn2835hO4HtuZQX9x3382C4gs789fb94Cx0444mBkc,800
|
188
|
-
odoo_addon_shopfloor-16.0.2.
|
189
|
-
odoo_addon_shopfloor-16.0.2.
|
190
|
-
odoo_addon_shopfloor-16.0.2.
|
191
|
-
odoo_addon_shopfloor-16.0.2.
|
188
|
+
odoo_addon_shopfloor-16.0.2.3.0.dist-info/METADATA,sha256=8wNWLnsyzRVU0_S0XBk0pnvMQgXH3gFvnXuEsZy3w5M,6761
|
189
|
+
odoo_addon_shopfloor-16.0.2.3.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
190
|
+
odoo_addon_shopfloor-16.0.2.3.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
|
191
|
+
odoo_addon_shopfloor-16.0.2.3.0.dist-info/RECORD,,
|
{odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.3.0.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|