odoo-addon-shopfloor 18.0.0.6.0.2__py3-none-any.whl → 18.0.0.7.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.
@@ -11,7 +11,7 @@ Shopfloor
11
11
  !! This file is generated by oca-gen-addon-readme !!
12
12
  !! changes will be overwritten. !!
13
13
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14
- !! source digest: sha256:63709bb5049a329746f85dcd55988b47e5e77d8a3be50ced7fc3768892762c22
14
+ !! source digest: sha256:ca49f8a6cee2bf4a565b75f59d5df7e7cb1ae0085216eb934d53dbb2442de969
15
15
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
16
 
17
17
  .. |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": "18.0.0.6.0",
9
+ "version": "18.0.0.7.0",
10
10
  "development_status": "Beta",
11
11
  "category": "Inventory",
12
12
  "website": "https://github.com/OCA/stock-logistics-shopfloor",
@@ -186,7 +186,7 @@ class LocationContentTransfer(Component):
186
186
  self._domain_recover_pickings()
187
187
  )
188
188
  started_pickings = candidate_pickings.filtered(
189
- lambda picking: any(line.qty_done for line in picking.move_line_ids)
189
+ lambda picking: any(line.picked for line in picking.move_line_ids)
190
190
  )
191
191
  return started_pickings
192
192
 
@@ -416,8 +416,7 @@ class LocationContentTransfer(Component):
416
416
  return [
417
417
  ("location_id", "=", location.id),
418
418
  ("state", "in", ("assigned", "partially_available")),
419
- ("qty_done", ">", 0),
420
- # TODO check generated SQL
419
+ ("picked", "=", True),
421
420
  ("picking_id.user_id", "=", self.env.uid),
422
421
  ]
423
422
 
@@ -431,7 +430,7 @@ class LocationContentTransfer(Component):
431
430
  # hook used in module shopfloor_checkout_sync
432
431
  def _write_destination_on_lines(self, lines, location):
433
432
  lines.location_dest_id = location
434
- lines.package_level_id.picking_id.location_dest_id = location
433
+ lines.package_level_id.location_dest_id = location
435
434
 
436
435
  def _set_all_destination_lines_and_done(self, pickings, move_lines, dest_location):
437
436
  self._write_destination_on_lines(move_lines, dest_location)
@@ -762,7 +761,7 @@ class LocationContentTransfer(Component):
762
761
 
763
762
  self._lock_lines(move_line)
764
763
 
765
- move_line.qty_done = quantity
764
+ move_line.qty_picked = quantity
766
765
  self._write_destination_on_lines(move_line, scanned_location)
767
766
 
768
767
  stock = self._actions_for("stock")
@@ -770,7 +769,7 @@ class LocationContentTransfer(Component):
770
769
  backorders = stock.validate_moves(move_line.move_id)
771
770
  if backorders:
772
771
  for move_line in backorders.mapped("move_line_ids"):
773
- move_line.qty_done = move_line.quantity
772
+ move_line.picked = True
774
773
  backorders.user_id = self.env.user
775
774
  # process first backorder of current line
776
775
  move_lines = backorders.move_line_ids
@@ -858,9 +857,8 @@ class LocationContentTransfer(Component):
858
857
  # split the move to process only the lines related to the package.
859
858
  package_move.split_other_move_lines(package_move_lines)
860
859
  lot = package_move.move_line_ids.lot_id
861
- # We need to set qty_done at 0 because otherwise
862
- # the move_line will not be deleted
863
- package_move.move_line_ids.write({"qty_done": 0})
860
+ # We need to unpick the line because otherwise it won't be deleted
861
+ package_move.move_line_ids.picked = False
864
862
  package = package_level.package_id
865
863
  if (
866
864
  self.is_allow_move_create()
@@ -912,9 +910,8 @@ class LocationContentTransfer(Component):
912
910
  move = move_line.move_id
913
911
  package = move_line.package_id
914
912
  lot = move_line.lot_id
915
- # We need to set qty_done at 0 because otherwise
916
- # the move_line will not be deleted
917
- move_line.qty_done = 0
913
+ # We need to unpick the line because otherwise it won't be deleted
914
+ move_line.picked = False
918
915
  if self.is_allow_move_create() and self.env.user == move.picking_id.create_uid:
919
916
  # Owned by the user deleting the move
920
917
  move._action_cancel()
@@ -1072,7 +1069,7 @@ class ShopfloorLocationContentTransferValidatorResponse(Component):
1072
1069
  """
1073
1070
  return {
1074
1071
  "start": {},
1075
- "scan_location": {},
1072
+ "scan_location": self._schema_scan_location,
1076
1073
  "get_work": {},
1077
1074
  "scan_destination_all": self._schema_all,
1078
1075
  "start_single": self._schema_single,
@@ -1111,6 +1108,15 @@ class ShopfloorLocationContentTransferValidatorResponse(Component):
1111
1108
  },
1112
1109
  }
1113
1110
 
1111
+ @property
1112
+ def _schema_scan_location(self):
1113
+ return {
1114
+ "location": self.schemas._schema_dict_of(
1115
+ self.schemas.location(),
1116
+ required=False,
1117
+ ),
1118
+ }
1119
+
1114
1120
  def start_or_recover(self):
1115
1121
  return self._response_schema(
1116
1122
  next_states={
@@ -1205,3 +1211,16 @@ class ShopfloorLocationContentTransferValidatorResponse(Component):
1205
1211
  return self._response_schema(
1206
1212
  next_states={"scan_location", "get_work", "start_single"}
1207
1213
  )
1214
+
1215
+ def cancel_work(self):
1216
+ return self._response_schema(next_states={"scan_location", "get_work"})
1217
+
1218
+ def find_work(self):
1219
+ return self._response_schema(
1220
+ next_states={
1221
+ "scan_location",
1222
+ "get_work",
1223
+ "scan_destination_all",
1224
+ "start_single",
1225
+ }
1226
+ )
@@ -372,7 +372,7 @@ ul.auto-toc {
372
372
  !! This file is generated by oca-gen-addon-readme !!
373
373
  !! changes will be overwritten. !!
374
374
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375
- !! source digest: sha256:63709bb5049a329746f85dcd55988b47e5e77d8a3be50ced7fc3768892762c22
375
+ !! source digest: sha256:ca49f8a6cee2bf4a565b75f59d5df7e7cb1ae0085216eb934d53dbb2442de969
376
376
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377
377
  <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/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/stock-logistics-shopfloor/tree/18.0/shopfloor"><img alt="OCA/stock-logistics-shopfloor" src="https://img.shields.io/badge/github-OCA%2Fstock--logistics--shopfloor-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/stock-logistics-shopfloor-18-0/stock-logistics-shopfloor-18-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/stock-logistics-shopfloor&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378
378
  <p>Shopfloor is a barcode scanner application for internal warehouse
@@ -54,16 +54,15 @@ from . import test_delivery_set_qty_done_line
54
54
  from . import test_delivery_sublocation
55
55
  from . import test_delivery_list_stock_picking
56
56
  from . import test_delivery_select
57
-
58
- # from . import test_location_content_transfer_base
59
- # from . import test_location_content_transfer_start
60
- # from . import test_location_content_transfer_get_work
61
- # from . import test_location_content_transfer_set_destination_all
62
- # from . import test_location_content_transfer_scan_location
63
- # from . import test_location_content_transfer_single
64
- # from . import test_location_content_transfer_set_destination_package_or_line
65
- # from . import test_location_content_transfer_putaway
66
- # from . import test_location_content_transfer_mix
57
+ from . import test_location_content_transfer_base
58
+ from . import test_location_content_transfer_start
59
+ from . import test_location_content_transfer_get_work
60
+ from . import test_location_content_transfer_set_destination_all
61
+ from . import test_location_content_transfer_scan_location
62
+ from . import test_location_content_transfer_single
63
+ from . import test_location_content_transfer_set_destination_package_or_line
64
+ from . import test_location_content_transfer_putaway
65
+ from . import test_location_content_transfer_mix
67
66
  from . import test_zone_picking_base
68
67
  from . import test_zone_picking_complete_mix_pack_flux
69
68
  from . import test_zone_picking_start
@@ -178,11 +178,14 @@ class ActionsDataCase(ActionsDataCaseBase):
178
178
  "partner": {"id": self.customer.id, "name": self.customer.name},
179
179
  "carrier": {"id": carrier.id, "name": carrier.name},
180
180
  "ship_carrier": None,
181
- "progress": 100.0,
181
+ "progress": 0.0,
182
182
  "priority": "0",
183
183
  }
184
184
  self.assertEqual(data.pop("scheduled_date").split("T")[0], "2020-08-03")
185
185
  self.assertDictEqual(data, expected)
186
+ self.picking.move_line_ids[0].picked = True
187
+ data = self.data.picking(self.picking, with_progress=True)
188
+ self.assertEqual(data.pop("progress"), 25.0)
186
189
 
187
190
  def test_data_product(self):
188
191
  (
@@ -148,7 +148,7 @@ class TestActionsDataDetailCase(ActionsDataDetailCaseBase):
148
148
  "carrier_id": carrier.id,
149
149
  }
150
150
  )
151
- picking.move_ids[0].quantity = 5.0
151
+ picking.move_line_ids[0].qty_picked = 5.0
152
152
  picking.move_ids.write({"date": "2020-05-13"})
153
153
  data = self.data_detail.picking_detail(picking, with_progress=True)
154
154
  self.assert_schema(self.schema_detail.picking_detail(), data)
@@ -161,7 +161,7 @@ class TestActionsDataDetailCase(ActionsDataDetailCaseBase):
161
161
  "note": Markup("<p>read me</p>"),
162
162
  "origin": "created by test",
163
163
  "ship_carrier": None,
164
- "weight": 100.0,
164
+ "weight": picking.weight,
165
165
  "partner": {"id": self.customer.id, "name": self.customer.name},
166
166
  "carrier": {"id": picking.carrier_id.id, "name": picking.carrier_id.name},
167
167
  "priority": "Urgent",
@@ -171,7 +171,7 @@ class TestActionsDataDetailCase(ActionsDataDetailCaseBase):
171
171
  },
172
172
  "move_lines": self.data_detail.move_lines(picking.move_line_ids),
173
173
  "picking_type_code": "outgoing",
174
- "progress": 87.5,
174
+ "progress": 12.5,
175
175
  }
176
176
  self.assertEqual(data.pop("scheduled_date").split("T")[0], "2020-05-13")
177
177
  self.assertDictEqual(data, expected)
@@ -89,12 +89,11 @@ class LocationContentTransferCommonCase(CommonCase):
89
89
  It means a user scanned the location with the pickings. They are:
90
90
 
91
91
  * assigned to the user
92
- * the qty_done of all their move lines is set to they reserved qty
92
+ * all reserved qty are picked
93
93
 
94
94
  """
95
95
  pickings.user_id = cls.env.uid
96
- for line in pickings.mapped("move_line_ids"):
97
- line.qty_done = line.quantity
96
+ pickings.move_line_ids.picked = True
98
97
 
99
98
  def assert_response_start(self, response, message=None, popup=None):
100
99
  self.assert_response(
@@ -23,7 +23,7 @@ class TestLocationContentTransferGetWork(LocationContentTransferCommonCase):
23
23
  [("location_id", "=", cls.stock_location.id)]
24
24
  )
25
25
  cls.move_lines = cls.pickings.move_line_ids.filtered(
26
- lambda line: line.qty_done == 0
26
+ lambda line: not line.picked
27
27
  and line.state in ("assigned", "partially_available")
28
28
  and not line.shopfloor_user_id
29
29
  )
@@ -80,13 +80,39 @@ class LocationContentTransferMixCase(LocationContentTransferCommonCase):
80
80
  "warehouse_id": cls.wh.id,
81
81
  "picking_type_id": cls.wh.out_type_id.id,
82
82
  "procure_method": "make_to_order",
83
- "state": "draft",
83
+ "state": "waiting",
84
84
  }
85
85
  )
86
- cls.ship_move_a._assign_picking()
87
- cls.ship_move_a._action_confirm()
88
- cls.pack_move_a = cls.ship_move_a.move_orig_ids[0]
89
- cls.pick_move_a = cls.pack_move_a.move_orig_ids[0]
86
+ cls.pack_move_a = cls.env["stock.move"].create(
87
+ {
88
+ "name": cls.product_a.display_name,
89
+ "product_id": cls.product_a.id,
90
+ "product_uom_qty": 10.0,
91
+ "product_uom": cls.product_a.uom_id.id,
92
+ "location_id": cls.pack_location.id,
93
+ "location_dest_id": cls.ship_location.id,
94
+ "warehouse_id": cls.wh.id,
95
+ "picking_type_id": cls.wh.pack_type_id.id,
96
+ "procure_method": "make_to_order",
97
+ "move_dest_ids": [(4, cls.ship_move_a.id)],
98
+ "state": "waiting",
99
+ }
100
+ )
101
+ cls.pick_move_a = cls.env["stock.move"].create(
102
+ {
103
+ "name": cls.product_a.display_name,
104
+ "product_id": cls.product_a.id,
105
+ "product_uom_qty": 10.0,
106
+ "product_uom": cls.product_a.uom_id.id,
107
+ "location_id": cls.stock_location.id,
108
+ "location_dest_id": cls.pack_location.id,
109
+ "warehouse_id": cls.wh.id,
110
+ "picking_type_id": cls.wh.pick_type_id.id,
111
+ "move_dest_ids": [(4, cls.pack_move_a.id)],
112
+ "state": "confirmed",
113
+ }
114
+ )
115
+ (cls.ship_move_a | cls.pack_move_a | cls.pick_move_a)._assign_picking()
90
116
  cls.picking1 = cls.pick_move_a.picking_id
91
117
  cls.packing1 = cls.pack_move_a.picking_id
92
118
  cls.picking1.action_assign()
@@ -177,7 +203,7 @@ class LocationContentTransferMixCase(LocationContentTransferCommonCase):
177
203
  )
178
204
  assert response["message"]["message_type"] == "success"
179
205
  assert move_line.state == "done"
180
- assert move_line.qty_done == qty
206
+ assert move_line.qty_picked == qty
181
207
  return response
182
208
 
183
209
  def test_with_zone_picking1(self):
@@ -306,12 +332,12 @@ class LocationContentTransferMixCase(LocationContentTransferCommonCase):
306
332
  lambda x: not x.shopfloor_user_id and x.location_id == dest_location1
307
333
  )
308
334
  self.assertEqual(pack_first_pallet.quantity, 6)
309
- self.assertEqual(pack_first_pallet.qty_done, 0)
335
+ self.assertEqual(pack_first_pallet.qty_picked, 0)
310
336
  pack_second_pallet = pack_move_a.move_line_ids.filtered(
311
337
  lambda x: not x.shopfloor_user_id and x.location_id == dest_location2
312
338
  )
313
339
  self.assertEqual(pack_second_pallet.quantity, 4)
314
- self.assertEqual(pack_second_pallet.qty_done, 0)
340
+ self.assertEqual(pack_second_pallet.qty_picked, 0)
315
341
  # Operator-2 with the "location content transfer" scenario scan
316
342
  # the location where the first pallet is.
317
343
  # This pallet/move line will be put in its own transfer as its sibling
@@ -327,7 +353,7 @@ class LocationContentTransferMixCase(LocationContentTransferCommonCase):
327
353
  response_packages[0]["package_src"]["id"], pack_first_pallet.package_id.id
328
354
  )
329
355
  # Ensure that the second pallet is untouched
330
- self.assertEqual(pack_second_pallet.qty_done, 0)
356
+ self.assertEqual(pack_second_pallet.qty_picked, 0)
331
357
  # Operator-3 with the "location content transfer" scenario scan
332
358
  # the location where the first pallet is: he should found nothing
333
359
  response = self._location_content_transfer_process_line(
@@ -356,11 +382,11 @@ class LocationContentTransferMixCase(LocationContentTransferCommonCase):
356
382
  pack_first_pallet.location_dest_id,
357
383
  ),
358
384
  )
359
- self.assertEqual(pack_first_pallet.qty_done, 6)
385
+ self.assertEqual(pack_first_pallet.qty_picked, 6)
360
386
  self.assertEqual(pack_first_pallet.state, "done")
361
387
  self.assertEqual(pack_first_pallet.move_id.product_uom_qty, qty)
362
388
  # Ensure that the second pallet is untouched
363
- self.assertEqual(pack_second_pallet.qty_done, 0)
389
+ self.assertEqual(pack_second_pallet.qty_picked, 0)
364
390
  # Operator-2 (still with the "location content transfer" scenario) scan
365
391
  # the location where the second pallet is
366
392
  pack_move_a = pick_move_line2.move_id.move_dest_ids.filtered(
@@ -447,7 +473,7 @@ class LocationContentTransferMixCase(LocationContentTransferCommonCase):
447
473
  lambda x: not x.shopfloor_user_id and x.location_id == dest_location1
448
474
  )
449
475
  self.assertEqual(pack_first_pallet.quantity, 6)
450
- self.assertEqual(pack_first_pallet.qty_done, 0)
476
+ self.assertEqual(pack_first_pallet.qty_picked, 0)
451
477
  # Operator-2 with the "location content transfer" scenario scan
452
478
  # the location where the first pallet is.
453
479
  # This pallet/move line will be put in its own move and transfer by convenience
@@ -473,7 +499,7 @@ class LocationContentTransferMixCase(LocationContentTransferCommonCase):
473
499
  lambda x: not x.shopfloor_user_id and x.location_id == dest_location2
474
500
  )
475
501
  self.assertEqual(pack_second_pallet.quantity, 4)
476
- self.assertEqual(pack_second_pallet.qty_done, 0)
502
+ self.assertEqual(pack_second_pallet.qty_picked, 0)
477
503
  # The last action has updated the pack operation (new move line) in the
478
504
  # transfer previously processed by Operator-2.
479
505
  self.assertEqual(original_pack_transfer.state, "assigned")
@@ -492,7 +518,7 @@ class LocationContentTransferMixCase(LocationContentTransferCommonCase):
492
518
  pack_first_pallet.location_dest_id,
493
519
  ),
494
520
  )
495
- self.assertEqual(pack_first_pallet.qty_done, 6)
521
+ self.assertEqual(pack_first_pallet.qty_picked, 6)
496
522
  self.assertEqual(pack_first_pallet.state, "done")
497
523
  self.assertEqual(pack_first_pallet.move_id.product_uom_qty, qty)
498
524
  # Operator-2 with the "location content transfer" scenario scan
@@ -47,10 +47,26 @@ class LocationContentTransferSetDestinationAllCase(LocationContentTransferCommon
47
47
  self.assertRecordValues(
48
48
  self.pickings.move_line_ids,
49
49
  [
50
- {"qty_done": 10.0, "state": "done", "location_dest_id": destination.id},
51
- {"qty_done": 10.0, "state": "done", "location_dest_id": destination.id},
52
- {"qty_done": 10.0, "state": "done", "location_dest_id": destination.id},
53
- {"qty_done": 10.0, "state": "done", "location_dest_id": destination.id},
50
+ {
51
+ "qty_picked": 10.0,
52
+ "state": "done",
53
+ "location_dest_id": destination.id,
54
+ },
55
+ {
56
+ "qty_picked": 10.0,
57
+ "state": "done",
58
+ "location_dest_id": destination.id,
59
+ },
60
+ {
61
+ "qty_picked": 10.0,
62
+ "state": "done",
63
+ "location_dest_id": destination.id,
64
+ },
65
+ {
66
+ "qty_picked": 10.0,
67
+ "state": "done",
68
+ "location_dest_id": destination.id,
69
+ },
54
70
  ],
55
71
  )
56
72
  self.assertRecordValues(
@@ -91,6 +107,7 @@ class LocationContentTransferSetDestinationAllCase(LocationContentTransferCommon
91
107
  the current pickings is validated.
92
108
  """
93
109
  # Put a partial quantity for 'product_d' to get a partially available move
110
+ self.picking2.move_line_ids.picked = False
94
111
  self.picking2.do_unreserve()
95
112
  self._update_qty_in_location(self.content_loc, self.product_d, 5)
96
113
  self.picking2.action_assign()
@@ -138,6 +155,7 @@ class LocationContentTransferSetDestinationAllCase(LocationContentTransferCommon
138
155
  remaining qties stay in their current picking.
139
156
  """
140
157
  # Put a partial quantity for 'product_d' to get a partially available move
158
+ self.picking2.move_line_ids.picked = False
141
159
  self.picking2.do_unreserve()
142
160
  self._update_qty_in_location(self.content_loc, self.product_d, 5)
143
161
  self.picking2.action_assign()
@@ -450,7 +450,7 @@ class LocationContentTransferSetDestinationXCase(LocationContentTransferCommonCa
450
450
  lambda m: m.product_id == self.product_c
451
451
  )
452
452
  self.assertEqual(move_line_c.quantity, 10)
453
- self.assertEqual(move_line_c.qty_done, 10)
453
+ self.assertEqual(move_line_c.qty_picked, 10)
454
454
  self._simulate_selected_move_line(move_line_c)
455
455
  # Scan partial qty (6/10)
456
456
  response = self.service.dispatch(
@@ -465,8 +465,8 @@ class LocationContentTransferSetDestinationXCase(LocationContentTransferCommonCa
465
465
  done_picking = original_picking.backorder_ids
466
466
  # Check move line data
467
467
  self.assertEqual(move_line_c.move_id.product_uom_qty, 6)
468
- self.assertEqual(move_line_c.quantity, 0)
469
- self.assertEqual(move_line_c.qty_done, 6)
468
+ self.assertEqual(move_line_c.quantity, 6)
469
+ self.assertEqual(move_line_c.qty_picked, 6)
470
470
  self.assertEqual(move_line_c.state, "done")
471
471
  self.assertEqual(original_picking.backorder_ids, done_picking)
472
472
  self.assertEqual(done_picking.state, "done")
@@ -479,7 +479,7 @@ class LocationContentTransferSetDestinationXCase(LocationContentTransferCommonCa
479
479
  self.assertEqual(move.product_id, self.product_c)
480
480
  self.assertEqual(move.product_uom_qty, 4)
481
481
  self.assertEqual(move.move_line_ids.quantity, 4)
482
- self.assertEqual(move.move_line_ids.qty_done, 4)
482
+ self.assertEqual(move.move_line_ids.qty_picked, 4)
483
483
  # Check the response -> we must first process the backorder
484
484
  self.assert_response_start_single(
485
485
  response,
@@ -504,8 +504,8 @@ class LocationContentTransferSetDestinationXCase(LocationContentTransferCommonCa
504
504
  done_picking2 = remaining_move_line_c.picking_id
505
505
  # Check move line data
506
506
  self.assertEqual(remaining_move_line_c.move_id.product_uom_qty, 4)
507
- self.assertEqual(remaining_move_line_c.quantity, 0)
508
- self.assertEqual(remaining_move_line_c.qty_done, 4)
507
+ self.assertEqual(remaining_move_line_c.quantity, 4)
508
+ self.assertEqual(remaining_move_line_c.qty_picked, 4)
509
509
  self.assertEqual(remaining_move_line_c.state, "done")
510
510
  self.assertTrue(done_picking2 != original_picking)
511
511
  self.assertEqual(done_picking2.state, "done")
@@ -536,8 +536,8 @@ class LocationContentTransferSetDestinationXCase(LocationContentTransferCommonCa
536
536
  },
537
537
  )
538
538
  self.assertEqual(move_line_d.move_id.product_uom_qty, 10)
539
- self.assertEqual(move_line_d.quantity, 0)
540
- self.assertEqual(move_line_d.qty_done, 10)
539
+ self.assertEqual(move_line_d.quantity, 10)
540
+ self.assertEqual(move_line_d.qty_picked, 10)
541
541
  self.assertEqual(move_line_d.state, "done")
542
542
  self.assertEqual(original_picking.state, "done")
543
543
 
@@ -568,9 +568,9 @@ class LocationContentTransferSetDestinationXCase(LocationContentTransferCommonCa
568
568
  )
569
569
  done_picking = picking
570
570
  # Check move line data
571
- self.assertEqual(move_line.move_id.product_uom_qty, 6)
572
- self.assertEqual(move_line.quantity, 0)
573
- self.assertEqual(move_line.qty_done, 6)
571
+ self.assertEqual(move_line.move_id.product_uom_qty, 10)
572
+ self.assertEqual(move_line.quantity, 6)
573
+ self.assertEqual(move_line.qty_picked, 6)
574
574
  self.assertEqual(move_line.state, "done")
575
575
  self.assertEqual(done_picking.state, "done")
576
576
 
@@ -612,9 +612,9 @@ class LocationContentTransferSetDestinationXCase(LocationContentTransferCommonCa
612
612
  # 2 operations then the done operation is set into a specific picking
613
613
  first_done_picking = picking.backorder_ids
614
614
  # Check move line data
615
- self.assertEqual(move_line.move_id.product_uom_qty, 6)
616
- self.assertEqual(move_line.quantity, 0)
617
- self.assertEqual(move_line.qty_done, 6)
615
+ self.assertEqual(move_line.move_id.product_uom_qty, 10)
616
+ self.assertEqual(move_line.quantity, 6)
617
+ self.assertEqual(move_line.qty_picked, 6)
618
618
  self.assertEqual(move_line.state, "done")
619
619
  self.assertEqual(first_done_picking.state, "done")
620
620
 
@@ -639,9 +639,9 @@ class LocationContentTransferSetDestinationXCase(LocationContentTransferCommonCa
639
639
 
640
640
  # the initial picking should be done
641
641
  # Check move line data
642
- self.assertEqual(move_line.move_id.product_uom_qty, 6)
643
- self.assertEqual(move_line.quantity, 0)
644
- self.assertEqual(move_line.qty_done, 6)
642
+ self.assertEqual(move_line.move_id.product_uom_qty, 10)
643
+ self.assertEqual(move_line.quantity, 6)
644
+ self.assertEqual(move_line.qty_picked, 6)
645
645
  self.assertEqual(move_line.state, "done")
646
646
  self.assertEqual(picking.state, "done")
647
647
 
@@ -784,8 +784,8 @@ class LocationContentTransferSetDestinationXSpecialCase(
784
784
  self.assertEqual(done_picking.state, "done")
785
785
  self.assertEqual(original_picking.state, "assigned")
786
786
  self.assertEqual(move_line.move_id.product_uom_qty, 6)
787
- self.assertEqual(move_line.quantity, 0)
788
- self.assertEqual(move_line.qty_done, 6)
787
+ self.assertEqual(move_line.quantity, 6)
788
+ self.assertEqual(move_line.qty_picked, 6)
789
789
  self.assertEqual(move_line.location_dest_id, self.dest_location)
790
790
  self.assertEqual(len(original_picking.move_ids), 2)
791
791
  moves_product_b = original_picking.move_ids.filtered(
@@ -805,7 +805,7 @@ class LocationContentTransferSetDestinationXSpecialCase(
805
805
  self.assertEqual(remaining_move.state, "assigned")
806
806
  self.assertEqual(remaining_move.product_uom_qty, 4)
807
807
  self.assertEqual(remaining_move.move_line_ids.quantity, 4)
808
- self.assertEqual(remaining_move.move_line_ids.qty_done, 4)
808
+ self.assertEqual(remaining_move.move_line_ids.qty_picked, 4)
809
809
  # Check the response
810
810
  move_lines = self.service._find_transfer_move_lines(self.content_loc)
811
811
  self.assert_response_start_single(
@@ -893,7 +893,7 @@ class LocationContentTransferSetDestinationChainSpecialCase(
893
893
  """
894
894
  picking_a = self.picking_a
895
895
  picking_b = self.picking_b
896
- picking_a.move_line_ids.qty_done = 10
896
+ picking_a.move_line_ids.qty_picked = 10
897
897
  picking_a._action_done()
898
898
  self.assertEqual(picking_a.state, "done")
899
899
  self.assertEqual(picking_b.state, "assigned")
@@ -904,7 +904,7 @@ class LocationContentTransferSetDestinationChainSpecialCase(
904
904
  )
905
905
 
906
906
  self.assertEqual(move_line_c.quantity, 10)
907
- self.assertEqual(move_line_c.qty_done, 10)
907
+ self.assertEqual(move_line_c.qty_picked, 10)
908
908
  # Scan partial qty (6/10)
909
909
  self.service.dispatch(
910
910
  "set_destination_line",
@@ -917,8 +917,8 @@ class LocationContentTransferSetDestinationChainSpecialCase(
917
917
  )
918
918
  # Check move line data
919
919
  self.assertEqual(move_line_c.move_id.product_uom_qty, 6)
920
- self.assertEqual(move_line_c.quantity, 0)
921
- self.assertEqual(move_line_c.qty_done, 6)
920
+ self.assertEqual(move_line_c.quantity, 6)
921
+ self.assertEqual(move_line_c.qty_picked, 6)
922
922
  self.assertEqual(move_line_c.state, "done")
923
923
  # the move has been split
924
924
  move = move_line_c.picking_id.backorder_ids.move_ids
@@ -929,7 +929,7 @@ class LocationContentTransferSetDestinationChainSpecialCase(
929
929
  move_line = move.move_line_ids
930
930
  self.assertEqual(move_line.move_id.product_uom_qty, 4)
931
931
  self.assertEqual(move_line.quantity, 4)
932
- self.assertEqual(move_line.qty_done, 4)
932
+ self.assertEqual(move_line.qty_picked, 4)
933
933
 
934
934
  def test_set_destination_package_partial_qty_with_move_orig_ids(self):
935
935
  """Scanned destination location with partial qty, but related moves
@@ -943,9 +943,9 @@ class LocationContentTransferSetDestinationChainSpecialCase(
943
943
  package1 = self.env["stock.quant.package"].create({})
944
944
  package2 = self.env["stock.quant.package"].create({})
945
945
  line1 = picking_a.move_line_ids
946
- line2 = line1.copy({"quantity": 4, "qty_done": 4})
946
+ line2 = line1.copy({"quantity": 4, "qty_picked": 4})
947
947
  line1.with_context(bypass_reservation_update=True).quantity = 6
948
- line1.qty_done = 6
948
+ line1.qty_picked = 6
949
949
  line1.result_package_id = package1
950
950
  line2.result_package_id = package2
951
951
  picking_a._action_done()
@@ -959,7 +959,7 @@ class LocationContentTransferSetDestinationChainSpecialCase(
959
959
  move = move_line.move_id
960
960
 
961
961
  self.assertEqual(move_line.quantity, 6.0)
962
- self.assertEqual(move_line.qty_done, 6.0)
962
+ self.assertEqual(move_line.qty_picked, 6.0)
963
963
  self._simulate_selected_move_line(move_line)
964
964
  # Scan partial qty (6/10)
965
965
  self.service.dispatch(
@@ -973,8 +973,8 @@ class LocationContentTransferSetDestinationChainSpecialCase(
973
973
  )
974
974
  # Check move line data
975
975
  self.assertEqual(move_line.move_id.product_uom_qty, 6)
976
- self.assertEqual(move_line.quantity, 0)
977
- self.assertEqual(move_line.qty_done, 6)
976
+ self.assertEqual(move_line.quantity, 6)
977
+ self.assertEqual(move_line.qty_picked, 6)
978
978
  self.assertEqual(move_line.state, "done")
979
979
  # the move has been split
980
980
  self.assertNotEqual(move_line.move_id, move)
@@ -984,7 +984,7 @@ class LocationContentTransferSetDestinationChainSpecialCase(
984
984
  move_line = move.move_line_ids
985
985
  self.assertEqual(move_line.move_id.product_uom_qty, 4)
986
986
  self.assertEqual(move_line.quantity, 4)
987
- self.assertEqual(move_line.qty_done, 4)
987
+ self.assertEqual(move_line.qty_picked, 4)
988
988
 
989
989
 
990
990
  class LocationContentTransferSetDestinationNextOperationSpecialCase(
@@ -1053,7 +1053,7 @@ class LocationContentTransferSetDestinationNextOperationSpecialCase(
1053
1053
  # check that the next operation has the appropriate attributes
1054
1054
  move_line = backorder.move_line_ids
1055
1055
  self.assertEqual(move_line.quantity, 4)
1056
- self.assertEqual(move_line.qty_done, 4)
1056
+ self.assertEqual(move_line.qty_picked, 4)
1057
1057
  self.assertEqual(move_line.picking_id.user_id, self.env.user)
1058
1058
  # if we process the quantity of the backorder, the next operation should
1059
1059
  # be the remaining one of the initial picking
@@ -631,11 +631,9 @@ class LocationContentTransferSingleCase(LocationContentTransferCommonCase):
631
631
  the assigned user will be removed.
632
632
 
633
633
  """
634
- self.env.user = self.shopfloor_manager
635
- self.assertTrue(self.env.user != self.picking1.create_uid)
636
634
  package_level = self.picking1.move_line_ids.package_level_id
637
635
  move_lines_before = self.picking1.move_line_ids
638
- move_lines_before.shopfloor_user_id = self.env.user
636
+ move_lines_before.shopfloor_user_id = self.env.ref("base.user_admin")
639
637
  response = self.service.dispatch(
640
638
  "stock_out_package",
641
639
  params={
@@ -852,12 +850,10 @@ class LocationContentTransferSingleSpecialCase(LocationContentTransferCommonCase
852
850
  compare to the previous test.
853
851
 
854
852
  """
855
- self.env.user = self.shopfloor_manager
856
- self.assertTrue(self.env.user != self.picking.create_uid)
857
853
  move_line = self.move_product_b.move_line_ids.filtered(
858
854
  lambda ml: ml.quantity == 4 # 4/10 to stock out
859
855
  )
860
- move_line.shopfloor_user_id = self.env.user
856
+ move_line.shopfloor_user_id = self.env.ref("base.user_admin")
861
857
  self.service.dispatch(
862
858
  "stock_out_line",
863
859
  params={"location_id": self.content_loc.id, "move_line_id": move_line.id},
@@ -114,9 +114,9 @@ class TestLocationContentTransferStart(LocationContentTransferCommonCase):
114
114
  self.assertRecordValues(
115
115
  processed_move_lines,
116
116
  [
117
- {"qty_done": 10.0},
118
- {"qty_done": 10.0},
119
- {"qty_done": 10.0},
117
+ {"qty_picked": 10.0},
118
+ {"qty_picked": 10.0},
119
+ {"qty_picked": 10.0},
120
120
  ],
121
121
  )
122
122
  self.assertRecordValues(
@@ -142,9 +142,9 @@ class TestLocationContentTransferStart(LocationContentTransferCommonCase):
142
142
  self.assertRecordValues(
143
143
  processed_move_lines,
144
144
  [
145
- {"qty_done": 10.0},
146
- {"qty_done": 10.0},
147
- {"qty_done": 10.0},
145
+ {"qty_picked": 10.0},
146
+ {"qty_picked": 10.0},
147
+ {"qty_picked": 10.0},
148
148
  ],
149
149
  )
150
150
  self.assertRecordValues(
@@ -239,7 +239,7 @@ class LocationContentTransferStartSpecialCase(LocationContentTransferCommonCase)
239
239
  self.assertRecordValues(new_picking, [{"user_id": self.env.uid}])
240
240
  self.assertRecordValues(
241
241
  new_picking.move_line_ids,
242
- [{"qty_done": 10.0}, {"qty_done": 10.0}],
242
+ [{"qty_picked": 10.0}, {"qty_picked": 10.0}],
243
243
  )
244
244
  self.assertRecordValues(new_picking.package_level_ids, [{"is_done": True}])
245
245
 
@@ -249,12 +249,12 @@ class LocationContentTransferStartSpecialCase(LocationContentTransferCommonCase)
249
249
  picking.move_line_ids,
250
250
  [
251
251
  {
252
- "qty_done": 0.0,
252
+ "qty_picked": 0.0,
253
253
  "location_id": self.shelf1.id,
254
254
  "package_id": other_pack_a.id,
255
255
  },
256
256
  {
257
- "qty_done": 0.0,
257
+ "qty_picked": 0.0,
258
258
  "location_id": self.shelf1.id,
259
259
  "package_id": other_pack_b.id,
260
260
  },
@@ -285,7 +285,7 @@ class LocationContentTransferStartSpecialCase(LocationContentTransferCommonCase)
285
285
  picking.move_ids, in_package=True, location=self.content_loc
286
286
  )
287
287
  picking.action_assign()
288
- picking.move_line_ids[0].qty_done = 10
288
+ picking.move_line_ids[0].qty_picked = 10
289
289
  response = self.service.dispatch(
290
290
  "scan_location", params={"barcode": self.content_loc.barcode}
291
291
  )
@@ -315,7 +315,7 @@ class LocationContentTransferStartSpecialCase(LocationContentTransferCommonCase)
315
315
  )
316
316
  picking.action_assign()
317
317
  # a user picked qty
318
- picking.move_line_ids[0].qty_done = 10
318
+ picking.move_line_ids[0].qty_picked = 10
319
319
  response = self.service.dispatch(
320
320
  "scan_location", params={"barcode": self.content_loc.barcode}
321
321
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-shopfloor
3
- Version: 18.0.0.6.0.2
3
+ Version: 18.0.0.7.0
4
4
  Requires-Python: >=3.10
5
5
  Requires-Dist: odoo-addon-base_rest==18.0.*
6
6
  Requires-Dist: odoo-addon-jsonifier==18.0.*
@@ -42,7 +42,7 @@ Shopfloor
42
42
  !! This file is generated by oca-gen-addon-readme !!
43
43
  !! changes will be overwritten. !!
44
44
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
45
- !! source digest: sha256:63709bb5049a329746f85dcd55988b47e5e77d8a3be50ced7fc3768892762c22
45
+ !! source digest: sha256:ca49f8a6cee2bf4a565b75f59d5df7e7cb1ae0085216eb934d53dbb2442de969
46
46
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
47
47
 
48
48
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -1,6 +1,6 @@
1
- odoo/addons/shopfloor/README.rst,sha256=vpeT4OYvvgw1SyxTVqx99AdJ1QPD8587hPRlns0xyaQ,6138
1
+ odoo/addons/shopfloor/README.rst,sha256=OFhaYSNmDL_CHeOAuBjjlY8Lzbs285p9fOoqlFnCGD0,6138
2
2
  odoo/addons/shopfloor/__init__.py,sha256=ke3RmZ7XkX-lz4S8NHAxNIEJ5_Nvj5bjBAqD-W-q73c,91
3
- odoo/addons/shopfloor/__manifest__.py,sha256=K1AyooaB8j3Kv9MPFYj1lohw5Fln9E7Z-O_6qnoGQRY,2572
3
+ odoo/addons/shopfloor/__manifest__.py,sha256=JRhFwGcICZePvBOPFJRLry_O1aRlK7bwr9SDlOeV0lo,2572
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
@@ -73,7 +73,7 @@ odoo/addons/shopfloor/services/__init__.py,sha256=4lhF0VNx8QosVEZj9QJYgv6oWD0kl9
73
73
  odoo/addons/shopfloor/services/checkout.py,sha256=E40wOnnuKhpc98Q27ePz0nAvd9xB3-o6GSz8C7Hj6oc,82616
74
74
  odoo/addons/shopfloor/services/cluster_picking.py,sha256=U40bzXXmxGOnKL7yhQzpZfAVyDL2sBbNHIbIcUfdBvg,71927
75
75
  odoo/addons/shopfloor/services/delivery.py,sha256=Gxbwp0x9XPLx9AJ3GFDSH69xHrQCD_R8m2i78kuuS6s,34352
76
- odoo/addons/shopfloor/services/location_content_transfer.py,sha256=ovx3w4xnACTlc-24JmUcGtcKgaTb1FXpZ31m2FhTGM4,50431
76
+ odoo/addons/shopfloor/services/location_content_transfer.py,sha256=JpuWlHBzRNSk90k6EHq8gAvgaNkV3IlsTo5b7kycILw,50904
77
77
  odoo/addons/shopfloor/services/menu.py,sha256=m1eNOReTda_xD-p-m8k2Pn5cJQOLWTiaBGW46zxsYsk,2354
78
78
  odoo/addons/shopfloor/services/picking_batch.py,sha256=w51R5HHkQxCHle72k28VetXKfIRRh5GTaEXv6mhikvQ,4649
79
79
  odoo/addons/shopfloor/services/service.py,sha256=oTYAPM3zwm5gWgEJyBsbQlq0AODPq9T8LPwt39NTUBw,6438
@@ -82,14 +82,14 @@ odoo/addons/shopfloor/services/zone_picking.py,sha256=BI25T234hcjlgGDIMjsO6PfDUK
82
82
  odoo/addons/shopfloor/services/forms/__init__.py,sha256=nxwJdKX47hb56ERf4Qb3UE5dkdsHCbkaXMAXs4XMAd8,27
83
83
  odoo/addons/shopfloor/services/forms/picking_form.py,sha256=pX1hbALlCqTVG3m1HYY5xtgbTcSHVnpaGaqm3akBS-U,2718
84
84
  odoo/addons/shopfloor/static/description/icon.png,sha256=6xBPJauaFOF0KDHfHgQopSc28kKvxMaeoQFQWZtfZDo,9455
85
- odoo/addons/shopfloor/static/description/index.html,sha256=VcVJce6blHWG92LiUbysuNWZtN35msLaLqA_BSAetO8,18540
86
- odoo/addons/shopfloor/tests/__init__.py,sha256=1L6fBScnX0sYhGhRfdrJAgc0BVT2bzO_43WJ8aiIhIU,3986
85
+ odoo/addons/shopfloor/static/description/index.html,sha256=87Fyh82wk3jdBRLWhCaXXj1FtyfPQscHHyXEX47BWrw,18540
86
+ odoo/addons/shopfloor/tests/__init__.py,sha256=OV8MGZwrL3VieTRFhVrTFdCm-ozoFfMQtX81EhXNQmg,3967
87
87
  odoo/addons/shopfloor/tests/common.py,sha256=lFdSQRXBjwCr7StVJltEwLtA_a4V77JcBcKkGAnAL5M,11676
88
88
  odoo/addons/shopfloor/tests/models.py,sha256=PWNPC6DgFMbrarojSxUqwycnBdePX-4Q5Z0rn1WwQqY,940
89
89
  odoo/addons/shopfloor/tests/test_actions_change_package_lot.py,sha256=bUn-FXPWY-eo4kaS0S7jU4ge_xl1A9jfU_rNZQT8ZPs,47528
90
- odoo/addons/shopfloor/tests/test_actions_data.py,sha256=9zrUKDU7e5Z5HfbTBVYhiEd63wi-TuXuuKWeba7L8Y8,16397
90
+ odoo/addons/shopfloor/tests/test_actions_data.py,sha256=EEQUl-rBT9_bHVcLt20GpV0c1K1CrToKnWgLxYZ_IMc,16567
91
91
  odoo/addons/shopfloor/tests/test_actions_data_base.py,sha256=dEMThGgJdks9oZMkPXySSchS-gETAAPER1WOv194J7E,10607
92
- odoo/addons/shopfloor/tests/test_actions_data_detail.py,sha256=ywqEnZDp1Z6SJqEh-yEGFINwyHwabRHwQGokTf3kMlk,14114
92
+ odoo/addons/shopfloor/tests/test_actions_data_detail.py,sha256=nbvRscyQXCTORm8FHv1Nkc9jIjF_3HyZllf7CNKiDXc,14130
93
93
  odoo/addons/shopfloor/tests/test_actions_packaging.py,sha256=viofwEFk4aqn2tNaQGz2gGvBH6XoY25c6fO0a0uU448,1616
94
94
  odoo/addons/shopfloor/tests/test_actions_search.py,sha256=UOBemh1RxDabMhyIRQZfRM7-YlBF4kJIvsilyYsh03A,9232
95
95
  odoo/addons/shopfloor/tests/test_actions_search_move_line.py,sha256=ys7Y0mGdg3LNs8l1x8WCx8I_Qb9xsU9XAXOGPKuWv48,5783
@@ -139,15 +139,15 @@ odoo/addons/shopfloor/tests/test_delivery_select.py,sha256=eMwTik3yQIfh7bci8B-jr
139
139
  odoo/addons/shopfloor/tests/test_delivery_set_qty_done_line.py,sha256=00QUJHMXL5p4SrDsA67AMR88PkGS5Ai_LHDvmLtxPNM,3473
140
140
  odoo/addons/shopfloor/tests/test_delivery_set_qty_done_pack.py,sha256=Q0YQlrhQtfEHU-JG2zfdTNNg_PxeHdRU5W87g4PKwXU,5367
141
141
  odoo/addons/shopfloor/tests/test_delivery_sublocation.py,sha256=UsjtvjRNU1qNTuXpcZyAcBhFHZcj-0IoviIl4a7D1_4,6301
142
- odoo/addons/shopfloor/tests/test_location_content_transfer_base.py,sha256=hIn52m-WaxTIbYdbklggQ6tFN_Emicn9wSQrL0IEdnA,6831
143
- odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py,sha256=9Jkq_aVMPgbNlRlcvgeDV2Ay-YBhMGzdtUqlQrnSuMg,6520
144
- odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py,sha256=Q-57TQVDEDAH-dhn99Vrqt80osaYYEa7m4vw6b86Nrw,23966
142
+ odoo/addons/shopfloor/tests/test_location_content_transfer_base.py,sha256=WGTsRSI3spcuiWYNGQldMev8JPfiI_zUHYNtq_9iZXo,6743
143
+ odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py,sha256=f1eaC0ksEJlF8X_7QUyIRmjo4qdmMWW28yw9vD-pE7E,6517
144
+ odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py,sha256=qCQDaPUsfUR0xHSgkG1jdVL8xGVzAdwkyOoiMb_H_4g,25118
145
145
  odoo/addons/shopfloor/tests/test_location_content_transfer_putaway.py,sha256=rcnv0Y_J1rr9YuCnnnNzS68lOp5tYn9Xx8_Kb1L6AWM,5847
146
146
  odoo/addons/shopfloor/tests/test_location_content_transfer_scan_location.py,sha256=XvEmMW8e2fMFQ_8iHKbrxm-vFVcBMRYtof7opuVQ6E8,1519
147
- odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_all.py,sha256=cMiwpGMzsITHE0HYQLqzqtTX5_i8p5sPRG39H56Xj1Q,14276
148
- odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_package_or_line.py,sha256=T7goo8lrVySH6nLZup1q2kv6DgGd1JucN9opME2eRdA,44480
149
- odoo/addons/shopfloor/tests/test_location_content_transfer_single.py,sha256=a_w8ZuusdOnl94l4s5xo8CIVWmy8tMelCPGfT-WO8mk,33361
150
- odoo/addons/shopfloor/tests/test_location_content_transfer_start.py,sha256=AuDBOVwSrPIoqGTta7GaZ3clACTvFia4MEwmxbg2H6M,15403
147
+ odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_all.py,sha256=Oueib2KS6nxd3EBuKUblgAfxHJZzG60iDTc-xEZyLmA,14702
148
+ odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_package_or_line.py,sha256=pEn2g10exW9FrpA07-4SY8sRX4r6a553H_9fguhQpdg,44524
149
+ odoo/addons/shopfloor/tests/test_location_content_transfer_single.py,sha256=8aGvmeQzrB9ZILI0O_DthGMyZAwOfpFCDBbEk1suDHA,33170
150
+ odoo/addons/shopfloor/tests/test_location_content_transfer_start.py,sha256=ezrPvwCRqg3_0wozTiGBsQYsBITfDpLBWvqDXJNHHjw,15427
151
151
  odoo/addons/shopfloor/tests/test_menu_base.py,sha256=TvLLAyW2POt42UAYn7qmusfPSVRTVI3Ojex5Pz39sDs,9205
152
152
  odoo/addons/shopfloor/tests/test_menu_contrains.py,sha256=kdnKgPXyRgsHW96_Q_70JCySwvZYskMX9o1xQ6-DrC4,1324
153
153
  odoo/addons/shopfloor/tests/test_menu_counters.py,sha256=RkfZYMjS8fQSz0QMsLB8nkciY7X6JN2KoL3MS93S2PI,6328
@@ -184,7 +184,7 @@ odoo/addons/shopfloor/views/shopfloor_menu.xml,sha256=ffKWocGBGvE-hpaLMytpAm2FiQ
184
184
  odoo/addons/shopfloor/views/stock_location.xml,sha256=d7iqbOQZbb5YPSdAXlQ6spcj8dUvQ37DpEGuaLX5B1M,829
185
185
  odoo/addons/shopfloor/views/stock_move_line.xml,sha256=AmIO95-G0AD5i5C3x_BQL_NARXvyCfe4mg9iM97wD1U,1996
186
186
  odoo/addons/shopfloor/views/stock_picking_type.xml,sha256=M3U8xijiL6ZJUx2IiYelIYECsCRtOCU1J6lwlWzx3Jo,778
187
- odoo_addon_shopfloor-18.0.0.6.0.2.dist-info/METADATA,sha256=e-PvTDP7PN74LCVCJJJnxtxuNrdXsaXQVRvrVXNzCio,7582
188
- odoo_addon_shopfloor-18.0.0.6.0.2.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
189
- odoo_addon_shopfloor-18.0.0.6.0.2.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
190
- odoo_addon_shopfloor-18.0.0.6.0.2.dist-info/RECORD,,
187
+ odoo_addon_shopfloor-18.0.0.7.0.dist-info/METADATA,sha256=g1PLrOz1bKIvNoElCyDS7OMYF66rX9WuXDGNfCMSjOA,7580
188
+ odoo_addon_shopfloor-18.0.0.7.0.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
189
+ odoo_addon_shopfloor-18.0.0.7.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
190
+ odoo_addon_shopfloor-18.0.0.7.0.dist-info/RECORD,,