odoo-addon-shopfloor 16.0.1.0.0.24__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 +160 -0
- odoo/addons/shopfloor/__init__.py +4 -0
- odoo/addons/shopfloor/__manifest__.py +65 -0
- odoo/addons/shopfloor/actions/__init__.py +15 -0
- odoo/addons/shopfloor/actions/change_package_lot.py +164 -0
- odoo/addons/shopfloor/actions/completion_info.py +42 -0
- odoo/addons/shopfloor/actions/data.py +329 -0
- odoo/addons/shopfloor/actions/data_detail.py +154 -0
- odoo/addons/shopfloor/actions/inventory.py +150 -0
- odoo/addons/shopfloor/actions/location_content_transfer_sorter.py +89 -0
- odoo/addons/shopfloor/actions/message.py +846 -0
- odoo/addons/shopfloor/actions/move_line_search.py +119 -0
- odoo/addons/shopfloor/actions/packaging.py +59 -0
- odoo/addons/shopfloor/actions/savepoint.py +44 -0
- odoo/addons/shopfloor/actions/schema.py +182 -0
- odoo/addons/shopfloor/actions/schema_detail.py +98 -0
- odoo/addons/shopfloor/actions/search.py +187 -0
- odoo/addons/shopfloor/actions/stock.py +239 -0
- odoo/addons/shopfloor/actions/stock_unreserve.py +66 -0
- odoo/addons/shopfloor/components/__init__.py +5 -0
- odoo/addons/shopfloor/components/scan_handler_location.py +26 -0
- odoo/addons/shopfloor/components/scan_handler_lot.py +26 -0
- odoo/addons/shopfloor/components/scan_handler_package.py +26 -0
- odoo/addons/shopfloor/components/scan_handler_product.py +26 -0
- odoo/addons/shopfloor/components/scan_handler_transfer.py +26 -0
- odoo/addons/shopfloor/data/shopfloor_scenario_data.xml +73 -0
- odoo/addons/shopfloor/demo/shopfloor_app_demo.xml +12 -0
- odoo/addons/shopfloor/demo/shopfloor_menu_demo.xml +64 -0
- odoo/addons/shopfloor/demo/shopfloor_profile_demo.xml +8 -0
- odoo/addons/shopfloor/demo/stock_picking_type_demo.xml +93 -0
- odoo/addons/shopfloor/docs/checkout_diag_seq.plantuml +61 -0
- odoo/addons/shopfloor/docs/checkout_diag_seq.png +0 -0
- odoo/addons/shopfloor/docs/cluster_picking_diag_seq.plantuml +112 -0
- odoo/addons/shopfloor/docs/cluster_picking_diag_seq.png +0 -0
- odoo/addons/shopfloor/docs/delivery_diag_seq.plantuml +56 -0
- odoo/addons/shopfloor/docs/delivery_diag_seq.png +0 -0
- odoo/addons/shopfloor/docs/location_content_transfer_diag_seq.plantuml +66 -0
- odoo/addons/shopfloor/docs/location_content_transfer_diag_seq.png +0 -0
- odoo/addons/shopfloor/docs/oca_logo.png +0 -0
- odoo/addons/shopfloor/docs/single_pack_transfer_diag_seq.plantuml +36 -0
- odoo/addons/shopfloor/docs/single_pack_transfer_diag_seq.png +0 -0
- odoo/addons/shopfloor/docs/zone_picking_diag_seq.plantuml +85 -0
- odoo/addons/shopfloor/docs/zone_picking_diag_seq.png +0 -0
- odoo/addons/shopfloor/exceptions.py +6 -0
- odoo/addons/shopfloor/i18n/ca.po +1802 -0
- odoo/addons/shopfloor/i18n/de.po +1791 -0
- odoo/addons/shopfloor/i18n/es_AR.po +2147 -0
- odoo/addons/shopfloor/i18n/pt_BR.po +1791 -0
- odoo/addons/shopfloor/i18n/shopfloor.pot +1877 -0
- odoo/addons/shopfloor/models/__init__.py +12 -0
- odoo/addons/shopfloor/models/priority_postpone_mixin.py +41 -0
- odoo/addons/shopfloor/models/shopfloor_app.py +9 -0
- odoo/addons/shopfloor/models/shopfloor_menu.py +436 -0
- odoo/addons/shopfloor/models/stock_location.py +76 -0
- odoo/addons/shopfloor/models/stock_move.py +119 -0
- odoo/addons/shopfloor/models/stock_move_line.py +307 -0
- odoo/addons/shopfloor/models/stock_package_level.py +50 -0
- odoo/addons/shopfloor/models/stock_picking.py +118 -0
- odoo/addons/shopfloor/models/stock_picking_batch.py +41 -0
- odoo/addons/shopfloor/models/stock_picking_type.py +26 -0
- odoo/addons/shopfloor/models/stock_quant.py +31 -0
- odoo/addons/shopfloor/models/stock_quant_package.py +101 -0
- odoo/addons/shopfloor/readme/CONTRIBUTORS.rst +18 -0
- odoo/addons/shopfloor/readme/CREDITS.rst +5 -0
- odoo/addons/shopfloor/readme/DESCRIPTION.rst +17 -0
- odoo/addons/shopfloor/readme/HISTORY.rst +4 -0
- odoo/addons/shopfloor/readme/ROADMAP.rst +4 -0
- odoo/addons/shopfloor/readme/USAGE.rst +6 -0
- odoo/addons/shopfloor/security/groups.xml +17 -0
- odoo/addons/shopfloor/services/__init__.py +16 -0
- odoo/addons/shopfloor/services/checkout.py +1763 -0
- odoo/addons/shopfloor/services/cluster_picking.py +1628 -0
- odoo/addons/shopfloor/services/delivery.py +828 -0
- odoo/addons/shopfloor/services/forms/__init__.py +1 -0
- odoo/addons/shopfloor/services/forms/picking_form.py +78 -0
- odoo/addons/shopfloor/services/location_content_transfer.py +1194 -0
- odoo/addons/shopfloor/services/menu.py +60 -0
- odoo/addons/shopfloor/services/picking_batch.py +126 -0
- odoo/addons/shopfloor/services/service.py +101 -0
- odoo/addons/shopfloor/services/single_pack_transfer.py +366 -0
- odoo/addons/shopfloor/services/zone_picking.py +1938 -0
- odoo/addons/shopfloor/static/description/icon.png +0 -0
- odoo/addons/shopfloor/static/description/index.html +500 -0
- odoo/addons/shopfloor/tests/__init__.py +83 -0
- odoo/addons/shopfloor/tests/common.py +324 -0
- odoo/addons/shopfloor/tests/models.py +29 -0
- odoo/addons/shopfloor/tests/test_actions_change_package_lot.py +1175 -0
- odoo/addons/shopfloor/tests/test_actions_data.py +376 -0
- odoo/addons/shopfloor/tests/test_actions_data_base.py +244 -0
- odoo/addons/shopfloor/tests/test_actions_data_detail.py +322 -0
- odoo/addons/shopfloor/tests/test_actions_search.py +248 -0
- odoo/addons/shopfloor/tests/test_actions_stock.py +48 -0
- odoo/addons/shopfloor/tests/test_checkout_auto_post.py +67 -0
- odoo/addons/shopfloor/tests/test_checkout_base.py +81 -0
- odoo/addons/shopfloor/tests/test_checkout_cancel_line.py +154 -0
- odoo/addons/shopfloor/tests/test_checkout_change_packaging.py +184 -0
- odoo/addons/shopfloor/tests/test_checkout_done.py +133 -0
- odoo/addons/shopfloor/tests/test_checkout_list_delivery_packaging.py +131 -0
- odoo/addons/shopfloor/tests/test_checkout_list_package.py +327 -0
- odoo/addons/shopfloor/tests/test_checkout_new_package.py +88 -0
- odoo/addons/shopfloor/tests/test_checkout_no_package.py +95 -0
- odoo/addons/shopfloor/tests/test_checkout_scan.py +174 -0
- odoo/addons/shopfloor/tests/test_checkout_scan_line.py +377 -0
- odoo/addons/shopfloor/tests/test_checkout_scan_line_base.py +25 -0
- odoo/addons/shopfloor/tests/test_checkout_scan_line_no_prefill_qty.py +91 -0
- odoo/addons/shopfloor/tests/test_checkout_scan_package_action.py +451 -0
- odoo/addons/shopfloor/tests/test_checkout_scan_package_action_no_prefill_qty.py +107 -0
- odoo/addons/shopfloor/tests/test_checkout_select.py +74 -0
- odoo/addons/shopfloor/tests/test_checkout_select_line.py +130 -0
- odoo/addons/shopfloor/tests/test_checkout_select_package_base.py +64 -0
- odoo/addons/shopfloor/tests/test_checkout_set_qty.py +257 -0
- odoo/addons/shopfloor/tests/test_checkout_summary.py +69 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_base.py +83 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_batch.py +109 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_change_pack_lot.py +111 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_is_zero.py +98 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_scan_destination.py +376 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_scan_destination_no_prefill_qty.py +115 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_scan_line.py +402 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_scan_line_location_or_pack_first.py +114 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_scan_line_no_prefill_qty.py +70 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_select.py +387 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_skip.py +90 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_stock_issue.py +364 -0
- odoo/addons/shopfloor/tests/test_cluster_picking_unload.py +911 -0
- odoo/addons/shopfloor/tests/test_delivery_base.py +155 -0
- odoo/addons/shopfloor/tests/test_delivery_done.py +108 -0
- odoo/addons/shopfloor/tests/test_delivery_list_stock_picking.py +49 -0
- odoo/addons/shopfloor/tests/test_delivery_reset_qty_done_line.py +119 -0
- odoo/addons/shopfloor/tests/test_delivery_reset_qty_done_pack.py +107 -0
- odoo/addons/shopfloor/tests/test_delivery_scan_deliver.py +557 -0
- odoo/addons/shopfloor/tests/test_delivery_select.py +38 -0
- odoo/addons/shopfloor/tests/test_delivery_set_qty_done_line.py +91 -0
- odoo/addons/shopfloor/tests/test_delivery_set_qty_done_pack.py +135 -0
- odoo/addons/shopfloor/tests/test_delivery_sublocation.py +180 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_base.py +136 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py +125 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py +509 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_putaway.py +143 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_scan_location.py +34 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_all.py +343 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_package_or_line.py +1074 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_single.py +748 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_start.py +359 -0
- odoo/addons/shopfloor/tests/test_menu_base.py +261 -0
- odoo/addons/shopfloor/tests/test_menu_counters.py +61 -0
- odoo/addons/shopfloor/tests/test_misc.py +25 -0
- odoo/addons/shopfloor/tests/test_move_action_assign.py +87 -0
- odoo/addons/shopfloor/tests/test_openapi.py +21 -0
- odoo/addons/shopfloor/tests/test_picking_form.py +62 -0
- odoo/addons/shopfloor/tests/test_scan_anything.py +49 -0
- odoo/addons/shopfloor/tests/test_single_pack_transfer.py +1121 -0
- odoo/addons/shopfloor/tests/test_single_pack_transfer_base.py +32 -0
- odoo/addons/shopfloor/tests/test_single_pack_transfer_putaway.py +104 -0
- odoo/addons/shopfloor/tests/test_stock_split.py +204 -0
- odoo/addons/shopfloor/tests/test_user.py +42 -0
- odoo/addons/shopfloor/tests/test_zone_picking_base.py +608 -0
- odoo/addons/shopfloor/tests/test_zone_picking_change_pack_lot.py +140 -0
- odoo/addons/shopfloor/tests/test_zone_picking_select_line.py +723 -0
- odoo/addons/shopfloor/tests/test_zone_picking_select_line_first_scan_location.py +207 -0
- odoo/addons/shopfloor/tests/test_zone_picking_select_line_first_scan_location.py.bak +202 -0
- odoo/addons/shopfloor/tests/test_zone_picking_select_line_no_prefill_qty.py +107 -0
- odoo/addons/shopfloor/tests/test_zone_picking_select_picking_type.py +26 -0
- odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination.py +643 -0
- odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_no_prefill_qty.py +146 -0
- odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_pick_pack.py +241 -0
- odoo/addons/shopfloor/tests/test_zone_picking_start.py +206 -0
- odoo/addons/shopfloor/tests/test_zone_picking_stock_issue.py +121 -0
- odoo/addons/shopfloor/tests/test_zone_picking_unload_all.py +353 -0
- odoo/addons/shopfloor/tests/test_zone_picking_unload_buffer_lines.py +113 -0
- odoo/addons/shopfloor/tests/test_zone_picking_unload_set_destination.py +374 -0
- odoo/addons/shopfloor/tests/test_zone_picking_unload_single.py +123 -0
- odoo/addons/shopfloor/tests/test_zone_picking_zero_check.py +43 -0
- odoo/addons/shopfloor/utils.py +13 -0
- odoo/addons/shopfloor/views/shopfloor_menu.xml +167 -0
- odoo/addons/shopfloor/views/stock_location.xml +20 -0
- odoo/addons/shopfloor/views/stock_move_line.xml +52 -0
- odoo/addons/shopfloor/views/stock_picking_type.xml +19 -0
- odoo_addon_shopfloor-16.0.1.0.0.24.dist-info/METADATA +192 -0
- odoo_addon_shopfloor-16.0.1.0.0.24.dist-info/RECORD +182 -0
- odoo_addon_shopfloor-16.0.1.0.0.24.dist-info/WHEEL +5 -0
- odoo_addon_shopfloor-16.0.1.0.0.24.dist-info/top_level.txt +1 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
# Copyright 2020 Camptocamp SA (http://www.camptocamp.com)
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
|
4
|
+
from odoo import exceptions
|
5
|
+
from odoo.tests.common import TransactionCase
|
6
|
+
|
7
|
+
# pylint: disable=missing-return
|
8
|
+
|
9
|
+
|
10
|
+
class MiscTestCase(TransactionCase):
|
11
|
+
tracking_disable = True
|
12
|
+
|
13
|
+
@classmethod
|
14
|
+
def setUpClass(cls):
|
15
|
+
super().setUpClass()
|
16
|
+
cls.env = cls.env(
|
17
|
+
context=dict(cls.env.context, tracking_disable=cls.tracking_disable)
|
18
|
+
)
|
19
|
+
|
20
|
+
def test_package_name_unique(self):
|
21
|
+
create = self.env["stock.quant.package"].create
|
22
|
+
create({"name": "GOOD_NAME"})
|
23
|
+
with self.assertRaises(exceptions.UserError) as exc:
|
24
|
+
create({"name": "GOOD_NAME"})
|
25
|
+
self.assertEqual(exc.exception.args[0], "Package name must be unique!")
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# Copyright 2020 Camptocamp SA (http://www.camptocamp.com)
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
|
4
|
+
from .common import CommonCase
|
5
|
+
|
6
|
+
# pylint: disable=missing-return
|
7
|
+
|
8
|
+
|
9
|
+
class TestStockMoveActionAssign(CommonCase):
|
10
|
+
@classmethod
|
11
|
+
def setUpClassVars(cls, *args, **kwargs):
|
12
|
+
super().setUpClassVars(*args, **kwargs)
|
13
|
+
cls.wh = cls.env.ref("stock.warehouse0")
|
14
|
+
|
15
|
+
@classmethod
|
16
|
+
def setUpClassBaseData(cls, *args, **kwargs):
|
17
|
+
super().setUpClassBaseData(*args, **kwargs)
|
18
|
+
cls.wh.sudo().delivery_steps = "pick_pack_ship"
|
19
|
+
|
20
|
+
def test_action_assign_package_level(self):
|
21
|
+
"""calling _action_assign on move does not erase lines' "result_package_id"
|
22
|
+
|
23
|
+
At the end of the method ``StockMove._action_assign()``, the method
|
24
|
+
``StockPicking._check_entire_pack()`` is called. This method compares
|
25
|
+
the move lines with the quants of their source package, and if the entire
|
26
|
+
package is moved at once in the same transfer, a ``stock.package_level`` is
|
27
|
+
created. On creation of a ``stock.package_level``, the result package of
|
28
|
+
the move lines is directly updated with the entire package.
|
29
|
+
|
30
|
+
This is good on the first assign of the move, but when we call assign for
|
31
|
+
the second time on a move, for instance because it was made partially available
|
32
|
+
and we want to assign the remaining, it can override the result package we
|
33
|
+
selected before.
|
34
|
+
|
35
|
+
An override of ``StockPicking._check_move_lines_map_quant_package()`` ensures
|
36
|
+
that we ignore:
|
37
|
+
|
38
|
+
* picked lines (qty_done > 0)
|
39
|
+
* lines with a different result package already
|
40
|
+
"""
|
41
|
+
package = self.env["stock.quant.package"].create({"name": "Src Pack"})
|
42
|
+
dest_package1 = self.env["stock.quant.package"].create({"name": "Dest Pack1"})
|
43
|
+
|
44
|
+
picking = self._create_picking(
|
45
|
+
picking_type=self.wh.pick_type_id, lines=[(self.product_a, 50)]
|
46
|
+
)
|
47
|
+
self._update_qty_in_location(
|
48
|
+
picking.location_id, self.product_a, 20, package=package
|
49
|
+
)
|
50
|
+
picking.action_assign()
|
51
|
+
|
52
|
+
self.assertEqual(picking.state, "assigned")
|
53
|
+
self.assertEqual(picking.package_level_ids.package_id, package)
|
54
|
+
|
55
|
+
move = picking.move_ids
|
56
|
+
line = move.move_line_ids
|
57
|
+
|
58
|
+
# we are no longer moving the entire package
|
59
|
+
line.qty_done = 20
|
60
|
+
line.result_package_id = dest_package1
|
61
|
+
|
62
|
+
# create remaining quantity
|
63
|
+
new_package = self.env["stock.quant.package"].create({"name": "New Pack"})
|
64
|
+
self._update_qty_in_location(
|
65
|
+
picking.location_id, self.product_a, 30, package=new_package
|
66
|
+
)
|
67
|
+
|
68
|
+
move._action_assign()
|
69
|
+
new_line = move.move_line_ids - line
|
70
|
+
|
71
|
+
# At the end of _action_assign(), StockPicking._check_entire_pack() is
|
72
|
+
# called, which, by default, look the sum of the move lines qties, and
|
73
|
+
# if they match a package, it:
|
74
|
+
#
|
75
|
+
# * creates a package level
|
76
|
+
# * updates all the move lines result package with the package,
|
77
|
+
# including the 'done' lines
|
78
|
+
#
|
79
|
+
# These checks ensure that we prevent this to happen if we already set
|
80
|
+
# a result package.
|
81
|
+
self.assertRecordValues(
|
82
|
+
line + new_line,
|
83
|
+
[
|
84
|
+
{"qty_done": 20, "result_package_id": dest_package1.id},
|
85
|
+
{"qty_done": 0, "result_package_id": new_package.id},
|
86
|
+
],
|
87
|
+
)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright 2020 Camptocamp SA (http://www.camptocamp.com)
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
|
4
|
+
from odoo.addons.shopfloor_base.tests.common_misc import OpenAPITestMixin
|
5
|
+
|
6
|
+
from .common import CommonCase
|
7
|
+
|
8
|
+
# pylint: disable=missing-return
|
9
|
+
|
10
|
+
|
11
|
+
class TestOpenAPICommonCase(CommonCase, OpenAPITestMixin):
|
12
|
+
@classmethod
|
13
|
+
def setUpClassVars(cls):
|
14
|
+
super().setUpClassVars()
|
15
|
+
# we don't really care about which menu and profile we use
|
16
|
+
# to read the OpenAPI specs
|
17
|
+
cls.menu = cls.env.ref("shopfloor.shopfloor_menu_demo_delivery")
|
18
|
+
cls.profile = cls.env.ref("shopfloor_base.profile_demo_1")
|
19
|
+
|
20
|
+
def test_openapi(self):
|
21
|
+
self._test_openapi(menu=self.menu, profile=self.profile)
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Copyright 2020 Camptocamp SA (http://www.camptocamp.com)
|
2
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
3
|
+
from .common import CommonCase
|
4
|
+
|
5
|
+
# pylint: disable=missing-return
|
6
|
+
|
7
|
+
|
8
|
+
class PickingFormCase(CommonCase):
|
9
|
+
@classmethod
|
10
|
+
def setUpClassVars(cls, *args, **kwargs):
|
11
|
+
super().setUpClassVars(*args, **kwargs)
|
12
|
+
cls.menu = cls.env.ref("shopfloor.shopfloor_menu_demo_checkout")
|
13
|
+
cls.profile = cls.env.ref("shopfloor.profile_demo_1")
|
14
|
+
cls.picking_type = cls.menu.picking_type_ids
|
15
|
+
cls.wh = cls.picking_type.warehouse_id
|
16
|
+
|
17
|
+
@classmethod
|
18
|
+
def setUpClassBaseData(cls):
|
19
|
+
super().setUpClassBaseData()
|
20
|
+
cls.picking = cls._create_picking(lines=[(cls.product_a, 10)])
|
21
|
+
|
22
|
+
def setUp(self):
|
23
|
+
super().setUp()
|
24
|
+
self.service = self.get_service("form_edit_stock_picking", profile=self.profile)
|
25
|
+
|
26
|
+
def test_picking_form_get(self):
|
27
|
+
available_carriers = self.service._get_available_carriers(self.picking)
|
28
|
+
response = self.service.dispatch("get", self.picking.id)
|
29
|
+
self.assert_response(
|
30
|
+
response,
|
31
|
+
data={
|
32
|
+
"record": self.data_detail.picking_detail(self.picking),
|
33
|
+
"form": {
|
34
|
+
"carrier_id": {
|
35
|
+
"value": self.picking.carrier_id.id,
|
36
|
+
"select_options": available_carriers.jsonify(["id", "name"]),
|
37
|
+
}
|
38
|
+
},
|
39
|
+
},
|
40
|
+
)
|
41
|
+
|
42
|
+
def test_picking_form_update(self):
|
43
|
+
available_carriers = self.service._get_available_carriers(self.picking)
|
44
|
+
self.picking.carrier_id = available_carriers[0]
|
45
|
+
params = {"carrier_id": available_carriers[1].id}
|
46
|
+
response = self.service.dispatch("update", self.picking.id, params=params)
|
47
|
+
self.assert_response(
|
48
|
+
response,
|
49
|
+
data={
|
50
|
+
"record": self.data_detail.picking_detail(self.picking),
|
51
|
+
"form": {
|
52
|
+
"carrier_id": {
|
53
|
+
"value": self.picking.carrier_id.id,
|
54
|
+
"select_options": available_carriers.jsonify(["id", "name"]),
|
55
|
+
}
|
56
|
+
},
|
57
|
+
},
|
58
|
+
message=self.service._msg_record_updated(self.picking),
|
59
|
+
)
|
60
|
+
self.assertRecordValues(
|
61
|
+
self.picking, [{"carrier_id": available_carriers[1].id}]
|
62
|
+
)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# Copyright 2020 Camptocamp SA (http://www.camptocamp.com)
|
2
|
+
# Copyright 2021 ACSONE SA/NV (http://www.acsone.eu)
|
3
|
+
# @author Simone Orsi <simahawk@gmail.com>
|
4
|
+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
5
|
+
|
6
|
+
from odoo.addons.shopfloor_base.tests.common_misc import ScanAnythingTestMixin
|
7
|
+
|
8
|
+
from .test_actions_data_base import ActionsDataDetailCaseBase
|
9
|
+
|
10
|
+
|
11
|
+
class ScanAnythingCase(ActionsDataDetailCaseBase, ScanAnythingTestMixin):
|
12
|
+
def test_scan_product(self):
|
13
|
+
record = self.product_b
|
14
|
+
record.default_code = "PROD-B-code"
|
15
|
+
record.barcode = "PROD-B"
|
16
|
+
rec_type = "product"
|
17
|
+
identifier = record.barcode
|
18
|
+
data = self.data_detail.product_detail(record)
|
19
|
+
self._test_response_ok(rec_type, data, identifier)
|
20
|
+
identifier = record.default_code
|
21
|
+
self._test_response_ok(rec_type, data, identifier)
|
22
|
+
|
23
|
+
def test_scan_location(self):
|
24
|
+
record = self.stock_location
|
25
|
+
rec_type = "location"
|
26
|
+
identifier = record.barcode
|
27
|
+
data = self.data_detail.location_detail(record)
|
28
|
+
self._test_response_ok(rec_type, data, identifier)
|
29
|
+
|
30
|
+
def test_scan_package(self):
|
31
|
+
record = self.package
|
32
|
+
rec_type = "package"
|
33
|
+
identifier = record.name
|
34
|
+
data = self.data_detail.package_detail(record)
|
35
|
+
self._test_response_ok(rec_type, data, identifier)
|
36
|
+
|
37
|
+
def test_scan_lot(self):
|
38
|
+
record = self.lot
|
39
|
+
rec_type = "lot"
|
40
|
+
identifier = record.name
|
41
|
+
data = self.data_detail.lot_detail(record)
|
42
|
+
self._test_response_ok(rec_type, data, identifier)
|
43
|
+
|
44
|
+
def test_scan_transfer(self):
|
45
|
+
record = self.picking
|
46
|
+
rec_type = "transfer"
|
47
|
+
identifier = record.name
|
48
|
+
data = self.data_detail.picking_detail(record)
|
49
|
+
self._test_response_ok(rec_type, data, identifier)
|