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.
- odoo/addons/shopfloor/README.rst +1 -1
- odoo/addons/shopfloor/__manifest__.py +1 -1
- odoo/addons/shopfloor/services/location_content_transfer.py +32 -13
- odoo/addons/shopfloor/static/description/index.html +1 -1
- odoo/addons/shopfloor/tests/__init__.py +9 -10
- odoo/addons/shopfloor/tests/test_actions_data.py +4 -1
- odoo/addons/shopfloor/tests/test_actions_data_detail.py +3 -3
- odoo/addons/shopfloor/tests/test_location_content_transfer_base.py +2 -3
- odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py +1 -1
- odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py +40 -14
- odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_all.py +22 -4
- odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_package_or_line.py +32 -32
- odoo/addons/shopfloor/tests/test_location_content_transfer_single.py +2 -6
- odoo/addons/shopfloor/tests/test_location_content_transfer_start.py +11 -11
- {odoo_addon_shopfloor-18.0.0.6.0.2.dist-info → odoo_addon_shopfloor-18.0.0.7.0.dist-info}/METADATA +2 -2
- {odoo_addon_shopfloor-18.0.0.6.0.2.dist-info → odoo_addon_shopfloor-18.0.0.7.0.dist-info}/RECORD +18 -18
- {odoo_addon_shopfloor-18.0.0.6.0.2.dist-info → odoo_addon_shopfloor-18.0.0.7.0.dist-info}/WHEEL +0 -0
- {odoo_addon_shopfloor-18.0.0.6.0.2.dist-info → odoo_addon_shopfloor-18.0.0.7.0.dist-info}/top_level.txt +0 -0
odoo/addons/shopfloor/README.rst
CHANGED
@@ -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:
|
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.
|
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.
|
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
|
-
("
|
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.
|
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.
|
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.
|
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
|
862
|
-
|
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
|
916
|
-
|
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:
|
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&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
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
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":
|
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.
|
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":
|
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":
|
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
|
-
*
|
92
|
+
* all reserved qty are picked
|
93
93
|
|
94
94
|
"""
|
95
95
|
pickings.user_id = cls.env.uid
|
96
|
-
|
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.
|
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": "
|
83
|
+
"state": "waiting",
|
84
84
|
}
|
85
85
|
)
|
86
|
-
cls.
|
87
|
-
|
88
|
-
|
89
|
-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|
-
{
|
51
|
-
|
52
|
-
|
53
|
-
|
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()
|
odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_package_or_line.py
CHANGED
@@ -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.
|
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,
|
469
|
-
self.assertEqual(move_line_c.
|
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.
|
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,
|
508
|
-
self.assertEqual(remaining_move_line_c.
|
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,
|
540
|
-
self.assertEqual(move_line_d.
|
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,
|
572
|
-
self.assertEqual(move_line.quantity,
|
573
|
-
self.assertEqual(move_line.
|
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,
|
616
|
-
self.assertEqual(move_line.quantity,
|
617
|
-
self.assertEqual(move_line.
|
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,
|
643
|
-
self.assertEqual(move_line.quantity,
|
644
|
-
self.assertEqual(move_line.
|
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,
|
788
|
-
self.assertEqual(move_line.
|
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.
|
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.
|
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.
|
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,
|
921
|
-
self.assertEqual(move_line_c.
|
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.
|
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, "
|
946
|
+
line2 = line1.copy({"quantity": 4, "qty_picked": 4})
|
947
947
|
line1.with_context(bypass_reservation_update=True).quantity = 6
|
948
|
-
line1.
|
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.
|
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,
|
977
|
-
self.assertEqual(move_line.
|
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.
|
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.
|
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.
|
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.
|
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
|
-
{"
|
118
|
-
{"
|
119
|
-
{"
|
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
|
-
{"
|
146
|
-
{"
|
147
|
-
{"
|
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
|
-
[{"
|
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
|
-
"
|
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
|
-
"
|
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].
|
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].
|
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
|
)
|
{odoo_addon_shopfloor-18.0.0.6.0.2.dist-info → odoo_addon_shopfloor-18.0.0.7.0.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: odoo-addon-shopfloor
|
3
|
-
Version: 18.0.0.
|
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:
|
45
|
+
!! source digest: sha256:ca49f8a6cee2bf4a565b75f59d5df7e7cb1ae0085216eb934d53dbb2442de969
|
46
46
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
47
47
|
|
48
48
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
{odoo_addon_shopfloor-18.0.0.6.0.2.dist-info → odoo_addon_shopfloor-18.0.0.7.0.dist-info}/RECORD
RENAMED
@@ -1,6 +1,6 @@
|
|
1
|
-
odoo/addons/shopfloor/README.rst,sha256=
|
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=
|
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=
|
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=
|
86
|
-
odoo/addons/shopfloor/tests/__init__.py,sha256=
|
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=
|
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=
|
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=
|
143
|
-
odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py,sha256=
|
144
|
-
odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py,sha256=
|
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=
|
148
|
-
odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_package_or_line.py,sha256=
|
149
|
-
odoo/addons/shopfloor/tests/test_location_content_transfer_single.py,sha256=
|
150
|
-
odoo/addons/shopfloor/tests/test_location_content_transfer_start.py,sha256=
|
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.
|
188
|
-
odoo_addon_shopfloor-18.0.0.
|
189
|
-
odoo_addon_shopfloor-18.0.0.
|
190
|
-
odoo_addon_shopfloor-18.0.0.
|
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,,
|
{odoo_addon_shopfloor-18.0.0.6.0.2.dist-info → odoo_addon_shopfloor-18.0.0.7.0.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|