odoo-addon-shopfloor 16.0.2.2.1.6__py3-none-any.whl → 16.0.2.4.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/message.py +9 -2
- odoo/addons/shopfloor/actions/schema_detail.py +37 -0
- odoo/addons/shopfloor/i18n/shopfloor.pot +1 -1
- odoo/addons/shopfloor/services/checkout.py +3 -1
- 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/addons/shopfloor/tests/test_checkout_base.py +10 -1
- {odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.4.0.dist-info}/METADATA +2 -2
- {odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.4.0.dist-info}/RECORD +15 -15
- {odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.4.0.dist-info}/WHEEL +0 -0
- {odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.4.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:ae2b67a7a72797798a86c8d85d4a2336941d01d21bf28ffde3b646be05924595
|
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
|
@@ -686,12 +686,19 @@ class MessageAction(Component):
|
|
686
686
|
"body": _("The picked quantity must be a value above zero."),
|
687
687
|
}
|
688
688
|
|
689
|
-
def selected_lines_qty_done_higher_than_allowed(self):
|
689
|
+
def selected_lines_qty_done_higher_than_allowed(self, line):
|
690
|
+
"""
|
691
|
+
:param line: The selected line
|
692
|
+
"""
|
690
693
|
return {
|
691
694
|
"message_type": "warning",
|
692
695
|
"body": _(
|
693
696
|
"The quantity scanned for one or more lines cannot be "
|
694
|
-
"higher than the maximum allowed."
|
697
|
+
"higher than the maximum allowed. "
|
698
|
+
"(%(product_name)s : %(quantity_done)s > %(quantity_reserved)s)",
|
699
|
+
product_name=line.product_id.name,
|
700
|
+
quantity_done=str(line.qty_done),
|
701
|
+
quantity_reserved=str(line.reserved_uom_qty),
|
695
702
|
),
|
696
703
|
}
|
697
704
|
|
@@ -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
|
@@ -1673,7 +1673,7 @@ msgstr ""
|
|
1673
1673
|
#, python-format
|
1674
1674
|
msgid ""
|
1675
1675
|
"The quantity scanned for one or more lines cannot be higher than the maximum"
|
1676
|
-
" allowed."
|
1676
|
+
" allowed. (%(product_name)s : %(quantity_done)s > %(quantity_reserved)s)"
|
1677
1677
|
msgstr ""
|
1678
1678
|
|
1679
1679
|
#. module: shopfloor
|
@@ -1216,7 +1216,9 @@ class Checkout(Component):
|
|
1216
1216
|
return self._response_for_select_package(
|
1217
1217
|
picking,
|
1218
1218
|
lines,
|
1219
|
-
message=self.msg_store.selected_lines_qty_done_higher_than_allowed(
|
1219
|
+
message=self.msg_store.selected_lines_qty_done_higher_than_allowed(
|
1220
|
+
line
|
1221
|
+
),
|
1220
1222
|
)
|
1221
1223
|
|
1222
1224
|
def _set_dest_package_from_selection(self, picking, selected_lines, package):
|
@@ -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:ae2b67a7a72797798a86c8d85d4a2336941d01d21bf28ffde3b646be05924595
|
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):
|
@@ -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 odoo.fields import first
|
4
|
+
|
3
5
|
from .common import CommonCase
|
4
6
|
|
5
7
|
|
@@ -71,6 +73,7 @@ class CheckoutCommonCase(CommonCase):
|
|
71
73
|
return data
|
72
74
|
|
73
75
|
def _assert_select_package_qty_above(self, response, picking):
|
76
|
+
line = first(picking.move_line_ids)
|
74
77
|
self.assert_response(
|
75
78
|
response,
|
76
79
|
next_state="select_package",
|
@@ -86,6 +89,12 @@ class CheckoutCommonCase(CommonCase):
|
|
86
89
|
message={
|
87
90
|
"message_type": "warning",
|
88
91
|
"body": "The quantity scanned for one or more lines cannot be "
|
89
|
-
"higher than the maximum allowed."
|
92
|
+
"higher than the maximum allowed. "
|
93
|
+
"(%(product_name)s : %(quantity_done)s > %(quantity_reserved)s)"
|
94
|
+
% dict(
|
95
|
+
product_name=line.product_id.name,
|
96
|
+
quantity_done=str(line.qty_done),
|
97
|
+
quantity_reserved=str(line.reserved_uom_qty),
|
98
|
+
),
|
90
99
|
},
|
91
100
|
)
|
{odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.4.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.4.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:ae2b67a7a72797798a86c8d85d4a2336941d01d21bf28ffde3b646be05924595
|
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.4.0.dist-info}/RECORD
RENAMED
@@ -1,21 +1,21 @@
|
|
1
|
-
odoo/addons/shopfloor/README.rst,sha256=
|
1
|
+
odoo/addons/shopfloor/README.rst,sha256=L7bBz1XK-F0EdnF5TGAmEVwnVSKSBNjmOaCf3XXFezk,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=G-bPsQX4Uap-GwxSmuRn5ZNVL3WXg7Qf9h6S85mikvg,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
|
-
odoo/addons/shopfloor/actions/message.py,sha256=
|
13
|
+
odoo/addons/shopfloor/actions/message.py,sha256=3LcFU5PvfVoBOU0CP27XQFqqKRrCi8qXTHV9j2NpBRA,30271
|
14
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
|
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
|
@@ -48,7 +48,7 @@ odoo/addons/shopfloor/i18n/de.po,sha256=LSdchGr1zUVNlN6MYpa4B7T9opLsruAVF1wagA70
|
|
48
48
|
odoo/addons/shopfloor/i18n/es_AR.po,sha256=X4Io7boNJLC5a4pU7pMbaLu4B-JWFtuRrIq_diev74Y,80012
|
49
49
|
odoo/addons/shopfloor/i18n/it.po,sha256=E9CFPLju8IV8HS9lyf8ipN8ZaLpKNTRH87pAoiYpNHA,80252
|
50
50
|
odoo/addons/shopfloor/i18n/pt_BR.po,sha256=ulg9i8rJdOYqIsejyRnlRUXBWgO1XQ_Fe_jimPUStZw,57574
|
51
|
-
odoo/addons/shopfloor/i18n/shopfloor.pot,sha256=
|
51
|
+
odoo/addons/shopfloor/i18n/shopfloor.pot,sha256=5JKZf-V6X6R7vTdOEHkX0xYuYneyzf_GbSzK7dL96DU,57627
|
52
52
|
odoo/addons/shopfloor/migrations/16.0.2.0.0/post-migration.py,sha256=WfXnS5fj_K78VFaUAe0UiNhFX1C8LA0lkh6Zofllvc4,1311
|
53
53
|
odoo/addons/shopfloor/migrations/16.0.2.2.1/post-init_search_move_line_options.py,sha256=OfsDBUUEKtWQOv9pU86edeFlnT2YiPli4PMpv74Q8IY,1176
|
54
54
|
odoo/addons/shopfloor/models/__init__.py,sha256=hQY6dfl-ATXYffWa6cRlVQbyZ2BYc3voUNiNSC32miA,368
|
@@ -72,7 +72,7 @@ odoo/addons/shopfloor/readme/ROADMAP.rst,sha256=jIuyexuxAbyDWBPfoHzWU57KLUto6z56
|
|
72
72
|
odoo/addons/shopfloor/readme/USAGE.rst,sha256=6Of9b6ec7gH1SKhdpBIaavsON0JWBFAzhb8KNz7Nmhc,308
|
73
73
|
odoo/addons/shopfloor/security/groups.xml,sha256=hdLqRUZM_4RQnleinRYhxDxqW4VOI5li4oTsB7m96LQ,578
|
74
74
|
odoo/addons/shopfloor/services/__init__.py,sha256=4lhF0VNx8QosVEZj9QJYgv6oWD0kl9FX80rL5WMrXf4,303
|
75
|
-
odoo/addons/shopfloor/services/checkout.py,sha256=
|
75
|
+
odoo/addons/shopfloor/services/checkout.py,sha256=HuXAH5S5QHeYSAXjQYQj-eng-CMssaFD1h6CZL0OcSs,76301
|
76
76
|
odoo/addons/shopfloor/services/cluster_picking.py,sha256=v3UduBo5iIUW85nP7JtNFAsFr3LmePvGSK-DXvn_WYI,68221
|
77
77
|
odoo/addons/shopfloor/services/delivery.py,sha256=ko2xre3q-P2LaGd4CMKFWJoavk9QXTI8WKXghf8PoL0,33226
|
78
78
|
odoo/addons/shopfloor/services/location_content_transfer.py,sha256=gn-8W_u2tFT-A69Cot8B6CKG6pFB_21EjC2MYisfDME,49472
|
@@ -84,20 +84,20 @@ 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=lcZGBlNZMWcsyyZEyq9DN-QPKNudIQZlqODKvheUUB0,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
|
98
98
|
odoo/addons/shopfloor/tests/test_actions_stock.py,sha256=f4OEAIa39szfOMvVUx686iKrmIusNLgLD9DesOpNH4k,1936
|
99
99
|
odoo/addons/shopfloor/tests/test_checkout_auto_post.py,sha256=enJwyDLRz4N1yv1cCJXijoMZp8lvn1REhh6zCyIsO9c,3107
|
100
|
-
odoo/addons/shopfloor/tests/test_checkout_base.py,sha256=
|
100
|
+
odoo/addons/shopfloor/tests/test_checkout_base.py,sha256=39wOgGznoAq7-pl_qxKY6JGtX59ztVEtIAmnW63n6-w,3536
|
101
101
|
odoo/addons/shopfloor/tests/test_checkout_cancel_line.py,sha256=Fpavj9awDAhjcU9XviMlmXGVHjwxZTra0i8qUT3jQkw,5366
|
102
102
|
odoo/addons/shopfloor/tests/test_checkout_change_packaging.py,sha256=XuqbtEzRTn30o-C_IZejzND_eiPD40ZWgXpAQbpF2zQ,6321
|
103
103
|
odoo/addons/shopfloor/tests/test_checkout_done.py,sha256=8lmJakrwSoZYmT-P_lqhFCnVSoHtJdsfNDYXNXzxuo8,6178
|
@@ -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.4.0.dist-info/METADATA,sha256=93M-wlrrg1iosk5_6VfLfPxmlG7hzpr2OoFJLgcDAPU,6761
|
189
|
+
odoo_addon_shopfloor-16.0.2.4.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
190
|
+
odoo_addon_shopfloor-16.0.2.4.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
|
191
|
+
odoo_addon_shopfloor-16.0.2.4.0.dist-info/RECORD,,
|
{odoo_addon_shopfloor-16.0.2.2.1.6.dist-info → odoo_addon_shopfloor-16.0.2.4.0.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|