odoo-addon-shopfloor 16.0.2.4.1__py3-none-any.whl → 16.0.2.4.2.4__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:ca663ff537b2eaf21df81aa7021efde06ad30709b48148d8fc5dbf570b0b5f87
10
+ !! source digest: sha256:c6a9c49207fab82eb83551dcf62d60b38c4c87c9fdc36d8a3551a922c11acc68
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.4.1",
9
+ "version": "16.0.2.4.2",
10
10
  "development_status": "Beta",
11
11
  "category": "Inventory",
12
12
  "website": "https://github.com/OCA/wms",
@@ -23,7 +23,8 @@
23
23
  "scan_location_or_pack_first": true,
24
24
  "allow_alternative_destination_package": true,
25
25
  "allow_move_line_search_sort_order": false,
26
- "allow_move_line_search_additional_domain": true
26
+ "allow_move_line_search_additional_domain": true,
27
+ "require_destination_package": true
27
28
  }
28
29
  </field>
29
30
  </record>
@@ -98,6 +98,16 @@ msgstr ""
98
98
  msgid "%(qty)s %(product_name)s put in %(package_name)s"
99
99
  msgstr ""
100
100
 
101
+ #. module: shopfloor
102
+ #. odoo-python
103
+ #: code:addons/shopfloor/models/shopfloor_menu.py:0
104
+ #, python-format
105
+ msgid ""
106
+ "'No destination package required' is incompatible with 'Pick and pack at the "
107
+ "same time','Unload package at destination' and 'Multiple moves same "
108
+ "destination package'."
109
+ msgstr ""
110
+
101
111
  #. module: shopfloor
102
112
  #. odoo-python
103
113
  #: code:addons/shopfloor/models/shopfloor_menu.py:0
@@ -416,6 +426,11 @@ msgstr ""
416
426
  msgid "Destination Package"
417
427
  msgstr ""
418
428
 
429
+ #. module: shopfloor
430
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package
431
+ msgid "Destination package required"
432
+ msgstr ""
433
+
419
434
  #. module: shopfloor
420
435
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__disable_full_bin_action_is_possible
421
436
  msgid "Disable Full Bin Action Is Possible"
@@ -466,6 +481,13 @@ msgstr ""
466
481
  msgid "If set, the operations are packed into this package"
467
482
  msgstr ""
468
483
 
484
+ #. module: shopfloor
485
+ #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__require_destination_package
486
+ msgid ""
487
+ "If set, the user will have to scan only the source location and the "
488
+ "destination location to process a line. The unload step will be skipped."
489
+ msgstr ""
490
+
469
491
  #. module: shopfloor
470
492
  #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__ignore_no_putaway_available
471
493
  msgid ""
@@ -1263,6 +1285,11 @@ msgstr ""
1263
1285
  msgid "Remaining raw product not packed, proceed anyway?"
1264
1286
  msgstr ""
1265
1287
 
1288
+ #. module: shopfloor
1289
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package_is_possible
1290
+ msgid "Require Destination Package Is Possible"
1291
+ msgstr ""
1292
+
1266
1293
  #. module: shopfloor
1267
1294
  #: model:ir.model.fields,field_description:shopfloor.field_stock_location__reserved_move_line_ids
1268
1295
  #: model:ir.model.fields,field_description:shopfloor.field_stock_quant_package__reserved_move_line_ids
@@ -96,6 +96,16 @@ msgstr ""
96
96
  msgid "%(qty)s %(product_name)s put in %(package_name)s"
97
97
  msgstr ""
98
98
 
99
+ #. module: shopfloor
100
+ #. odoo-python
101
+ #: code:addons/shopfloor/models/shopfloor_menu.py:0
102
+ #, python-format
103
+ msgid ""
104
+ "'No destination package required' is incompatible with 'Pick and pack at the "
105
+ "same time','Unload package at destination' and 'Multiple moves same "
106
+ "destination package'."
107
+ msgstr ""
108
+
99
109
  #. module: shopfloor
100
110
  #. odoo-python
101
111
  #: code:addons/shopfloor/models/shopfloor_menu.py:0
@@ -414,6 +424,11 @@ msgstr ""
414
424
  msgid "Destination Package"
415
425
  msgstr ""
416
426
 
427
+ #. module: shopfloor
428
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package
429
+ msgid "Destination package required"
430
+ msgstr ""
431
+
417
432
  #. module: shopfloor
418
433
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__disable_full_bin_action_is_possible
419
434
  msgid "Disable Full Bin Action Is Possible"
@@ -464,6 +479,13 @@ msgstr ""
464
479
  msgid "If set, the operations are packed into this package"
465
480
  msgstr ""
466
481
 
482
+ #. module: shopfloor
483
+ #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__require_destination_package
484
+ msgid ""
485
+ "If set, the user will have to scan only the source location and the "
486
+ "destination location to process a line. The unload step will be skipped."
487
+ msgstr ""
488
+
467
489
  #. module: shopfloor
468
490
  #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__ignore_no_putaway_available
469
491
  msgid ""
@@ -1259,6 +1281,11 @@ msgstr ""
1259
1281
  msgid "Remaining raw product not packed, proceed anyway?"
1260
1282
  msgstr ""
1261
1283
 
1284
+ #. module: shopfloor
1285
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package_is_possible
1286
+ msgid "Require Destination Package Is Possible"
1287
+ msgstr ""
1288
+
1262
1289
  #. module: shopfloor
1263
1290
  #: model:ir.model.fields,field_description:shopfloor.field_stock_location__reserved_move_line_ids
1264
1291
  #: model:ir.model.fields,field_description:shopfloor.field_stock_quant_package__reserved_move_line_ids
@@ -126,6 +126,16 @@ msgstr ""
126
126
  msgid "%(qty)s %(product_name)s put in %(package_name)s"
127
127
  msgstr "%(qty)s %(product_name)s poner en %(package_name)s"
128
128
 
129
+ #. module: shopfloor
130
+ #. odoo-python
131
+ #: code:addons/shopfloor/models/shopfloor_menu.py:0
132
+ #, python-format
133
+ msgid ""
134
+ "'No destination package required' is incompatible with 'Pick and pack at the "
135
+ "same time','Unload package at destination' and 'Multiple moves same "
136
+ "destination package'."
137
+ msgstr ""
138
+
129
139
  #. module: shopfloor
130
140
  #. odoo-python
131
141
  #: code:addons/shopfloor/models/shopfloor_menu.py:0
@@ -452,6 +462,11 @@ msgstr ""
452
462
  msgid "Destination Package"
453
463
  msgstr ""
454
464
 
465
+ #. module: shopfloor
466
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package
467
+ msgid "Destination package required"
468
+ msgstr ""
469
+
455
470
  #. module: shopfloor
456
471
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__disable_full_bin_action_is_possible
457
472
  msgid "Disable Full Bin Action Is Possible"
@@ -505,6 +520,13 @@ msgstr "Mercadería empaquetada en {0.name}"
505
520
  msgid "If set, the operations are packed into this package"
506
521
  msgstr ""
507
522
 
523
+ #. module: shopfloor
524
+ #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__require_destination_package
525
+ msgid ""
526
+ "If set, the user will have to scan only the source location and the "
527
+ "destination location to process a line. The unload step will be skipped."
528
+ msgstr ""
529
+
508
530
  #. module: shopfloor
509
531
  #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__ignore_no_putaway_available
510
532
  msgid ""
@@ -1329,6 +1351,11 @@ msgid "Remaining raw product not packed, proceed anyway?"
1329
1351
  msgstr ""
1330
1352
  "El producto crudo restante no está empaquetado, ¿continuar de todos modos?"
1331
1353
 
1354
+ #. module: shopfloor
1355
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package_is_possible
1356
+ msgid "Require Destination Package Is Possible"
1357
+ msgstr ""
1358
+
1332
1359
  #. module: shopfloor
1333
1360
  #: model:ir.model.fields,field_description:shopfloor.field_stock_location__reserved_move_line_ids
1334
1361
  #: model:ir.model.fields,field_description:shopfloor.field_stock_quant_package__reserved_move_line_ids
@@ -143,6 +143,16 @@ msgstr ""
143
143
  msgid "%(qty)s %(product_name)s put in %(package_name)s"
144
144
  msgstr "%(qty)s %(product_name)s messo in %(package_name)s"
145
145
 
146
+ #. module: shopfloor
147
+ #. odoo-python
148
+ #: code:addons/shopfloor/models/shopfloor_menu.py:0
149
+ #, python-format
150
+ msgid ""
151
+ "'No destination package required' is incompatible with 'Pick and pack at the "
152
+ "same time','Unload package at destination' and 'Multiple moves same "
153
+ "destination package'."
154
+ msgstr ""
155
+
146
156
  #. module: shopfloor
147
157
  #. odoo-python
148
158
  #: code:addons/shopfloor/models/shopfloor_menu.py:0
@@ -481,6 +491,11 @@ msgstr ""
481
491
  msgid "Destination Package"
482
492
  msgstr "Collo destinazione"
483
493
 
494
+ #. module: shopfloor
495
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package
496
+ msgid "Destination package required"
497
+ msgstr ""
498
+
484
499
  #. module: shopfloor
485
500
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__disable_full_bin_action_is_possible
486
501
  msgid "Disable Full Bin Action Is Possible"
@@ -534,6 +549,13 @@ msgstr "Merce caricata in {0.name}"
534
549
  msgid "If set, the operations are packed into this package"
535
550
  msgstr "Se impostata, le operazioni sono raggruppate in questo collo"
536
551
 
552
+ #. module: shopfloor
553
+ #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__require_destination_package
554
+ msgid ""
555
+ "If set, the user will have to scan only the source location and the "
556
+ "destination location to process a line. The unload step will be skipped."
557
+ msgstr ""
558
+
537
559
  #. module: shopfloor
538
560
  #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__ignore_no_putaway_available
539
561
  msgid ""
@@ -1364,6 +1386,11 @@ msgstr "Sessione precedente recuperata."
1364
1386
  msgid "Remaining raw product not packed, proceed anyway?"
1365
1387
  msgstr "Prodotti grezzi esidui non in colli, procedere ugualmente?"
1366
1388
 
1389
+ #. module: shopfloor
1390
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package_is_possible
1391
+ msgid "Require Destination Package Is Possible"
1392
+ msgstr ""
1393
+
1367
1394
  #. module: shopfloor
1368
1395
  #: model:ir.model.fields,field_description:shopfloor.field_stock_location__reserved_move_line_ids
1369
1396
  #: model:ir.model.fields,field_description:shopfloor.field_stock_quant_package__reserved_move_line_ids
@@ -96,6 +96,16 @@ msgstr ""
96
96
  msgid "%(qty)s %(product_name)s put in %(package_name)s"
97
97
  msgstr ""
98
98
 
99
+ #. module: shopfloor
100
+ #. odoo-python
101
+ #: code:addons/shopfloor/models/shopfloor_menu.py:0
102
+ #, python-format
103
+ msgid ""
104
+ "'No destination package required' is incompatible with 'Pick and pack at the "
105
+ "same time','Unload package at destination' and 'Multiple moves same "
106
+ "destination package'."
107
+ msgstr ""
108
+
99
109
  #. module: shopfloor
100
110
  #. odoo-python
101
111
  #: code:addons/shopfloor/models/shopfloor_menu.py:0
@@ -414,6 +424,11 @@ msgstr ""
414
424
  msgid "Destination Package"
415
425
  msgstr ""
416
426
 
427
+ #. module: shopfloor
428
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package
429
+ msgid "Destination package required"
430
+ msgstr ""
431
+
417
432
  #. module: shopfloor
418
433
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__disable_full_bin_action_is_possible
419
434
  msgid "Disable Full Bin Action Is Possible"
@@ -464,6 +479,13 @@ msgstr ""
464
479
  msgid "If set, the operations are packed into this package"
465
480
  msgstr ""
466
481
 
482
+ #. module: shopfloor
483
+ #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__require_destination_package
484
+ msgid ""
485
+ "If set, the user will have to scan only the source location and the "
486
+ "destination location to process a line. The unload step will be skipped."
487
+ msgstr ""
488
+
467
489
  #. module: shopfloor
468
490
  #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__ignore_no_putaway_available
469
491
  msgid ""
@@ -1259,6 +1281,11 @@ msgstr ""
1259
1281
  msgid "Remaining raw product not packed, proceed anyway?"
1260
1282
  msgstr ""
1261
1283
 
1284
+ #. module: shopfloor
1285
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package_is_possible
1286
+ msgid "Require Destination Package Is Possible"
1287
+ msgstr ""
1288
+
1262
1289
  #. module: shopfloor
1263
1290
  #: model:ir.model.fields,field_description:shopfloor.field_stock_location__reserved_move_line_ids
1264
1291
  #: model:ir.model.fields,field_description:shopfloor.field_stock_quant_package__reserved_move_line_ids
@@ -92,6 +92,16 @@ msgstr ""
92
92
  msgid "%(qty)s %(product_name)s put in %(package_name)s"
93
93
  msgstr ""
94
94
 
95
+ #. module: shopfloor
96
+ #. odoo-python
97
+ #: code:addons/shopfloor/models/shopfloor_menu.py:0
98
+ #, python-format
99
+ msgid ""
100
+ "'No destination package required' is incompatible with 'Pick and pack at the"
101
+ " same time','Unload package at destination' and 'Multiple moves same "
102
+ "destination package'."
103
+ msgstr ""
104
+
95
105
  #. module: shopfloor
96
106
  #. odoo-python
97
107
  #: code:addons/shopfloor/models/shopfloor_menu.py:0
@@ -410,6 +420,11 @@ msgstr ""
410
420
  msgid "Destination Package"
411
421
  msgstr ""
412
422
 
423
+ #. module: shopfloor
424
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package
425
+ msgid "Destination package required"
426
+ msgstr ""
427
+
413
428
  #. module: shopfloor
414
429
  #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__disable_full_bin_action_is_possible
415
430
  msgid "Disable Full Bin Action Is Possible"
@@ -460,6 +475,13 @@ msgstr ""
460
475
  msgid "If set, the operations are packed into this package"
461
476
  msgstr ""
462
477
 
478
+ #. module: shopfloor
479
+ #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__require_destination_package
480
+ msgid ""
481
+ "If set, the user will have to scan only the source location and the "
482
+ "destination location to process a line. The unload step will be skipped."
483
+ msgstr ""
484
+
463
485
  #. module: shopfloor
464
486
  #: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__ignore_no_putaway_available
465
487
  msgid ""
@@ -1256,6 +1278,11 @@ msgstr ""
1256
1278
  msgid "Remaining raw product not packed, proceed anyway?"
1257
1279
  msgstr ""
1258
1280
 
1281
+ #. module: shopfloor
1282
+ #: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__require_destination_package_is_possible
1283
+ msgid "Require Destination Package Is Possible"
1284
+ msgstr ""
1285
+
1259
1286
  #. module: shopfloor
1260
1287
  #: model:ir.model.fields,field_description:shopfloor.field_stock_location__reserved_move_line_ids
1261
1288
  #: model:ir.model.fields,field_description:shopfloor.field_stock_quant_package__reserved_move_line_ids
@@ -0,0 +1,29 @@
1
+ # Copyright 2024 ACSONE SA/NV
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
3
+
4
+ import json
5
+ import logging
6
+
7
+ from odoo import SUPERUSER_ID, api
8
+
9
+ _logger = logging.getLogger(__name__)
10
+
11
+
12
+ def migrate(cr, version):
13
+ _logger.info("Updating scenario Zone Picking")
14
+ if not version:
15
+ return
16
+ env = api.Environment(cr, SUPERUSER_ID, {})
17
+ zone_picking_scenario = env.ref("shopfloor.scenario_zone_picking")
18
+ _update_scenario_options(zone_picking_scenario)
19
+
20
+
21
+ def _update_scenario_options(scenario):
22
+ options = scenario.options
23
+ if "require_destination_package" not in options:
24
+ options["require_destination_package"] = True
25
+ options_edit = json.dumps(options or {}, indent=4, sort_keys=True)
26
+ scenario.write({"options_edit": options_edit})
27
+ _logger.info(
28
+ "Option require_destination_package added to scenario Zone Picking"
29
+ )
@@ -228,7 +228,6 @@ class ShopfloorMenu(models.Model):
228
228
  allow_alternative_destination_package_is_possible = fields.Boolean(
229
229
  compute="_compute_allow_alternative_destination_package_is_possible"
230
230
  )
231
-
232
231
  move_line_search_additional_domain_is_possible = fields.Boolean(
233
232
  compute="_compute_move_line_search_additional_domain_is_possible"
234
233
  )
@@ -250,6 +249,16 @@ class ShopfloorMenu(models.Model):
250
249
  move_line_search_sort_order_custom_code = fields.Text(
251
250
  string="Custom sort key code", help="Python code to sort move lines. "
252
251
  )
252
+ require_destination_package = fields.Boolean(
253
+ string="Destination package required",
254
+ default=True,
255
+ help="If set, the user will have to scan only the source location "
256
+ "and the destination location to process a line. The unload step will be skipped.",
257
+ )
258
+
259
+ require_destination_package_is_possible = fields.Boolean(
260
+ compute="_compute_require_destination_package_is_possible"
261
+ )
253
262
 
254
263
  @api.onchange("unload_package_at_destination")
255
264
  def _onchange_unload_package_at_destination(self):
@@ -267,6 +276,16 @@ class ShopfloorMenu(models.Model):
267
276
  record.unload_package_at_destination = False
268
277
  record.multiple_move_single_pack = False
269
278
 
279
+ @api.onchange("require_destination_package")
280
+ def _onchange_require_destination_package(self):
281
+ # require_destination_package is incompatible with pick_pack_same_time and
282
+ # unload_package_at_destination and multiple_move_single_pack
283
+ for record in self:
284
+ if not record.require_destination_package:
285
+ record.pick_pack_same_time = False
286
+ record.unload_package_at_destination = False
287
+ record.multiple_move_single_pack = False
288
+
270
289
  @api.onchange("multiple_move_single_pack")
271
290
  def _onchange_multiple_move_single_pack(self):
272
291
  # multiple_move_single_pack is incompatible with pick_pack_same_time,
@@ -278,6 +297,7 @@ class ShopfloorMenu(models.Model):
278
297
  "unload_package_at_destination",
279
298
  "pick_pack_same_time",
280
299
  "multiple_move_single_pack",
300
+ "require_destination_package",
281
301
  )
282
302
  def _check_options(self):
283
303
  if self.pick_pack_same_time and self.unload_package_at_destination:
@@ -294,6 +314,19 @@ class ShopfloorMenu(models.Model):
294
314
  "'Multiple moves same destination package'."
295
315
  )
296
316
  )
317
+ elif not self.require_destination_package and (
318
+ self.pick_pack_same_time
319
+ or self.unload_package_at_destination
320
+ or self.multiple_move_single_pack
321
+ ):
322
+ raise exceptions.UserError(
323
+ _(
324
+ "'No destination package required' is incompatible with "
325
+ "'Pick and pack at the same time',"
326
+ "'Unload package at destination' and 'Multiple moves "
327
+ "same destination package'."
328
+ )
329
+ )
297
330
 
298
331
  @api.depends("scenario_id", "picking_type_ids")
299
332
  def _compute_move_create_is_possible(self):
@@ -497,6 +530,13 @@ class ShopfloorMenu(models.Model):
497
530
  "allow_move_line_search_sort_order"
498
531
  )
499
532
 
533
+ @api.depends("scenario_id")
534
+ def _compute_require_destination_package_is_possible(self):
535
+ for menu in self:
536
+ menu.require_destination_package_is_possible = menu.scenario_id.has_option(
537
+ "require_destination_package"
538
+ )
539
+
500
540
  @api.constrains(
501
541
  "move_line_search_sort_order", "move_line_search_sort_order_custom_code"
502
542
  )
@@ -161,6 +161,9 @@ class ZonePicking(Component):
161
161
  def _pick_pack_same_time(self):
162
162
  return self.work.menu.pick_pack_same_time
163
163
 
164
+ def _packing_required(self):
165
+ return self.work.menu.require_destination_package
166
+
164
167
  def _handle_complete_mix_pack(self, package):
165
168
  packaging = self._actions_for("packaging")
166
169
  return (
@@ -924,7 +927,7 @@ class ZonePicking(Component):
924
927
  return (location_changed, response)
925
928
 
926
929
  # If no destination package
927
- if not move_line.result_package_id:
930
+ if self._packing_required() and not move_line.result_package_id:
928
931
  response = self._response_for_set_line_destination(
929
932
  move_line,
930
933
  message=self.msg_store.dest_package_required(),
@@ -1169,43 +1172,40 @@ class ZonePicking(Component):
1169
1172
  )
1170
1173
 
1171
1174
  extra_message = ""
1172
- if moving_full_quantity:
1173
- # When the barcode is a location,
1174
- # only allow it if moving the full qty.
1175
- location = search.location_from_scan(barcode)
1176
- if location:
1177
- package = None
1178
- if handle_complete_mix_pack:
1179
- package = move_line.package_id
1180
- if self._pick_pack_same_time():
1181
- (
1182
- good_for_packing,
1183
- message,
1184
- ) = self._handle_pick_pack_same_time_for_location(move_line)
1185
- # TODO: we should append the msg instead.
1186
- # To achieve this, we should refactor `response.message` to a list
1187
- # or, to no break backward compat, we could add `extra_messages`
1188
- # to allow backend to send a main message and N additional messages.
1189
- extra_message = message
1190
- if not good_for_packing:
1191
- return self._response_for_set_line_destination(
1192
- move_line, message=message, qty_done=quantity
1193
- )
1194
- pkg_moved, response = self._set_destination_location(
1195
- move_line,
1196
- package,
1197
- quantity,
1198
- confirmation,
1199
- location,
1200
- barcode,
1201
- )
1202
- if response:
1203
- if extra_message:
1204
- if response.get("message"):
1205
- response["message"]["body"] += "\n" + extra_message["body"]
1206
- else:
1207
- response["message"] = extra_message
1208
- return response
1175
+ location = search.location_from_scan(barcode)
1176
+ if location:
1177
+ package = None
1178
+ if handle_complete_mix_pack:
1179
+ package = move_line.package_id
1180
+ if self._pick_pack_same_time():
1181
+ (
1182
+ good_for_packing,
1183
+ message,
1184
+ ) = self._handle_pick_pack_same_time_for_location(move_line)
1185
+ # TODO: we should append the msg instead.
1186
+ # To achieve this, we should refactor `response.message` to a list
1187
+ # or, to no break backward compat, we could add `extra_messages`
1188
+ # to allow backend to send a main message and N additional messages.
1189
+ extra_message = message
1190
+ if not good_for_packing:
1191
+ return self._response_for_set_line_destination(
1192
+ move_line, message=message, qty_done=quantity
1193
+ )
1194
+ pkg_moved, response = self._set_destination_location(
1195
+ move_line,
1196
+ package,
1197
+ quantity,
1198
+ confirmation,
1199
+ location,
1200
+ barcode,
1201
+ )
1202
+ if response:
1203
+ if extra_message:
1204
+ if response.get("message"):
1205
+ response["message"]["body"] += "\n" + extra_message["body"]
1206
+ else:
1207
+ response["message"] = extra_message
1208
+ return response
1209
1209
 
1210
1210
  # When the barcode is a package
1211
1211
  package = search.package_from_scan(barcode)
@@ -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:ca663ff537b2eaf21df81aa7021efde06ad30709b48148d8fc5dbf570b0b5f87
370
+ !! source digest: sha256:c6a9c49207fab82eb83551dcf62d60b38c4c87c9fdc36d8a3551a922c11acc68
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>
@@ -79,6 +79,7 @@ from . import test_zone_picking_unload_buffer_lines
79
79
  from . import test_zone_picking_unload_single
80
80
  from . import test_zone_picking_unload_all
81
81
  from . import test_zone_picking_unload_set_destination
82
+ from . import test_zone_picking_require_destination_package
82
83
  from . import test_misc
83
84
  from . import test_move_action_assign
84
85
  from . import test_scan_anything
@@ -0,0 +1,62 @@
1
+ # Copyright 2020 Camptocamp SA (http://www.camptocamp.com)
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
3
+ from .test_zone_picking_base import ZonePickingCommonCase
4
+
5
+ # pylint: disable=missing-return
6
+
7
+
8
+ class ZonePickingNoPAcking(ZonePickingCommonCase):
9
+ """Tests zone picking without packing steps.
10
+
11
+ * /set_destination
12
+
13
+ """
14
+
15
+ def setUp(self):
16
+ super().setUp()
17
+ self.service.work.current_picking_type = self.picking1.picking_type_id
18
+ self.picking1.move_line_ids.result_package_id = False
19
+
20
+ def test_set_destination(self):
21
+ # when no packing is set, you can set the destination directly
22
+ # without the need to pack the product
23
+ self.service.work.menu.sudo().require_destination_package = True
24
+ zone_location = self.zone_location
25
+ picking_type = self.picking1.picking_type_id
26
+ move_line = self.picking1.move_line_ids[0]
27
+ response = self.service.dispatch(
28
+ "set_destination",
29
+ params={
30
+ "move_line_id": move_line.id,
31
+ "barcode": move_line.location_dest_id.barcode,
32
+ "quantity": move_line.reserved_uom_qty,
33
+ "confirmation": None,
34
+ },
35
+ )
36
+ self.assert_response_set_line_destination(
37
+ response,
38
+ zone_location,
39
+ picking_type,
40
+ move_line,
41
+ qty_done=move_line.reserved_uom_qty,
42
+ message=self.service.msg_store.dest_package_required(),
43
+ )
44
+ self.service.work.menu.sudo().require_destination_package = False
45
+ response = self.service.dispatch(
46
+ "set_destination",
47
+ params={
48
+ "move_line_id": move_line.id,
49
+ "barcode": move_line.location_dest_id.barcode,
50
+ "quantity": move_line.reserved_uom_qty,
51
+ "confirmation": None,
52
+ },
53
+ )
54
+ move_lines = self.service._find_location_move_lines()
55
+ move_lines = move_lines.sorted(lambda l: l.move_id.priority, reverse=True)
56
+ self.assert_response_select_line(
57
+ response,
58
+ zone_location,
59
+ picking_type,
60
+ move_lines,
61
+ message=self.service.msg_store.confirm_pack_moved(),
62
+ )
@@ -187,15 +187,15 @@ class ZonePickingSetLineDestinationCase(ZonePickingCommonCase):
187
187
  move qty 10 (assigned):
188
188
  -> move_line qty 10 from location X
189
189
 
190
- Then the operator move 6 qty on 10, we get:
191
-
192
- an error because we can move only full qty by location
193
- and only a package barcode is allowed on scan.
190
+ Then the operator move 6 qty on 10:
191
+ -> move_line qty 6 from location X (done)
192
+ -> move_line qty 4 from location X (assigned)
194
193
  """
195
194
  zone_location = self.zone_location
196
195
  picking_type = self.picking3.picking_type_id
197
196
  barcode = self.packing_location.barcode
198
197
  moves_before = self.picking3.move_ids
198
+ self.assertEqual(moves_before.product_uom_qty, 10)
199
199
  self.assertEqual(len(moves_before), 1)
200
200
  self.assertEqual(len(moves_before.move_line_ids), 1)
201
201
  move_line = moves_before.move_line_ids
@@ -210,14 +210,21 @@ class ZonePickingSetLineDestinationCase(ZonePickingCommonCase):
210
210
  "confirmation": None,
211
211
  },
212
212
  )
213
- self.assert_response_set_line_destination(
213
+ move_lines = self.service._find_location_move_lines()
214
+ move_lines = move_lines.sorted(lambda l: l.move_id.priority, reverse=True)
215
+ self.assert_response_select_line(
214
216
  response,
215
217
  zone_location,
216
218
  picking_type,
217
- move_line,
218
- qty_done=6,
219
- message=self.service.msg_store.package_not_found_for_barcode(barcode),
219
+ move_lines,
220
+ message=self.service.msg_store.confirm_pack_moved(),
220
221
  )
222
+ done_move = move_line.move_id
223
+ assigned_move = moves_before
224
+ self.assertEqual(done_move.state, "done")
225
+ self.assertEqual(done_move.product_uom_qty, 6)
226
+ self.assertEqual(assigned_move.state, "assigned")
227
+ self.assertEqual(assigned_move.product_uom_qty, 4)
221
228
 
222
229
  def test_set_destination_location_several_move_line_full_qty(self):
223
230
  """Scanned barcode is the destination location.
@@ -297,8 +304,8 @@ class ZonePickingSetLineDestinationCase(ZonePickingCommonCase):
297
304
 
298
305
  Then the operator move 4 qty on 6 (from the first move line), we get:
299
306
 
300
- an error because we can move only full qty by location
301
- and only a package barcode is allowed on scan.
307
+ -> move_line qty 6 from location X (assigned)
308
+ -> move_line qty 4 from location Y (done)
302
309
  """
303
310
  zone_location = self.zone_location
304
311
  picking_type = self.picking4.picking_type_id
@@ -318,14 +325,22 @@ class ZonePickingSetLineDestinationCase(ZonePickingCommonCase):
318
325
  "confirmation": None,
319
326
  },
320
327
  )
321
- self.assert_response_set_line_destination(
328
+ # Check response
329
+ move_lines = self.service._find_location_move_lines()
330
+ move_lines = move_lines.sorted(lambda l: l.move_id.priority, reverse=True)
331
+ self.assert_response_select_line(
322
332
  response,
323
333
  zone_location,
324
334
  picking_type,
325
- move_line,
326
- qty_done=4,
327
- message=self.service.msg_store.package_not_found_for_barcode(barcode),
335
+ move_lines,
336
+ message=self.service.msg_store.confirm_pack_moved(),
328
337
  )
338
+ done_move = move_line.move_id
339
+ assigned_move = moves_before
340
+ self.assertEqual(done_move.state, "done")
341
+ self.assertEqual(done_move.product_uom_qty, 4)
342
+ self.assertEqual(assigned_move.state, "assigned")
343
+ self.assertEqual(assigned_move.product_uom_qty, 6)
329
344
 
330
345
  def test_set_destination_location_zero_check(self):
331
346
  """Scanned barcode is the destination location.
@@ -32,6 +32,16 @@
32
32
  >
33
33
  <field name="ignore_no_putaway_available_is_possible" invisible="1" />
34
34
  <field name="ignore_no_putaway_available" />
35
+ </group>
36
+ <group
37
+ name="require_destination_package"
38
+ attrs="{'invisible': [('require_destination_package_is_possible', '=', False)]}"
39
+ >
40
+ <field
41
+ name="require_destination_package_is_possible"
42
+ invisible="1"
43
+ />
44
+ <field name="require_destination_package" />
35
45
  </group>
36
46
  <group
37
47
  name="pick_pack_same_time"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-shopfloor
3
- Version: 16.0.2.4.1
3
+ Version: 16.0.2.4.2.4
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:ca663ff537b2eaf21df81aa7021efde06ad30709b48148d8fc5dbf570b0b5f87
39
+ !! source digest: sha256:c6a9c49207fab82eb83551dcf62d60b38c4c87c9fdc36d8a3551a922c11acc68
40
40
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
41
41
 
42
42
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -1,6 +1,6 @@
1
- odoo/addons/shopfloor/README.rst,sha256=1xelEVfyzRYrmYutFWFc70_dp6LFor-n2-eIU2jZNqw,5318
1
+ odoo/addons/shopfloor/README.rst,sha256=apHyGNWi90vP04Nf4HZN-ojKsIEKlM-RKq09f9Rvumg,5318
2
2
  odoo/addons/shopfloor/__init__.py,sha256=ke3RmZ7XkX-lz4S8NHAxNIEJ5_Nvj5bjBAqD-W-q73c,91
3
- odoo/addons/shopfloor/__manifest__.py,sha256=DQU3Eg_uSe6mpoL7_dC4yc2swi6YcVTQbViMbraZVaQ,2245
3
+ odoo/addons/shopfloor/__manifest__.py,sha256=_J2FGeuizlMP2K_xkRkt0HxbSHq--02ZwV89-LOQR4c,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
@@ -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=VXuWnIsBJh4FgQcD0CoMFUi32rra8A4Qi5NHNfz6UVA,2602
28
+ odoo/addons/shopfloor/data/shopfloor_scenario_data.xml,sha256=mu_SzbVuKWdg39c7BOzJH1GtuDPEy9-6Xe0dZYOKONg,2643
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,18 +43,19 @@ 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=nXUFaLWkS7EKS7glkzDznXEHwpM6KfS7u4KR0TU_YGs,59167
47
- odoo/addons/shopfloor/i18n/de.po,sha256=vsQ8YvfoWs3UGAvIY_hLj6joN7KkkDR7qlR_p6O50Gw,57635
48
- odoo/addons/shopfloor/i18n/es_AR.po,sha256=OWD4O8FSjZtMDCRGLmxQKWYKNYwIYrkba31QxoUzObw,80075
49
- odoo/addons/shopfloor/i18n/it.po,sha256=sAZ9WKWhoO3G6OP9XWvmAqMGRZ2-y5KZDEBS3ijXMWg,80627
50
- odoo/addons/shopfloor/i18n/pt_BR.po,sha256=Gvt3Lf9VE1FLkVgqtZeMzLdQ5nWxaemsjIMGNKvylNc,57637
51
- odoo/addons/shopfloor/i18n/shopfloor.pot,sha256=5JKZf-V6X6R7vTdOEHkX0xYuYneyzf_GbSzK7dL96DU,57627
46
+ odoo/addons/shopfloor/i18n/ca.po,sha256=2vRFtRVfHUIrxUX3Z6w8IeyNkTzrfE5caE9td1M6wpc,60111
47
+ odoo/addons/shopfloor/i18n/de.po,sha256=48tW5tgkPNQI35u4yr6MeY898EgLIsWj2WltfoFWUCw,58579
48
+ odoo/addons/shopfloor/i18n/es_AR.po,sha256=nWyH3YYSJtdcZWEzvoKiTfqfLTFAb2pA0jIWspMqUtU,81019
49
+ odoo/addons/shopfloor/i18n/it.po,sha256=TR_Xo4Wq0dFDIoXtMp8HukD-MigdxoS_YYUak_4SY18,81571
50
+ odoo/addons/shopfloor/i18n/pt_BR.po,sha256=sXtQtdoHUJOVd3fWiXxQ5uTzCmnHOqAKiHF9xh2pBcU,58581
51
+ odoo/addons/shopfloor/i18n/shopfloor.pot,sha256=SsKQTDcr3JB3dpbVprK2ks2opeQ4coi6eNkQaltVfoM,58571
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
+ odoo/addons/shopfloor/migrations/16.0.2.4.2/post-init_search_move_line_options.py,sha256=OfsDBUUEKtWQOv9pU86edeFlnT2YiPli4PMpv74Q8IY,1176
54
+ odoo/addons/shopfloor/migrations/16.0.2.4.2/post-migration.py,sha256=wU-NTy1RLF6iSndiH6jzzIHIlPfX1DBUeB94QpB7TU4,909
54
55
  odoo/addons/shopfloor/models/__init__.py,sha256=hQY6dfl-ATXYffWa6cRlVQbyZ2BYc3voUNiNSC32miA,368
55
56
  odoo/addons/shopfloor/models/priority_postpone_mixin.py,sha256=AEu_K9mul_SmjyLK8NLCycRn3BLzirUqNOaf0RVYEpE,1503
56
57
  odoo/addons/shopfloor/models/shopfloor_app.py,sha256=ZfVahQYm0jzyeH7EtlOOhxYUif9OwcHIsyZAbQxEeXA,292
57
- odoo/addons/shopfloor/models/shopfloor_menu.py,sha256=glADVnoHw-YKFAe74uKedMH5zVIlaWDtwdtnl0Wkl8E,21366
58
+ odoo/addons/shopfloor/models/shopfloor_menu.py,sha256=aq1vWgcN2lihdnUkDtTz5k_zUJJKOx_z_ggT_-6inrU,23161
58
59
  odoo/addons/shopfloor/models/stock_location.py,sha256=wrLZ_-yjLB-1zWevWtqNdk8WMdyKJcpnzuNGyQOKL70,3098
59
60
  odoo/addons/shopfloor/models/stock_move.py,sha256=1G_HyWY6xHwybBbR92IKS1euqnUHeMP91VOCdoE-asI,4940
60
61
  odoo/addons/shopfloor/models/stock_move_line.py,sha256=uYZJZdhf-X1HHHRYfWf_oygkDNrzNgP0TIG5TXJxSAY,13360
@@ -80,12 +81,12 @@ odoo/addons/shopfloor/services/menu.py,sha256=m1eNOReTda_xD-p-m8k2Pn5cJQOLWTiaBG
80
81
  odoo/addons/shopfloor/services/picking_batch.py,sha256=w51R5HHkQxCHle72k28VetXKfIRRh5GTaEXv6mhikvQ,4649
81
82
  odoo/addons/shopfloor/services/service.py,sha256=HuxZZQ5MxnvDtr89HWQW2muuPvEF4vjI9ArdSFeAxg8,4882
82
83
  odoo/addons/shopfloor/services/single_pack_transfer.py,sha256=S9zZ027fclqUBvqqFHMnD1QcbUb_dYyCtWs1E4pOAV4,16120
83
- odoo/addons/shopfloor/services/zone_picking.py,sha256=H6cA3NAHhxq3uUuwsCjep723fUHkxEJJgMD9duV6nek,83952
84
+ odoo/addons/shopfloor/services/zone_picking.py,sha256=9JMZNhSiwkw1DWIrBj1dquM-i1NaMzDdqbI_wuTgRjw,83806
84
85
  odoo/addons/shopfloor/services/forms/__init__.py,sha256=nxwJdKX47hb56ERf4Qb3UE5dkdsHCbkaXMAXs4XMAd8,27
85
86
  odoo/addons/shopfloor/services/forms/picking_form.py,sha256=F15G5yw78Pd1WgPjMz00-K1JyGaTdfdvVYzG4Dubpqk,2626
86
87
  odoo/addons/shopfloor/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
87
- odoo/addons/shopfloor/static/description/index.html,sha256=eQGIfDi_C6Uf9Sm-3qgyN-96CTpuIE1vqSiMl7K1SQU,17547
88
- odoo/addons/shopfloor/tests/__init__.py,sha256=G9IP98Vs4Vx26FYbaxQcJST7xU7gjUggxTEiy8DPCMI,3902
88
+ odoo/addons/shopfloor/static/description/index.html,sha256=lh9hf3eFsYSHQX2psVp12KI0PY9Sn3C6PAn9194sMyw,17547
89
+ odoo/addons/shopfloor/tests/__init__.py,sha256=4WHuLVjOX_lndDJyuyGcreNckArFJL2HA5PPFlhT6FM,3962
89
90
  odoo/addons/shopfloor/tests/common.py,sha256=v1C7DQT-MvTk81xIYyv--c1BaIpwbia2ey8s35nvrK4,11611
90
91
  odoo/addons/shopfloor/tests/models.py,sha256=jNbYUqYLxkbQMn4j8bejHM3l6CRThJBDfpATl8H83OM,939
91
92
  odoo/addons/shopfloor/tests/test_actions_change_package_lot.py,sha256=iWtTEbIKKrwqvoCUyfuaq1jAtnrW3DP8BQ1xEdZk9t4,46829
@@ -165,12 +166,13 @@ odoo/addons/shopfloor/tests/test_user.py,sha256=tpjFFS1lJ4VwT8fwfz2GseXJy-JhAWC6
165
166
  odoo/addons/shopfloor/tests/test_zone_picking_base.py,sha256=UIAZIVHaEukamc0pOYLA96Bx06MYBftPJfAeUjOrYtg,20132
166
167
  odoo/addons/shopfloor/tests/test_zone_picking_change_pack_lot.py,sha256=BxDjl_WGe_39SpLX0r1yKRf2h_nxzgjkmsSLUpWI61E,5430
167
168
  odoo/addons/shopfloor/tests/test_zone_picking_complete_mix_pack_flux.py,sha256=7_cEh83MNM3Z39X_R6mZ9bgK-V9HsgT1O2nEnxb3PFU,2325
169
+ odoo/addons/shopfloor/tests/test_zone_picking_require_destination_package.py,sha256=T-BfyNsECfSMAAd_xvz4niCj9zZJLvFgBSAe7dGy1VI,2272
168
170
  odoo/addons/shopfloor/tests/test_zone_picking_select_line.py,sha256=ESRaPUL7JX2dXq8TC5teAWu8B6Le-FAYBEWUFtdg1dQ,29974
169
171
  odoo/addons/shopfloor/tests/test_zone_picking_select_line_first_scan_location.py,sha256=uXDRd70zWRy08SinTULIzTJHEmC9u7FpVqOStuigElc,8464
170
172
  odoo/addons/shopfloor/tests/test_zone_picking_select_line_first_scan_location.py.bak,sha256=-TMgeipU2ROoSuyjLPMEMhK5EijwqJm0qS0xixK6TAE,7937
171
173
  odoo/addons/shopfloor/tests/test_zone_picking_select_line_no_prefill_qty.py,sha256=ie3T_MXmxLVQIIeuVR-7w3sr_hCPbDIKHEaSvcxeICs,4360
172
174
  odoo/addons/shopfloor/tests/test_zone_picking_select_picking_type.py,sha256=kuuPjKvpBRrj36z-lj4P7NMLqszkZasIdpvx9mayUQI,870
173
- odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination.py,sha256=QlPsMcTCvT4ffe0-Gt2M9qV4ij5JnHy9ziEes2UB8Xs,26949
175
+ odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination.py,sha256=ISueF4PKvYHD4o79X4hydnQYRdT-LnmYMsyZxDfX3u0,27780
174
176
  odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_no_prefill_qty.py,sha256=1uHVRGMcxbdjEBiHjtCcQIQpt_e6XKZP35ogisNqctU,5238
175
177
  odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_package_not_allowed.py,sha256=Vwg4Wv6psiAr2MB3p799gvm0dtu-vM5ncvFIlA6h-q4,3685
176
178
  odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_pick_pack.py,sha256=QsVxZsGrBEixsdAfjG5N813pCDF_7LDc9ydoFrj2ybs,8952
@@ -181,11 +183,11 @@ odoo/addons/shopfloor/tests/test_zone_picking_unload_buffer_lines.py,sha256=BwQZ
181
183
  odoo/addons/shopfloor/tests/test_zone_picking_unload_set_destination.py,sha256=TdtQf5v1IV_40lRxhwsFZsxVYiTgVVwq5sbyPnZBuIA,13681
182
184
  odoo/addons/shopfloor/tests/test_zone_picking_unload_single.py,sha256=MNqL2YEsG7sU768sYDUh15wDpz3xx1bKy6J_28oVUaQ,4409
183
185
  odoo/addons/shopfloor/tests/test_zone_picking_zero_check.py,sha256=HB0hrvRsH7Ucv1pQm-D8dMWq6tQuTbrI8CPFqZh0Zb0,1376
184
- odoo/addons/shopfloor/views/shopfloor_menu.xml,sha256=zAKIIMnglUsRnfvusKjKsRaZdQVahFZ2Ob4fFZZGsd0,12059
186
+ odoo/addons/shopfloor/views/shopfloor_menu.xml,sha256=gepRIcpP6xuYypagEfpJm1s9-AFu5AxN1n60z1_MTm8,12503
185
187
  odoo/addons/shopfloor/views/stock_location.xml,sha256=d7iqbOQZbb5YPSdAXlQ6spcj8dUvQ37DpEGuaLX5B1M,829
186
188
  odoo/addons/shopfloor/views/stock_move_line.xml,sha256=tn3pV67aRoYmn3qkm3aSgdYArY-z9SIrl_4fpJFy3Jo,1984
187
189
  odoo/addons/shopfloor/views/stock_picking_type.xml,sha256=Ckn2835hO4HtuZQX9x3382C4gs789fb94Cx0444mBkc,800
188
- odoo_addon_shopfloor-16.0.2.4.1.dist-info/METADATA,sha256=H2VBnb2JF8amTaF1BSE1ecqzCzf_GwZ5CNh0gRukDXI,6761
189
- odoo_addon_shopfloor-16.0.2.4.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
190
- odoo_addon_shopfloor-16.0.2.4.1.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
191
- odoo_addon_shopfloor-16.0.2.4.1.dist-info/RECORD,,
190
+ odoo_addon_shopfloor-16.0.2.4.2.4.dist-info/METADATA,sha256=Cyy3zc8LihY4DBrBLLPncDhtH0eZEgBrRJZviaJ_ofs,6763
191
+ odoo_addon_shopfloor-16.0.2.4.2.4.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
192
+ odoo_addon_shopfloor-16.0.2.4.2.4.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
193
+ odoo_addon_shopfloor-16.0.2.4.2.4.dist-info/RECORD,,