odoo-addon-shopfloor 18.0.0.1.2__py3-none-any.whl → 18.0.0.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.
Files changed (46) hide show
  1. odoo/addons/shopfloor/README.rst +1 -1
  2. odoo/addons/shopfloor/__manifest__.py +1 -1
  3. odoo/addons/shopfloor/actions/message.py +3 -3
  4. odoo/addons/shopfloor/models/stock_move_line.py +3 -3
  5. odoo/addons/shopfloor/models/stock_picking.py +2 -5
  6. odoo/addons/shopfloor/services/checkout.py +64 -54
  7. odoo/addons/shopfloor/services/cluster_picking.py +3 -2
  8. odoo/addons/shopfloor/services/delivery.py +14 -15
  9. odoo/addons/shopfloor/services/zone_picking.py +12 -9
  10. odoo/addons/shopfloor/static/description/index.html +1 -1
  11. odoo/addons/shopfloor/tests/__init__.py +50 -48
  12. odoo/addons/shopfloor/tests/common.py +3 -1
  13. odoo/addons/shopfloor/tests/test_checkout_auto_post.py +9 -8
  14. odoo/addons/shopfloor/tests/test_checkout_base.py +1 -1
  15. odoo/addons/shopfloor/tests/test_checkout_cancel_line.py +12 -8
  16. odoo/addons/shopfloor/tests/test_checkout_done.py +5 -5
  17. odoo/addons/shopfloor/tests/test_checkout_list_delivery_packaging.py +0 -2
  18. odoo/addons/shopfloor/tests/test_checkout_list_package.py +19 -12
  19. odoo/addons/shopfloor/tests/test_checkout_new_package.py +7 -7
  20. odoo/addons/shopfloor/tests/test_checkout_no_package.py +6 -6
  21. odoo/addons/shopfloor/tests/test_checkout_scan.py +1 -1
  22. odoo/addons/shopfloor/tests/test_checkout_scan_dest_location.py +2 -2
  23. odoo/addons/shopfloor/tests/test_checkout_scan_line.py +3 -1
  24. odoo/addons/shopfloor/tests/test_checkout_scan_package_action.py +14 -14
  25. odoo/addons/shopfloor/tests/test_checkout_scan_package_action_no_prefill_qty.py +9 -9
  26. odoo/addons/shopfloor/tests/test_checkout_select_line.py +1 -1
  27. odoo/addons/shopfloor/tests/test_checkout_select_package_base.py +6 -4
  28. odoo/addons/shopfloor/tests/test_checkout_set_qty.py +12 -11
  29. odoo/addons/shopfloor/tests/test_checkout_summary.py +2 -2
  30. odoo/addons/shopfloor/tests/test_delivery_base.py +3 -3
  31. odoo/addons/shopfloor/tests/test_delivery_done.py +1 -2
  32. odoo/addons/shopfloor/tests/test_delivery_reset_qty_done_line.py +2 -2
  33. odoo/addons/shopfloor/tests/test_delivery_reset_qty_done_pack.py +2 -2
  34. odoo/addons/shopfloor/tests/test_delivery_scan_deliver.py +11 -11
  35. odoo/addons/shopfloor/tests/test_delivery_set_qty_done_line.py +1 -1
  36. odoo/addons/shopfloor/tests/test_delivery_set_qty_done_pack.py +1 -1
  37. odoo/addons/shopfloor/tests/test_zone_picking_select_line.py +5 -2
  38. odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination.py +7 -6
  39. odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_pick_pack.py +4 -3
  40. odoo/addons/shopfloor/tests/test_zone_picking_unload_all.py +2 -2
  41. odoo/addons/shopfloor/tests/test_zone_picking_unload_single.py +1 -1
  42. {odoo_addon_shopfloor-18.0.0.1.2.dist-info → odoo_addon_shopfloor-18.0.0.3.0.dist-info}/METADATA +2 -2
  43. {odoo_addon_shopfloor-18.0.0.1.2.dist-info → odoo_addon_shopfloor-18.0.0.3.0.dist-info}/RECORD +45 -46
  44. {odoo_addon_shopfloor-18.0.0.1.2.dist-info → odoo_addon_shopfloor-18.0.0.3.0.dist-info}/WHEEL +1 -1
  45. odoo/addons/shopfloor/tests/test_zone_picking_select_line_first_scan_location.py.bak +0 -202
  46. {odoo_addon_shopfloor-18.0.0.1.2.dist-info → odoo_addon_shopfloor-18.0.0.3.0.dist-info}/top_level.txt +0 -0
@@ -109,7 +109,7 @@ class CheckoutSelectLineCase(CheckoutCommonCase, CheckoutSelectPackageMixin):
109
109
  def test_select_line_all_lines_done(self):
110
110
  # set all lines as done
111
111
  self.picking.move_line_ids.write(
112
- {"qty_done": 10.0, "shopfloor_checkout_done": True}
112
+ {"qty_picked": 10.0, "shopfloor_checkout_done": True}
113
113
  )
114
114
  response = self.service.dispatch(
115
115
  "select_line",
@@ -42,9 +42,11 @@ class CheckoutSelectPackageMixin:
42
42
  sorted(selected_lines.ids), sorted([line.id for line in lines_quantities])
43
43
  )
44
44
  for line, quantity in lines_quantities.items():
45
- self.assertEqual(line.qty_done, quantity)
45
+ self.assertEqual(line.qty_picked, quantity)
46
46
  for line in deselected_lines:
47
- self.assertEqual(line.qty_done, 0, "Lines deselected must have no qty done")
47
+ self.assertEqual(
48
+ line.qty_picked, 0, "Lines deselected must have no qty done"
49
+ )
48
50
  self._assert_selected_response(
49
51
  response, selected_lines, message=message, packing_info=packing_info
50
52
  )
@@ -57,11 +59,11 @@ class CheckoutSelectPackageMixin:
57
59
  unselected_lines = picking.move_line_ids - selected_lines
58
60
  for line in selected_lines - related_lines:
59
61
  self.assertEqual(
60
- line.qty_done,
62
+ line.qty_picked,
61
63
  line.quantity,
62
64
  "Scanned lines must have their qty done set to the reserved quantity",
63
65
  )
64
66
  for line in unselected_lines + related_lines:
65
- self.assertEqual(line.qty_done, 0)
67
+ self.assertEqual(line.qty_picked, 0)
66
68
  package_lines = selected_lines + related_lines
67
69
  self._assert_selected_response(response, package_lines, message=message, **kw)
@@ -24,15 +24,15 @@ class CheckoutSetQtyCommonCase(CheckoutCommonCase, CheckoutSelectPackageMixin):
24
24
  def setUp(self):
25
25
  super().setUp()
26
26
  # we assume we have called /select_line on pack one, so by default, we
27
- # expect the lines for product a and b to have their qty_done set to
27
+ # expect the lines for product a and b to have their picked qty set to
28
28
  # their reserved quantity at the start of the tests
29
29
  self.selected_lines = self.moves_pack1.move_line_ids
30
30
  self.deselected_lines = self.moves_pack2.move_line_ids
31
31
  self.service._select_lines(self.selected_lines)
32
32
  self.assertTrue(
33
- all(line.qty_done == line.quantity for line in self.selected_lines)
33
+ all(line.qty_picked == line.quantity for line in self.selected_lines)
34
34
  )
35
- self.assertTrue(all(line.qty_done == 0 for line in self.deselected_lines))
35
+ self.assertTrue(all(not line.picked for line in self.deselected_lines))
36
36
 
37
37
 
38
38
  class CheckoutResetLineQtyCase(CheckoutSetQtyCommonCase):
@@ -83,7 +83,7 @@ class CheckoutSetLineQtyCase(CheckoutSetQtyCommonCase):
83
83
  def test_set_line_qty_ok(self):
84
84
  selected_lines = self.moves_pack1.move_line_ids
85
85
  # do as if the user removed the qties of the 2 selected lines
86
- selected_lines.qty_done = 0
86
+ selected_lines.qty_picked = 0
87
87
  line_to_set = selected_lines[0]
88
88
  line_no_qty = selected_lines[1]
89
89
  # we want to check that when we give the package id, we get
@@ -96,8 +96,9 @@ class CheckoutSetLineQtyCase(CheckoutSetQtyCommonCase):
96
96
  "move_line_id": line_to_set.id,
97
97
  },
98
98
  )
99
- self.assertEqual(line_to_set.qty_done, line_to_set.quantity)
100
- self.assertEqual(line_no_qty.qty_done, 0)
99
+ self.assertEqual(line_to_set.qty_picked, line_to_set.quantity)
100
+ self.assertEqual(line_no_qty.qty_picked, 0)
101
+ self.assertFalse(line_no_qty.picked)
101
102
  self._assert_selected_qties(
102
103
  response,
103
104
  selected_lines,
@@ -145,8 +146,8 @@ class CheckoutSetCustomQtyCase(CheckoutSetQtyCommonCase):
145
146
  "qty_done": new_qty,
146
147
  },
147
148
  )
148
- self.assertEqual(line_to_change.qty_done, new_qty)
149
- self.assertEqual(line_keep_qty.qty_done, line_keep_qty.quantity)
149
+ self.assertEqual(line_to_change.qty_picked, new_qty)
150
+ self.assertEqual(line_keep_qty.qty_picked, line_keep_qty.quantity)
150
151
  self._assert_selected_qties(
151
152
  response,
152
153
  selected_lines,
@@ -180,7 +181,7 @@ class CheckoutSetCustomQtyCase(CheckoutSetQtyCommonCase):
180
181
  selected_lines = self.moves_pack1.move_line_ids
181
182
  line1 = selected_lines[0]
182
183
  # modify so we can check that a too high quantity set the max
183
- line1.qty_done = 1
184
+ line1.qty_picked = 1
184
185
  line2 = selected_lines[1]
185
186
  response = self.service.dispatch(
186
187
  "set_custom_qty",
@@ -240,8 +241,8 @@ class CheckoutSetCustomQtyCase(CheckoutSetQtyCommonCase):
240
241
  "qty_done": new_qty,
241
242
  },
242
243
  )
243
- self.assertEqual(line_to_change.qty_done, new_qty)
244
- self.assertEqual(line_keep_qty.qty_done, line_keep_qty.quantity)
244
+ self.assertEqual(line_to_change.qty_picked, new_qty)
245
+ self.assertEqual(line_keep_qty.qty_picked, line_keep_qty.quantity)
245
246
  new_lines = [
246
247
  x for x in self.moves_pack1.move_line_ids if x not in selected_lines
247
248
  ]
@@ -35,7 +35,7 @@ class CheckoutSummaryCase(CheckoutCommonCase):
35
35
  self.picking.action_assign()
36
36
  # satisfy only few lines
37
37
  for ml in self.picking.move_line_ids[:2]:
38
- ml.qty_done = ml.quantity
38
+ ml.picked = True
39
39
  ml.shopfloor_checkout_done = True
40
40
  response = self.service.dispatch(
41
41
  "summary", params={"picking_id": self.picking.id}
@@ -54,7 +54,7 @@ class CheckoutSummaryCase(CheckoutCommonCase):
54
54
  self.picking.action_assign()
55
55
  # satisfy only all lines
56
56
  for ml in self.picking.move_line_ids:
57
- ml.qty_done = ml.quantity
57
+ ml.picked = True
58
58
  ml.shopfloor_checkout_done = True
59
59
  response = self.service.dispatch(
60
60
  "summary", params={"picking_id": self.picking.id}
@@ -129,7 +129,7 @@ class DeliveryCommonCase(CommonCase):
129
129
  message=message,
130
130
  )
131
131
 
132
- def assert_qty_done(self, move_lines, qties=None):
132
+ def assert_qty_picked(self, move_lines, qties=None):
133
133
  """Ensure that the quantities done are the expected ones.
134
134
 
135
135
  If `qties` is not defined, the expected qties are `product_uom_qty`
@@ -140,9 +140,9 @@ class DeliveryCommonCase(CommonCase):
140
140
  assert len(move_lines) == len(qties), "'qties' doesn't match 'move_lines'"
141
141
  expected_qties = []
142
142
  for qty in qties:
143
- expected_qties.append({"qty_done": qty})
143
+ expected_qties.append({"qty_picked": qty})
144
144
  else:
145
- expected_qties = [{"qty_done": line.quantity} for line in move_lines]
145
+ expected_qties = [{"qty_picked": line.quantity} for line in move_lines]
146
146
  self.assertRecordValues(move_lines, expected_qties)
147
147
  package_level = move_lines.package_level_id
148
148
  if package_level:
@@ -44,8 +44,7 @@ class DeliveryDoneCase(DeliveryCommonCase):
44
44
  def test_done_all_qty_done(self):
45
45
  # Do not use the /set_qty_done_line endpoint to set done qties to not
46
46
  # update the picking to 'done' state automatically
47
- for move_line in self.picking.move_line_ids:
48
- move_line.qty_done = move_line.quantity
47
+ self.picking.move_line_ids.picked = True
49
48
  response = self.service.dispatch("done", params={"picking_id": self.picking.id})
50
49
  self.assert_response_deliver(
51
50
  response,
@@ -72,14 +72,14 @@ class DeliveryResetQtyDoneLineCase(DeliveryCommonCase):
72
72
  "set_qty_done_line",
73
73
  params={"move_line_id": move_line.id, "picking_id": self.picking.id},
74
74
  )
75
- self.assertTrue(move_line.qty_done == move_line.quantity)
75
+ self.assertTrue(move_line.qty_picked == move_line.quantity)
76
76
  # Reset it, no related move lines are "done"
77
77
  response = self.service.dispatch(
78
78
  "reset_qty_done_line",
79
79
  params={"move_line_id": move_line.id, "picking_id": self.picking.id},
80
80
  )
81
81
  self.assert_response_deliver(response, picking=self.picking)
82
- self.assertFalse(move_line.qty_done)
82
+ self.assertFalse(move_line.qty_picked)
83
83
 
84
84
  def test_reset_qty_done_line_with_package(self):
85
85
  move_line = self.pack1_moves[0].mapped("move_line_ids")
@@ -73,14 +73,14 @@ class DeliveryResetQtyDonePackCase(DeliveryCommonCase):
73
73
  "set_qty_done_pack",
74
74
  params={"package_id": package.id, "picking_id": self.picking.id},
75
75
  )
76
- self.assertTrue(all(ml.qty_done == ml.quantity for ml in move_lines))
76
+ self.assertTrue(all(ml.qty_picked == ml.quantity for ml in move_lines))
77
77
  # Reset it, no related move lines are "done"
78
78
  response = self.service.dispatch(
79
79
  "reset_qty_done_pack",
80
80
  params={"package_id": package.id, "picking_id": self.picking.id},
81
81
  )
82
82
  self.assert_response_deliver(response, picking=self.picking)
83
- self.assertFalse(any(ml.qty_done > 0 for ml in move_lines))
83
+ self.assertFalse(any(ml.picked for ml in move_lines))
84
84
 
85
85
  def test_reset_qty_done_pack_picking_status(self):
86
86
  package1 = self.pack1_moves.mapped("move_line_ids").mapped("package_id")
@@ -139,7 +139,7 @@ class DeliveryScanDeliverCase(DeliveryCommonCase):
139
139
 
140
140
  def _test_scan_set_done_ok(self, move_lines, barcode, qties=None):
141
141
  response = self.service.dispatch("scan_deliver", params={"barcode": barcode})
142
- self.assert_qty_done(move_lines, qties)
142
+ self.assert_qty_picked(move_lines, qties)
143
143
  picking = move_lines.move_id.picking_id
144
144
  if picking.state == "done":
145
145
  self.assert_response_deliver(
@@ -189,7 +189,7 @@ class DeliveryScanDeliverCase(DeliveryCommonCase):
189
189
 
190
190
  def test_scan_deliver_scan_product_not_in_package(self):
191
191
  """Check scanning product increment quantity done by one."""
192
- for qty_done in range(1, 3):
192
+ for qty_picked in range(1, 3):
193
193
  response = self.service.dispatch(
194
194
  "scan_deliver",
195
195
  params={
@@ -197,7 +197,7 @@ class DeliveryScanDeliverCase(DeliveryCommonCase):
197
197
  "picking_id": self.picking.id,
198
198
  },
199
199
  )
200
- self.assertEqual(self.raw_move.move_line_ids.qty_done, qty_done)
200
+ self.assertEqual(self.raw_move.move_line_ids.qty_picked, qty_picked)
201
201
 
202
202
  self.assert_response_deliver(
203
203
  response,
@@ -306,7 +306,7 @@ class DeliveryScanDeliverCase(DeliveryCommonCase):
306
306
  response,
307
307
  picking=self.picking,
308
308
  )
309
- self.assertEqual(line.qty_done, 1)
309
+ self.assertEqual(line.qty_picked, 1)
310
310
  self.assertEqual(line.state, "assigned")
311
311
  for _ in range(int(line.quantity) - 1):
312
312
  self.service.dispatch(
@@ -316,7 +316,7 @@ class DeliveryScanDeliverCase(DeliveryCommonCase):
316
316
  "picking_id": self.picking.id,
317
317
  },
318
318
  )
319
- self.assertEqual(line.qty_done, self.raw_lot_move.product_uom_qty)
319
+ self.assertEqual(line.qty_picked, self.raw_lot_move.product_uom_qty)
320
320
 
321
321
  def test_scan_deliver_scan_lot_with_prepackaged_product(self):
322
322
  """Check scanning a lot process only one piece/unit of this lot.
@@ -330,7 +330,7 @@ class DeliveryScanDeliverCase(DeliveryCommonCase):
330
330
  self.assert_response_deliver(
331
331
  response, message=self.service.msg_store.transfer_complete(self.picking)
332
332
  )
333
- self.assertEqual(line.qty_done, 1)
333
+ self.assertEqual(line.qty_picked, 1)
334
334
  self.assertEqual(line.move_id.state, "done")
335
335
  self.assertEqual(self.picking.state, "done")
336
336
  self.assertTrue(self.picking.backorder_ids)
@@ -364,7 +364,7 @@ class DeliveryScanDeliverCase(DeliveryCommonCase):
364
364
  "scan_deliver", params={"barcode": self.packaging.barcode}
365
365
  )
366
366
  self.assert_response_deliver(response, picking=self.picking)
367
- self.assertEqual(line.qty_done, self.packaging.qty)
367
+ self.assertEqual(line.qty_picked, self.packaging.qty)
368
368
 
369
369
  def test_scan_deliver_scan_product_packaging_with_prepackaged_product(self):
370
370
  """Check scanning a product packaging use the packaging quantity.
@@ -383,7 +383,7 @@ class DeliveryScanDeliverCase(DeliveryCommonCase):
383
383
  self.assert_response_deliver(
384
384
  response, message=self.service.msg_store.transfer_complete(self.picking)
385
385
  )
386
- self.assertEqual(line.qty_done, self.packaging.qty)
386
+ self.assertEqual(line.qty_picked, self.packaging.qty)
387
387
 
388
388
  def test_scan_deliver_scan_product_packaging_partial_qty(self):
389
389
  # Scan a product packaging with a smaller qty than the move line
@@ -398,7 +398,7 @@ class DeliveryScanDeliverCase(DeliveryCommonCase):
398
398
  "scan_deliver", params={"barcode": self.packaging.barcode}
399
399
  )
400
400
  self.assert_response_deliver(response, picking=self.picking)
401
- self.assertEqual(line.qty_done, self.packaging.qty)
401
+ self.assertEqual(line.qty_picked, self.packaging.qty)
402
402
  self.assertTrue(line.move_id.product_qty > self.packaging.qty)
403
403
  # Process the remaining qties, still by scanning the packaging
404
404
  response = self.service.dispatch(
@@ -428,7 +428,7 @@ class DeliveryScanDeliverCase(DeliveryCommonCase):
428
428
  response,
429
429
  message=self.service.msg_store.transfer_complete(self.picking),
430
430
  )
431
- self.assertEqual(line.qty_done, self.packaging.qty)
431
+ self.assertEqual(line.qty_picked, self.packaging.qty)
432
432
  self.assertEqual(line.move_id.product_qty, self.packaging.qty)
433
433
  self.assertEqual(line.move_id.state, "done")
434
434
  self.assertTrue(self.picking.backorder_ids)
@@ -688,7 +688,7 @@ class DeliveryScanDeliverSpecialCase(DeliveryCommonCase):
688
688
  picking = self._create_picking(lines=[(self.product_a, 10)])
689
689
  self._fill_stock_for_moves(picking.move_ids, in_package=True)
690
690
  picking.action_assign()
691
- picking.move_line_ids.qty_done = picking.move_line_ids.quantity
691
+ picking.move_line_ids.picked = True
692
692
  picking._action_done()
693
693
  response = self.service.dispatch(
694
694
  "scan_deliver", params={"barcode": picking.name}
@@ -31,7 +31,7 @@ class DeliverySetQtyDoneLineCase(DeliveryCommonCase):
31
31
  "set_qty_done_line",
32
32
  params={"move_line_id": move_line.id, "picking_id": self.picking.id},
33
33
  )
34
- self.assert_qty_done(move_line)
34
+ self.assert_qty_picked(move_line)
35
35
  self.assert_response_deliver(response, picking=self.picking)
36
36
 
37
37
  def test_set_qty_done_line_picking_not_found(self):
@@ -44,7 +44,7 @@ class DeliverySetQtyDonePackCase(DeliveryCommonCase):
44
44
  "set_qty_done_pack",
45
45
  params={"package_id": package.id, "picking_id": self.picking.id},
46
46
  )
47
- self.assert_qty_done(move_lines, qties=qties)
47
+ self.assert_qty_picked(move_lines, qties=qties)
48
48
  self.assert_response_deliver(response, picking=self.picking)
49
49
 
50
50
  def test_set_qty_done_pack_picking_not_found(self):
@@ -160,7 +160,7 @@ class ZonePickingSelectLineCase(ZonePickingCommonCase):
160
160
  qty_done=10.0,
161
161
  )
162
162
  # first line done
163
- move_line.qty_done = move_line.quantity
163
+ move_line._pick_qty(move_line.quantity)
164
164
  # get the next one
165
165
  response = self.service.dispatch(
166
166
  "scan_source",
@@ -223,7 +223,10 @@ class ZonePickingSelectLineCase(ZonePickingCommonCase):
223
223
  qty_done=10.0,
224
224
  )
225
225
 
226
- def test_scan_source_barcode_package_not_found(self):
226
+ # FIXME: this case shouldn't be possible anymore
227
+ # because a check on stock.quant.package.write in odoo core
228
+ # prevents to update a location on a package w/o move lines.
229
+ def FIXME_test_scan_source_barcode_package_not_found(self):
227
230
  """Scan source: scanned package has no related move line,
228
231
  next step 'select_line' expected.
229
232
  """
@@ -165,7 +165,7 @@ class ZonePickingSetLineDestinationCase(ZonePickingCommonCase):
165
165
  # Check picking data
166
166
  moves_after = self.picking1.move_ids
167
167
  self.assertEqual(moves_before, moves_after)
168
- self.assertEqual(move_line.qty_done, 10)
168
+ self.assertEqual(move_line.qty_picked, 10)
169
169
  # Check response
170
170
  move_lines = self.service._find_location_move_lines()
171
171
  move_lines = move_lines.sorted(lambda x: x.move_id.priority, reverse=True)
@@ -273,11 +273,12 @@ class ZonePickingSetLineDestinationCase(ZonePickingCommonCase):
273
273
  self.assertEqual(len(move_after), 1)
274
274
  self.assertEqual(move_line.move_id.product_uom_qty, 6)
275
275
  self.assertEqual(move_line.move_id.state, "done")
276
- self.assertEqual(move_line.move_id.move_line_ids.quantity, 0)
276
+ self.assertEqual(move_line.quantity, 6)
277
+ self.assertEqual(move_line.qty_picked, 6)
277
278
  self.assertEqual(move_after.product_uom_qty, 4)
278
279
  self.assertEqual(move_after.state, "assigned")
279
280
  self.assertEqual(move_after.move_line_ids.quantity, 4)
280
- self.assertEqual(move_line.qty_done, 6)
281
+ self.assertEqual(move_after.move_line_ids.qty_picked, 0)
281
282
  self.assertNotEqual(move_line.move_id, other_move_line.move_id)
282
283
  # Check response
283
284
  move_lines = self.service._find_location_move_lines()
@@ -407,7 +408,7 @@ class ZonePickingSetLineDestinationCase(ZonePickingCommonCase):
407
408
  {
408
409
  "result_package_id": self.free_package.id,
409
410
  "quantity": 10,
410
- "qty_done": 10,
411
+ "qty_picked": 10,
411
412
  "shopfloor_user_id": self.env.user.id,
412
413
  },
413
414
  ],
@@ -465,7 +466,7 @@ class ZonePickingSetLineDestinationCase(ZonePickingCommonCase):
465
466
  {
466
467
  "result_package_id": self.free_package.id,
467
468
  "quantity": 6,
468
- "qty_done": 6,
469
+ "qty_picked": 6,
469
470
  "shopfloor_user_id": self.env.user.id,
470
471
  },
471
472
  ],
@@ -476,7 +477,7 @@ class ZonePickingSetLineDestinationCase(ZonePickingCommonCase):
476
477
  {
477
478
  "result_package_id": new_move_line.package_id.id, # Unchanged
478
479
  "quantity": 4,
479
- "qty_done": 0,
480
+ "qty_picked": 0,
480
481
  "shopfloor_user_id": False,
481
482
  },
482
483
  ],
@@ -68,7 +68,7 @@ class ZonePickingSetLineDestinationPickPackCase(ZonePickingCommonCase):
68
68
  move_line = self.picking1.move_line_ids
69
69
  move_line.location_dest_id = self.shelf1
70
70
  quantity_reserved = move_line.quantity
71
- previous_qty_done = move_line.qty_done
71
+ previous_qty_done = move_line.qty_picked
72
72
  # Confirm the destination with the right destination
73
73
  response = self.service.dispatch(
74
74
  "set_destination",
@@ -78,7 +78,7 @@ class ZonePickingSetLineDestinationPickPackCase(ZonePickingCommonCase):
78
78
  "quantity": quantity_reserved,
79
79
  },
80
80
  )
81
- self.assertEqual(move_line.qty_done, previous_qty_done)
81
+ self.assertEqual(move_line.qty_picked, previous_qty_done)
82
82
  self.assert_response_set_line_destination(
83
83
  response,
84
84
  zone_location,
@@ -198,6 +198,7 @@ class ZonePickingSetLineDestinationPickPackCase(ZonePickingCommonCase):
198
198
  {
199
199
  "name": "TEST DEFAULT",
200
200
  "package_type_id": self.carrier.test_default_packaging_id.id,
201
+ "product_id": self.free_product.id,
201
202
  }
202
203
  )
203
204
  )
@@ -220,7 +221,7 @@ class ZonePickingSetLineDestinationPickPackCase(ZonePickingCommonCase):
220
221
  {
221
222
  "result_package_id": self.free_package.id,
222
223
  "quantity": 10,
223
- "qty_done": 10,
224
+ "qty_picked": 10,
224
225
  "shopfloor_user_id": self.env.user.id,
225
226
  },
226
227
  ],
@@ -208,10 +208,10 @@ class ZonePickingUnloadAllCase(ZonePickingCommonCase):
208
208
  # picking validated
209
209
  self.assertEqual(move_line_g.state, "done")
210
210
  self.assertEqual(move_line_g.picking_id.state, "done")
211
- self.assertEqual(move_line_g.qty_done, 6)
211
+ self.assertEqual(move_line_g.qty_picked, 6)
212
212
  self.assertEqual(move_line_h.state, "done")
213
213
  self.assertEqual(move_line_h.picking_id.state, "done")
214
- self.assertEqual(move_line_h.qty_done, 3)
214
+ self.assertEqual(move_line_h.qty_picked, 3)
215
215
  # current picking (backorder)
216
216
  backorder = (move_line_g | move_line_h).picking_id.backorder_id
217
217
  self.assertEqual(backorder, self.picking6)
@@ -44,7 +44,7 @@ class ZonePickingUnloadSingleCase(ZonePickingCommonCase):
44
44
  # wrong package ID, and there is no more move line to unload from the buffer
45
45
  # => get back on 'select_line' screen
46
46
  move_line.write(
47
- {"qty_done": 0, "shopfloor_user_id": False, "result_package_id": False}
47
+ {"qty_picked": 0, "shopfloor_user_id": False, "result_package_id": False}
48
48
  )
49
49
  response = self.service.dispatch(
50
50
  "unload_scan_pack",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-shopfloor
3
- Version: 18.0.0.1.2
3
+ Version: 18.0.0.3.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:01ad1a242b0c8a3b6ab8593cd6dedb31c5b6dd941b58e9af751833dad9cc69f3
45
+ !! source digest: sha256:039c0e1f10bbf63b4fd82fea958772168aea3e98a4fb38955960a74f946bd07d
46
46
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
47
47
 
48
48
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png