odoo-addon-shopfloor 16.0.2.2.1.5__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.
@@ -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:bb5933746c40b25c45fcadac4704a1a752a86c48bb857969ca935196736d24c6
10
+ !! source digest: sha256:4c4dc0050165bd957675ce9d57514bb2868133060d042e37d9ef7cba29c9fd6b
11
11
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
12
 
13
13
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -6,7 +6,7 @@
6
6
  {
7
7
  "name": "Shopfloor",
8
8
  "summary": "manage warehouse operations with barcode scanners",
9
- "version": "16.0.2.2.1",
9
+ "version": "16.0.2.3.0",
10
10
  "development_status": "Beta",
11
11
  "category": "Inventory",
12
12
  "website": "https://github.com/OCA/wms",
@@ -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
@@ -6,7 +6,7 @@ msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: Odoo Server 14.0\n"
8
8
  "Report-Msgid-Bugs-To: \n"
9
- "PO-Revision-Date: 2024-08-22 10:06+0000\n"
9
+ "PO-Revision-Date: 2024-10-17 15:06+0000\n"
10
10
  "Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
11
11
  "Language-Team: none\n"
12
12
  "Language: it\n"
@@ -171,6 +171,9 @@ msgid ""
171
171
  "<code>get_sort_key_assigned_to_current_user</code>: Return sort key to get "
172
172
  "line assigned to current user first. (return a tuple)"
173
173
  msgstr ""
174
+ "<code>get_sort_key_assigned_to_current_user</code>: restituisce la chiave di "
175
+ "ordinamento per ottenere prima la riga assegnata all'utente attuale. ("
176
+ "restituisce una tupla)"
174
177
 
175
178
  #. module: shopfloor
176
179
  #: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
@@ -178,6 +181,8 @@ msgid ""
178
181
  "<code>get_sort_key_location</code>: Return sort key to sort by location. "
179
182
  "(return a tuple)"
180
183
  msgstr ""
184
+ "<code>get_sort_key_location</code>: restituisce la chiave di ordinamento "
185
+ "ordinata per ubicazione. (restituisce una tupla)"
181
186
 
182
187
  #. module: shopfloor
183
188
  #: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
@@ -185,11 +190,15 @@ msgid ""
185
190
  "<code>get_sort_key_priority</code>: Return sort key to sort by priority. "
186
191
  "(return a tuple)"
187
192
  msgstr ""
193
+ "<code>get_sort_key_priority</code>: restituisce la chiave di ordinamento per "
194
+ "ordinare per priorità. (restituisce una tupla)"
188
195
 
189
196
  #. module: shopfloor
190
197
  #: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
191
198
  msgid "<code>line</code>: The move line for with the key must be computed."
192
199
  msgstr ""
200
+ "<code>line</code>: la riga movimento per la quale la chiave deve essere "
201
+ "calcolata."
193
202
 
194
203
  #. module: shopfloor
195
204
  #: model:ir.model,name:shopfloor.model_shopfloor_app
@@ -211,7 +220,7 @@ msgstr "Attiva zero controlli"
211
220
  #. module: shopfloor
212
221
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_additional_domain
213
222
  msgid "Additional domain used when searching move lines"
214
- msgstr ""
223
+ msgstr "Dominio addizionale utilizzato quando si cercano le righe movimento"
215
224
 
216
225
  #. module: shopfloor
217
226
  #: model:ir.model,name:shopfloor.model_shopfloor_priority_postpone_mixin
@@ -413,17 +422,18 @@ msgstr "La creazione di movimenti non è consentita per il menu {}."
413
422
  #. module: shopfloor
414
423
  #: model:ir.model.fields.selection,name:shopfloor.selection__shopfloor_menu__move_line_search_sort_order__custom_code
415
424
  msgid "Custom code"
416
- msgstr ""
425
+ msgstr "Codice personalizzato"
417
426
 
418
427
  #. module: shopfloor
419
428
  #: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
420
429
  msgid "Custom code to construct the key to sort move lines"
421
430
  msgstr ""
431
+ "Codice personalizzato per costruire la chiave per ordinare le righe movimento"
422
432
 
423
433
  #. module: shopfloor
424
434
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_sort_order_custom_code
425
435
  msgid "Custom sort key code"
426
- msgstr ""
436
+ msgstr "Codice chiave ordinamento personalizzato"
427
437
 
428
438
  #. module: shopfloor
429
439
  #. odoo-python
@@ -431,6 +441,8 @@ msgstr ""
431
441
  #, python-format
432
442
  msgid "Custom sort key code is only allowed when 'Custom code' is selected."
433
443
  msgstr ""
444
+ "Il codice chiave ordinamento personalizzato è consentito quanto è "
445
+ "selezionato 'Codice personalizzato'."
434
446
 
435
447
  #. module: shopfloor
436
448
  #. odoo-python
@@ -438,6 +450,8 @@ msgstr ""
438
450
  #, python-format
439
451
  msgid "Custom sort key code is required when 'Custom code' is selected."
440
452
  msgstr ""
453
+ "Il codice chiave ordinamento personaliazzato è richiesto quando è "
454
+ "selezionato 'Codice personalizzato'."
441
455
 
442
456
  #. module: shopfloor
443
457
  #: model:ir.model.fields,field_description:shopfloor.field_stock_move_line__date_planned
@@ -590,7 +604,7 @@ msgstr "Le righe hano ubicazioni destinazione differenti."
590
604
  #. module: shopfloor
591
605
  #: model:ir.model.fields.selection,name:shopfloor.selection__shopfloor_menu__move_line_search_sort_order__location
592
606
  msgid "Location"
593
- msgstr ""
607
+ msgstr "Ubicazione"
594
608
 
595
609
  #. module: shopfloor
596
610
  #. odoo-python
@@ -722,12 +736,12 @@ msgstr "Conteggio righe movimenti"
722
736
  #. module: shopfloor
723
737
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_additional_domain_is_possible
724
738
  msgid "Move Line Search Additional Domain Is Possible"
725
- msgstr ""
739
+ msgstr "È consentita la ricerca dominio addizionale riga movimento"
726
740
 
727
741
  #. module: shopfloor
728
742
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_sort_order_is_possible
729
743
  msgid "Move Line Search Sort Order Is Possible"
730
- msgstr ""
744
+ msgstr "È consentito l'ordine di ordinamento ricerca riga movimento"
731
745
 
732
746
  #. module: shopfloor
733
747
  #. odoo-python
@@ -1255,7 +1269,7 @@ msgstr "È possibile avere pre-colli prodotto"
1255
1269
  #. module: shopfloor
1256
1270
  #: model:ir.model.fields.selection,name:shopfloor.selection__shopfloor_menu__move_line_search_sort_order__priority
1257
1271
  msgid "Priority"
1258
- msgstr ""
1272
+ msgstr "Priorità"
1259
1273
 
1260
1274
  #. module: shopfloor
1261
1275
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__allow_prepackaged_product
@@ -1324,7 +1338,7 @@ msgstr "Prodotto elaborato come prodotto grezzo"
1324
1338
  #. module: shopfloor
1325
1339
  #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__move_line_search_sort_order_custom_code
1326
1340
  msgid "Python code to sort move lines. "
1327
- msgstr ""
1341
+ msgstr "Codice Python per ordinare le righe movimento. "
1328
1342
 
1329
1343
  #. module: shopfloor
1330
1344
  #: model:ir.model,name:shopfloor.model_stock_quant
@@ -1617,7 +1631,7 @@ msgstr "Qualcuno sta già lavorando su questi trasferimenti"
1617
1631
  #. module: shopfloor
1618
1632
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_sort_order
1619
1633
  msgid "Sort method used when searching move lines"
1620
- msgstr ""
1634
+ msgstr "Metodo ordinamento utilizzato quando si cercano le righe movimento"
1621
1635
 
1622
1636
  #. module: shopfloor
1623
1637
  #: model:ir.model.fields,field_description:shopfloor.field_stock_location__source_move_line_ids
@@ -1954,7 +1968,7 @@ msgstr "Questo trasferimento non esiste più o non è più disponibile."
1954
1968
  #. module: shopfloor
1955
1969
  #: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
1956
1970
  msgid "Three variables are available:"
1957
- msgstr ""
1971
+ msgstr "Sono disponibili tre variabili:"
1958
1972
 
1959
1973
  #. module: shopfloor
1960
1974
  #: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
@@ -1962,6 +1976,8 @@ msgid ""
1962
1976
  "To assign the key value: <code>key = "
1963
1977
  "get_sort_key_assigned_to_current_user(line) + (line.x, )</code>"
1964
1978
  msgstr ""
1979
+ "Per assegnare il valore della chiave: <code>key = "
1980
+ "get_sort_key_assigned_to_current_user(line) + (line.x, )</code>"
1965
1981
 
1966
1982
  #. module: shopfloor
1967
1983
  #: model:ir.model.fields,field_description:shopfloor.field_stock_picking__total_weight
@@ -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:bb5933746c40b25c45fcadac4704a1a752a86c48bb857969ca935196736d24c6
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&amp;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.pop("removal_date").split("T")[0], "2020-05-20")
63
- self.assertEqual(data.pop("expire_date").split("T")[0], "2020-05-31")
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-shopfloor
3
- Version: 16.0.2.2.1.5
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:bb5933746c40b25c45fcadac4704a1a752a86c48bb857969ca935196736d24c6
39
+ !! source digest: sha256:4c4dc0050165bd957675ce9d57514bb2868133060d042e37d9ef7cba29c9fd6b
40
40
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
41
41
 
42
42
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -1,13 +1,13 @@
1
- odoo/addons/shopfloor/README.rst,sha256=1U0h74Cav3zjs92LORr6T9iXjU9F3zMclHtjAWm2uMc,5318
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=uEOzWTHkQpWsYE52kY7ygBYjYF5x5pgXHFhKitDJv9c,2245
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=m46sLSuQmxt5NHBoV1GNKsSmc26EHv-OFoMZ0Qz8l9E,6104
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=7-e5tPLHKgNTamUy0tvWVsjhYHTP0pTzEP4BeZD2Bm8,3793
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
@@ -46,7 +46,7 @@ odoo/addons/shopfloor/docs/zone_picking_diag_seq.png,sha256=_qGnbfsShydA3Xjefaur
46
46
  odoo/addons/shopfloor/i18n/ca.po,sha256=Mdv7UgORL2NMGoGX23BV_PG3JgImCTWmU_iGwbb9RzU,59104
47
47
  odoo/addons/shopfloor/i18n/de.po,sha256=LSdchGr1zUVNlN6MYpa4B7T9opLsruAVF1wagA70fTw,57572
48
48
  odoo/addons/shopfloor/i18n/es_AR.po,sha256=X4Io7boNJLC5a4pU7pMbaLu4B-JWFtuRrIq_diev74Y,80012
49
- odoo/addons/shopfloor/i18n/it.po,sha256=5u_XPUQ2U34RCCndYXLY8nlJfSQ9Yn1oHZidtR1Nszc,78900
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
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
@@ -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=HEzd-EovG45y9j9WQixsl1TJCApIrkIEk8wyFu-OFC8,17547
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=vPhMBZ5xOKlY8So49PCLuxwqzRGo_GrRfZzcuwSHX4A,8920
94
- odoo/addons/shopfloor/tests/test_actions_data_detail.py,sha256=_bPJRbRVqisA7reXqrleXGfqtMb0Uq7ntakVn4C2T_Y,14016
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.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,,
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,,