odoo-addon-shopfloor 18.0.0.2.0__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.
- odoo/addons/shopfloor/README.rst +1 -1
- odoo/addons/shopfloor/__manifest__.py +1 -1
- odoo/addons/shopfloor/models/stock_move_line.py +1 -1
- odoo/addons/shopfloor/services/zone_picking.py +9 -7
- odoo/addons/shopfloor/static/description/index.html +1 -1
- odoo/addons/shopfloor/tests/__init__.py +18 -17
- odoo/addons/shopfloor/tests/test_zone_picking_select_line.py +5 -2
- odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination.py +7 -6
- odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_pick_pack.py +4 -3
- odoo/addons/shopfloor/tests/test_zone_picking_unload_all.py +2 -2
- odoo/addons/shopfloor/tests/test_zone_picking_unload_single.py +1 -1
- {odoo_addon_shopfloor-18.0.0.2.0.dist-info → odoo_addon_shopfloor-18.0.0.3.0.dist-info}/METADATA +2 -2
- {odoo_addon_shopfloor-18.0.0.2.0.dist-info → odoo_addon_shopfloor-18.0.0.3.0.dist-info}/RECORD +15 -16
- odoo/addons/shopfloor/tests/test_zone_picking_select_line_first_scan_location.py.bak +0 -202
- {odoo_addon_shopfloor-18.0.0.2.0.dist-info → odoo_addon_shopfloor-18.0.0.3.0.dist-info}/WHEEL +0 -0
- {odoo_addon_shopfloor-18.0.0.2.0.dist-info → odoo_addon_shopfloor-18.0.0.3.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:039c0e1f10bbf63b4fd82fea958772168aea3e98a4fb38955960a74f946bd07d
|
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.3.0",
|
10
10
|
"development_status": "Beta",
|
11
11
|
"category": "Inventory",
|
12
12
|
"website": "https://github.com/OCA/stock-logistics-shopfloor",
|
@@ -54,7 +54,7 @@ class StockMoveLine(models.Model):
|
|
54
54
|
# if we didn't bypass reservation update, the quant reservation
|
55
55
|
# would be reduced as much as the deduced quantity, which is wrong
|
56
56
|
# as we only moved the quantity to a new move line
|
57
|
-
self.
|
57
|
+
self.quantity = self.qty_picked
|
58
58
|
return new_line
|
59
59
|
return self.browse()
|
60
60
|
|
@@ -451,7 +451,8 @@ class ZonePicking(Component):
|
|
451
451
|
def _find_buffer_move_lines_domain(self, dest_package=None):
|
452
452
|
domain = [
|
453
453
|
("picking_id.picking_type_id", "in", self.picking_types.ids),
|
454
|
-
("
|
454
|
+
("qty_picked", ">", 0),
|
455
|
+
("picked", "=", True),
|
455
456
|
("state", "not in", ("cancel", "done")),
|
456
457
|
("result_package_id", "!=", False),
|
457
458
|
("shopfloor_user_id", "=", self.env.user.id),
|
@@ -686,6 +687,9 @@ class ZonePicking(Component):
|
|
686
687
|
response_error_func=self._response_for_change_pack_lot,
|
687
688
|
)
|
688
689
|
else:
|
690
|
+
# FIXME: this case shouldn't be possible anymore
|
691
|
+
# because a check on stock.quant.package.write in odoo core
|
692
|
+
# prevents to update a location on a package w/o move lines.
|
689
693
|
response = self._list_move_lines(sublocation or self.zone_location)
|
690
694
|
message = self.msg_store.package_has_no_product_to_take(barcode)
|
691
695
|
return response, message
|
@@ -953,7 +957,7 @@ class ZonePicking(Component):
|
|
953
957
|
for _move_line in package.move_line_ids:
|
954
958
|
if _move_line.state not in ("assigned", "partially_available"):
|
955
959
|
continue
|
956
|
-
_move_line.
|
960
|
+
_move_line.qty_picked = move_line.quantity
|
957
961
|
move_lines |= _move_line
|
958
962
|
self._write_destination_on_lines(move_lines, location)
|
959
963
|
|
@@ -976,8 +980,7 @@ class ZonePicking(Component):
|
|
976
980
|
# Zero check
|
977
981
|
# Only apply zero check if the product is of type "product".
|
978
982
|
zero_check = (
|
979
|
-
move_line.product_id.
|
980
|
-
and self.picking_type.shopfloor_zero_check
|
983
|
+
move_line.product_id.is_storable and self.picking_type.shopfloor_zero_check
|
981
984
|
)
|
982
985
|
if zero_check and move_line.location_id.planned_qty_in_location_is_empty():
|
983
986
|
response = self._response_for_zero_check(move_line)
|
@@ -1059,8 +1062,7 @@ class ZonePicking(Component):
|
|
1059
1062
|
# Zero check
|
1060
1063
|
# Only apply zero check if the product is of type "product".
|
1061
1064
|
zero_check = (
|
1062
|
-
move_line.product_id.
|
1063
|
-
and self.picking_type.shopfloor_zero_check
|
1065
|
+
move_line.product_id.is_storable and self.picking_type.shopfloor_zero_check
|
1064
1066
|
)
|
1065
1067
|
if zero_check and move_line.location_id.planned_qty_in_location_is_empty():
|
1066
1068
|
response = self._response_for_zero_check(move_line)
|
@@ -1350,7 +1352,7 @@ class ZonePicking(Component):
|
|
1350
1352
|
("package_id", "=", package.id),
|
1351
1353
|
("lot_id", "=", lot.id),
|
1352
1354
|
("state", "not in", ("cancel", "done")),
|
1353
|
-
("
|
1355
|
+
("qty_picked", "=", 0),
|
1354
1356
|
]
|
1355
1357
|
return domain
|
1356
1358
|
|
@@ -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:039c0e1f10bbf63b4fd82fea958772168aea3e98a4fb38955960a74f946bd07d
|
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
|
@@ -64,24 +64,25 @@ from . import test_delivery_select
|
|
64
64
|
# from . import test_location_content_transfer_set_destination_package_or_line
|
65
65
|
# from . import test_location_content_transfer_putaway
|
66
66
|
# from . import test_location_content_transfer_mix
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
67
|
+
from . import test_zone_picking_base
|
68
|
+
from . import test_zone_picking_complete_mix_pack_flux
|
69
|
+
from . import test_zone_picking_start
|
70
|
+
from . import test_zone_picking_select_picking_type
|
71
|
+
from . import test_zone_picking_select_line
|
72
|
+
from . import test_zone_picking_select_line_no_prefill_qty
|
73
|
+
from . import test_zone_picking_select_line_first_scan_location
|
74
|
+
from . import test_zone_picking_set_line_destination
|
75
|
+
from . import test_zone_picking_set_line_destination_no_prefill_qty
|
76
|
+
from . import test_zone_picking_set_line_destination_pick_pack
|
77
|
+
from . import test_zone_picking_zero_check
|
78
|
+
from . import test_zone_picking_stock_issue
|
79
|
+
|
79
80
|
# from . import test_zone_picking_change_pack_lot
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
81
|
+
from . import test_zone_picking_unload_buffer_lines
|
82
|
+
from . import test_zone_picking_unload_single
|
83
|
+
from . import test_zone_picking_unload_all
|
84
|
+
from . import test_zone_picking_unload_set_destination
|
85
|
+
from . import test_zone_picking_require_destination_package
|
85
86
|
from . import test_misc
|
86
87
|
from . import test_move_action_assign
|
87
88
|
from . import test_scan_anything
|
@@ -160,7 +160,7 @@ class ZonePickingSelectLineCase(ZonePickingCommonCase):
|
|
160
160
|
qty_done=10.0,
|
161
161
|
)
|
162
162
|
# first line done
|
163
|
-
move_line.
|
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
|
-
|
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.
|
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.
|
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(
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
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.
|
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.
|
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
|
-
"
|
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.
|
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.
|
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
|
-
{"
|
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",
|
{odoo_addon_shopfloor-18.0.0.2.0.dist-info → odoo_addon_shopfloor-18.0.0.3.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.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:
|
45
|
+
!! source digest: sha256:039c0e1f10bbf63b4fd82fea958772168aea3e98a4fb38955960a74f946bd07d
|
46
46
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
47
47
|
|
48
48
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
{odoo_addon_shopfloor-18.0.0.2.0.dist-info → odoo_addon_shopfloor-18.0.0.3.0.dist-info}/RECORD
RENAMED
@@ -1,6 +1,6 @@
|
|
1
|
-
odoo/addons/shopfloor/README.rst,sha256=
|
1
|
+
odoo/addons/shopfloor/README.rst,sha256=m8vIlcHRrF8Fb_jQJsZh8aDsnuUxYI-qQjfMNOriIOI,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=LCkjhRYGu67m9yF2deaYhS1ukqsLuhMlI8iz2Su7Yos,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
|
@@ -55,7 +55,7 @@ odoo/addons/shopfloor/models/shopfloor_app.py,sha256=ZfVahQYm0jzyeH7EtlOOhxYUif9
|
|
55
55
|
odoo/addons/shopfloor/models/shopfloor_menu.py,sha256=aiA8y9bfy0JDgaRr1wwbRXmkleTefui7wksBS2qOYUM,23207
|
56
56
|
odoo/addons/shopfloor/models/stock_location.py,sha256=InkhTmnqYZaXCXIarku-NS1T6BO8EmLxg2zBE0CHeZ8,3092
|
57
57
|
odoo/addons/shopfloor/models/stock_move.py,sha256=FcfRILSZygUvFgTd-AjjW_SoKgUiQtzC-4u_BzK65vw,5671
|
58
|
-
odoo/addons/shopfloor/models/stock_move_line.py,sha256=
|
58
|
+
odoo/addons/shopfloor/models/stock_move_line.py,sha256=YuYcJlTDpKsDnfs19UJynnsQI2gCvu64XlQArxFvKOM,11463
|
59
59
|
odoo/addons/shopfloor/models/stock_package_level.py,sha256=hXq9liDMmMDtWjeuMhhtAv0MjBvANk67-bo_XKkgJ1w,2152
|
60
60
|
odoo/addons/shopfloor/models/stock_picking.py,sha256=RdQ-YSY58LZYGexJ_qsNYB7eVIkgTc29MirIgUBOIjQ,5405
|
61
61
|
odoo/addons/shopfloor/models/stock_picking_batch.py,sha256=OTjeRqFlUeA7vuaGH6q-oy2z_lKPy4HUveSz5FlX1Ws,1466
|
@@ -78,12 +78,12 @@ odoo/addons/shopfloor/services/menu.py,sha256=m1eNOReTda_xD-p-m8k2Pn5cJQOLWTiaBG
|
|
78
78
|
odoo/addons/shopfloor/services/picking_batch.py,sha256=w51R5HHkQxCHle72k28VetXKfIRRh5GTaEXv6mhikvQ,4649
|
79
79
|
odoo/addons/shopfloor/services/service.py,sha256=oTYAPM3zwm5gWgEJyBsbQlq0AODPq9T8LPwt39NTUBw,6438
|
80
80
|
odoo/addons/shopfloor/services/single_pack_transfer.py,sha256=VotQyIH0AMbR0Wk159OMxwF2mERZlHRRXTF9ZLe6z0E,16111
|
81
|
-
odoo/addons/shopfloor/services/zone_picking.py,sha256=
|
81
|
+
odoo/addons/shopfloor/services/zone_picking.py,sha256=EaVJ9zs2GhxSrpHCy9EIY_BCMu4V2O3L5-GTfy6dNYQ,84189
|
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=uxww0m9eFGsRT8DpqfXChmDoQgIRCtumA3V6XILL2fo,18540
|
86
|
+
odoo/addons/shopfloor/tests/__init__.py,sha256=Ku5R_NEJ7xD94G9Hcw4xBmkwyFA9aqcVfpli5PNfkho,4015
|
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
|
@@ -164,27 +164,26 @@ odoo/addons/shopfloor/tests/test_zone_picking_base.py,sha256=I4mw2TP74mwU1lTxKul
|
|
164
164
|
odoo/addons/shopfloor/tests/test_zone_picking_change_pack_lot.py,sha256=9Bg29Zp-vfgnF-P4U1xgXhHWhOWxfQkzzublZU2Ee-A,5414
|
165
165
|
odoo/addons/shopfloor/tests/test_zone_picking_complete_mix_pack_flux.py,sha256=R0xDc9LKVXCjx4KvXqrx0-Axk7PNWJ8aCZvspJG7Jxc,2325
|
166
166
|
odoo/addons/shopfloor/tests/test_zone_picking_require_destination_package.py,sha256=rYXFntqBjGhxWS_kxEBbhP5Lkd1AdTI15wSd6TIyVRA,2248
|
167
|
-
odoo/addons/shopfloor/tests/test_zone_picking_select_line.py,sha256=
|
167
|
+
odoo/addons/shopfloor/tests/test_zone_picking_select_line.py,sha256=W8mVKBK5K8rA3szolkXJMeD7BLb7NxEJ_snnYJWwZJg,30144
|
168
168
|
odoo/addons/shopfloor/tests/test_zone_picking_select_line_first_scan_location.py,sha256=uXDRd70zWRy08SinTULIzTJHEmC9u7FpVqOStuigElc,8464
|
169
|
-
odoo/addons/shopfloor/tests/test_zone_picking_select_line_first_scan_location.py.bak,sha256=-TMgeipU2ROoSuyjLPMEMhK5EijwqJm0qS0xixK6TAE,7937
|
170
169
|
odoo/addons/shopfloor/tests/test_zone_picking_select_line_no_prefill_qty.py,sha256=9pKownGCjuXZDjQP4O3RHePRQ7bIIB7uV1GOCJDtdME,4360
|
171
170
|
odoo/addons/shopfloor/tests/test_zone_picking_select_picking_type.py,sha256=kuuPjKvpBRrj36z-lj4P7NMLqszkZasIdpvx9mayUQI,870
|
172
|
-
odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination.py,sha256=
|
171
|
+
odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination.py,sha256=fyO0LEb7MNzEoRT-NVtXzN19_l1gKGR35ncz_CTBFC4,27669
|
173
172
|
odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_no_prefill_qty.py,sha256=Nn2xLfD3uHEAfDQ6INUR3np9B7wttADz_FZ-r4nbymI,5230
|
174
173
|
odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_package_not_allowed.py,sha256=KXXnDDRfp9mTd0YoM5KSVFQMdBYTgsvMbNu1Nwkn8Vk,3669
|
175
|
-
odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_pick_pack.py,sha256=
|
174
|
+
odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_pick_pack.py,sha256=Awd6smTthYGqgorgpJK4J24R66ypSjv8iPy9nINJVxc,9002
|
176
175
|
odoo/addons/shopfloor/tests/test_zone_picking_start.py,sha256=aINReAOIPcv10977iDD0imjYDmqKG7bhgFOvYLSLgjs,7195
|
177
176
|
odoo/addons/shopfloor/tests/test_zone_picking_stock_issue.py,sha256=VdbSdxYL7w3M_vxTTv7ekY5UQpSoAMRaL4zqXovZcss,4498
|
178
|
-
odoo/addons/shopfloor/tests/test_zone_picking_unload_all.py,sha256=
|
177
|
+
odoo/addons/shopfloor/tests/test_zone_picking_unload_all.py,sha256=jDBRSxTJiZeiVUGOp5VRo4BYNDdI6r2UGZPEcoe7UD0,13057
|
179
178
|
odoo/addons/shopfloor/tests/test_zone_picking_unload_buffer_lines.py,sha256=dVb4G4peQPb8mkxTpXqMGc3k-SrokP6y1krqJtzJDIk,4362
|
180
179
|
odoo/addons/shopfloor/tests/test_zone_picking_unload_set_destination.py,sha256=3TtVsNGEgAGNNn5m2kS8yN7fxw1q-nZQcRAuMYetP2U,13625
|
181
|
-
odoo/addons/shopfloor/tests/test_zone_picking_unload_single.py,sha256=
|
180
|
+
odoo/addons/shopfloor/tests/test_zone_picking_unload_single.py,sha256=QmUbxYansd1zpHBpRePkM25DSOuWZb9qYLOLjESS3kU,4387
|
182
181
|
odoo/addons/shopfloor/tests/test_zone_picking_zero_check.py,sha256=HB0hrvRsH7Ucv1pQm-D8dMWq6tQuTbrI8CPFqZh0Zb0,1376
|
183
182
|
odoo/addons/shopfloor/views/shopfloor_menu.xml,sha256=LK_XdKawKqXPTaE1tq4r5dXR62CmDQHl8SwrZnLeyJM,9319
|
184
183
|
odoo/addons/shopfloor/views/stock_location.xml,sha256=d7iqbOQZbb5YPSdAXlQ6spcj8dUvQ37DpEGuaLX5B1M,829
|
185
184
|
odoo/addons/shopfloor/views/stock_move_line.xml,sha256=AmIO95-G0AD5i5C3x_BQL_NARXvyCfe4mg9iM97wD1U,1996
|
186
185
|
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.
|
186
|
+
odoo_addon_shopfloor-18.0.0.3.0.dist-info/METADATA,sha256=3ezSzJZ7HpndpXC47zPxsQwKr4PzS5h6u-PT312tC4Q,7580
|
187
|
+
odoo_addon_shopfloor-18.0.0.3.0.dist-info/WHEEL,sha256=ZhOvUsYhy81Dx67gN3TV0RchQWBIIzutDZaJODDg2Vo,81
|
188
|
+
odoo_addon_shopfloor-18.0.0.3.0.dist-info/top_level.txt,sha256=QE6RBQ0QX5f4eFuUcGgU5Kbq1A_qJcDs-e_vpr6pmfU,4
|
189
|
+
odoo_addon_shopfloor-18.0.0.3.0.dist-info/RECORD,,
|
@@ -1,202 +0,0 @@
|
|
1
|
-
# Copyright 2023 Camptocamp SA (http://www.camptocamp.com)
|
2
|
-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
-
|
4
|
-
from .test_zone_picking_base import ZonePickingCommonCase
|
5
|
-
|
6
|
-
|
7
|
-
class ZonePickingSelectLineFirstScanLocationCase(ZonePickingCommonCase):
|
8
|
-
"""Tests for endpoint used from select_line with option 'First scan location'
|
9
|
-
|
10
|
-
* /scan_source
|
11
|
-
|
12
|
-
"""
|
13
|
-
|
14
|
-
def setUp(self):
|
15
|
-
super().setUp()
|
16
|
-
self.service.work.current_picking_type = self.picking1.picking_type_id
|
17
|
-
self.menu.sudo().scan_location_or_pack_first = True
|
18
|
-
|
19
|
-
def test_scan_source_first_the_product_not_ok(self):
|
20
|
-
"""Check first scanning a product barcode is not allowed."""
|
21
|
-
response = self.service.dispatch(
|
22
|
-
"scan_source",
|
23
|
-
params={"barcode": self.product_a.barcode},
|
24
|
-
)
|
25
|
-
move_lines = self.service._find_location_move_lines(
|
26
|
-
locations=self.zone_location,
|
27
|
-
package=False,
|
28
|
-
)
|
29
|
-
self.assertTrue(response.get("data").get("select_line"))
|
30
|
-
self.assert_response_select_line(
|
31
|
-
response,
|
32
|
-
zone_location=self.zone_location,
|
33
|
-
picking_type=self.picking_type,
|
34
|
-
message=self.service.msg_store.barcode_not_found(),
|
35
|
-
move_lines=move_lines,
|
36
|
-
location_first=True,
|
37
|
-
)
|
38
|
-
|
39
|
-
def test_scan_source_scan_location_then_product_ok(self):
|
40
|
-
"""Check scanning location and then product is fine."""
|
41
|
-
# Have the same product multiple time in sublocation 2
|
42
|
-
pickingA = self._create_picking(
|
43
|
-
lines=[(self.product_b, 12), (self.product_c, 13)]
|
44
|
-
)
|
45
|
-
self._fill_stock_for_moves(
|
46
|
-
pickingA.move_lines, in_lot=True, location=self.zone_sublocation2
|
47
|
-
)
|
48
|
-
pickingA.action_assign()
|
49
|
-
# Scan product B, send sublocation to simulate a previous scan for a location
|
50
|
-
response = self.service.dispatch(
|
51
|
-
"scan_source",
|
52
|
-
params={
|
53
|
-
"barcode": self.product_b.barcode,
|
54
|
-
"sublocation_id": self.zone_sublocation2.id,
|
55
|
-
},
|
56
|
-
)
|
57
|
-
move_lines = self.service._find_location_move_lines(
|
58
|
-
locations=self.zone_sublocation2, product=self.product_b
|
59
|
-
)
|
60
|
-
self.assert_response_select_line(
|
61
|
-
response,
|
62
|
-
zone_location=self.zone_location,
|
63
|
-
picking_type=self.picking_type,
|
64
|
-
message=self.service.msg_store.several_move_with_different_lot(),
|
65
|
-
move_lines=move_lines,
|
66
|
-
product=self.product_b,
|
67
|
-
sublocation=self.zone_sublocation2,
|
68
|
-
location_first=True,
|
69
|
-
)
|
70
|
-
|
71
|
-
def test_scan_source_can_not_select_line_with_package(self):
|
72
|
-
"""Do not allow to scan product with package without scanning pack first."""
|
73
|
-
# Picking 1 with one product in a package is already in sub location 1
|
74
|
-
pickingA = self._create_picking(lines=[(self.product_a, 13)])
|
75
|
-
self._fill_stock_for_moves(
|
76
|
-
pickingA.move_lines[0], in_package=True, location=self.zone_sublocation1
|
77
|
-
)
|
78
|
-
pickingA.action_assign()
|
79
|
-
# Scanning a product after having scan a location (sublocation_id)
|
80
|
-
response = self.service.dispatch(
|
81
|
-
"scan_source",
|
82
|
-
params={
|
83
|
-
"barcode": self.product_a.barcode,
|
84
|
-
"sublocation_id": self.zone_sublocation1.id,
|
85
|
-
},
|
86
|
-
)
|
87
|
-
self.assertEqual(response["next_state"], "select_line")
|
88
|
-
move_lines = self.service._find_location_move_lines(
|
89
|
-
locations=self.zone_sublocation1, package=False, product=self.product_a
|
90
|
-
)
|
91
|
-
self.assert_response_select_line(
|
92
|
-
response,
|
93
|
-
zone_location=self.zone_location,
|
94
|
-
sublocation=self.zone_sublocation1,
|
95
|
-
picking_type=self.picking_type,
|
96
|
-
message=self.service.msg_store.product_not_found(),
|
97
|
-
move_lines=move_lines,
|
98
|
-
location_first=True,
|
99
|
-
)
|
100
|
-
|
101
|
-
def test_scan_source_scan_location_no_lines_without_package(self):
|
102
|
-
"""Check list of lines when first scanning location.
|
103
|
-
|
104
|
-
With the scan_location_or_pack_first option on. When scanning first the
|
105
|
-
location and no lines without package exist, ask to scan a package.
|
106
|
-
|
107
|
-
"""
|
108
|
-
# Picking 1 with one product in a package is already in sub location 1
|
109
|
-
pickingA = self._create_picking(lines=[(self.product_a, 13)])
|
110
|
-
self._fill_stock_for_moves(
|
111
|
-
pickingA.move_lines[0], in_package=True, location=self.zone_sublocation1
|
112
|
-
)
|
113
|
-
pickingA.action_assign()
|
114
|
-
response = self.service.dispatch(
|
115
|
-
"scan_source",
|
116
|
-
params={
|
117
|
-
"barcode": self.zone_sublocation1.barcode,
|
118
|
-
},
|
119
|
-
)
|
120
|
-
move_lines = self.service._find_location_move_lines(
|
121
|
-
locations=self.zone_sublocation1, package=False
|
122
|
-
)
|
123
|
-
self.assert_response_select_line(
|
124
|
-
response,
|
125
|
-
zone_location=self.zone_location,
|
126
|
-
sublocation=self.zone_sublocation1,
|
127
|
-
picking_type=self.picking_type,
|
128
|
-
message=self.service.msg_store.several_packs_in_location(
|
129
|
-
self.zone_sublocation1
|
130
|
-
),
|
131
|
-
move_lines=move_lines,
|
132
|
-
location_first=True,
|
133
|
-
)
|
134
|
-
|
135
|
-
def test_scan_source_scan_package_first_with_two_product(self):
|
136
|
-
"""Scan a package with two product and then scan a product."""
|
137
|
-
pickingA = self._create_picking(
|
138
|
-
lines=[(self.product_a, 13), (self.product_b, 5)]
|
139
|
-
)
|
140
|
-
self._fill_stock_for_moves(
|
141
|
-
pickingA.move_lines, in_package=True, location=self.zone_sublocation1
|
142
|
-
)
|
143
|
-
pickingA.action_assign()
|
144
|
-
package = pickingA.package_level_ids[0].package_id
|
145
|
-
response = self.service.dispatch(
|
146
|
-
"scan_source",
|
147
|
-
params={
|
148
|
-
"barcode": package.name,
|
149
|
-
},
|
150
|
-
)
|
151
|
-
move_lines = self.service._find_location_move_lines(
|
152
|
-
locations=self.zone_sublocation1, package=package
|
153
|
-
)
|
154
|
-
self.assertTrue(len(move_lines), 2)
|
155
|
-
self.assert_response_select_line(
|
156
|
-
response,
|
157
|
-
zone_location=self.zone_location,
|
158
|
-
picking_type=self.picking_type,
|
159
|
-
message=self.service.msg_store.several_products_in_package(package),
|
160
|
-
move_lines=move_lines,
|
161
|
-
location_first=True,
|
162
|
-
package=package,
|
163
|
-
)
|
164
|
-
response = self.service.dispatch(
|
165
|
-
"scan_source",
|
166
|
-
params={"barcode": self.product_a.barcode, "package_id": package.id},
|
167
|
-
)
|
168
|
-
move_line = pickingA.move_line_ids[0]
|
169
|
-
self.assert_response_set_line_destination(
|
170
|
-
response,
|
171
|
-
zone_location=self.zone_location,
|
172
|
-
picking_type=self.picking_type,
|
173
|
-
move_line=move_line,
|
174
|
-
qty_done=13.0,
|
175
|
-
)
|
176
|
-
|
177
|
-
# def test_scan_source_scan_package_first_with_one_line(self):
|
178
|
-
# pickingA = self._create_picking(lines=[(self.product_a, 13)])
|
179
|
-
# self._fill_stock_for_moves(
|
180
|
-
# pickingA.move_lines[0], in_package=True, location=self.zone_sublocation1
|
181
|
-
# )
|
182
|
-
# pickingA.action_assign()
|
183
|
-
# package = pickingA.package_level_ids[0].package_id
|
184
|
-
# response = self.service.dispatch(
|
185
|
-
# "scan_source",
|
186
|
-
# params={
|
187
|
-
# "barcode": package.name,
|
188
|
-
# },
|
189
|
-
# )
|
190
|
-
# move_lines = self.service._find_location_move_lines(
|
191
|
-
# locations=self.zone_sublocation1, package=package
|
192
|
-
# )
|
193
|
-
# self.assert_response_select_line(
|
194
|
-
# response,
|
195
|
-
# zone_location=self.zone_location,
|
196
|
-
# picking_type=self.picking_type,
|
197
|
-
# # message=self.service.msg_store.location_empty_scan_package(
|
198
|
-
# # self.zone_sublocation1
|
199
|
-
# # ),
|
200
|
-
# move_lines=move_lines,
|
201
|
-
# # location_first=True,
|
202
|
-
# )
|
{odoo_addon_shopfloor-18.0.0.2.0.dist-info → odoo_addon_shopfloor-18.0.0.3.0.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|