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.
Files changed (182) hide show
  1. odoo/addons/shopfloor/README.rst +160 -0
  2. odoo/addons/shopfloor/__init__.py +4 -0
  3. odoo/addons/shopfloor/__manifest__.py +65 -0
  4. odoo/addons/shopfloor/actions/__init__.py +15 -0
  5. odoo/addons/shopfloor/actions/change_package_lot.py +164 -0
  6. odoo/addons/shopfloor/actions/completion_info.py +42 -0
  7. odoo/addons/shopfloor/actions/data.py +329 -0
  8. odoo/addons/shopfloor/actions/data_detail.py +154 -0
  9. odoo/addons/shopfloor/actions/inventory.py +150 -0
  10. odoo/addons/shopfloor/actions/location_content_transfer_sorter.py +89 -0
  11. odoo/addons/shopfloor/actions/message.py +846 -0
  12. odoo/addons/shopfloor/actions/move_line_search.py +119 -0
  13. odoo/addons/shopfloor/actions/packaging.py +59 -0
  14. odoo/addons/shopfloor/actions/savepoint.py +44 -0
  15. odoo/addons/shopfloor/actions/schema.py +182 -0
  16. odoo/addons/shopfloor/actions/schema_detail.py +98 -0
  17. odoo/addons/shopfloor/actions/search.py +187 -0
  18. odoo/addons/shopfloor/actions/stock.py +239 -0
  19. odoo/addons/shopfloor/actions/stock_unreserve.py +66 -0
  20. odoo/addons/shopfloor/components/__init__.py +5 -0
  21. odoo/addons/shopfloor/components/scan_handler_location.py +26 -0
  22. odoo/addons/shopfloor/components/scan_handler_lot.py +26 -0
  23. odoo/addons/shopfloor/components/scan_handler_package.py +26 -0
  24. odoo/addons/shopfloor/components/scan_handler_product.py +26 -0
  25. odoo/addons/shopfloor/components/scan_handler_transfer.py +26 -0
  26. odoo/addons/shopfloor/data/shopfloor_scenario_data.xml +73 -0
  27. odoo/addons/shopfloor/demo/shopfloor_app_demo.xml +12 -0
  28. odoo/addons/shopfloor/demo/shopfloor_menu_demo.xml +64 -0
  29. odoo/addons/shopfloor/demo/shopfloor_profile_demo.xml +8 -0
  30. odoo/addons/shopfloor/demo/stock_picking_type_demo.xml +93 -0
  31. odoo/addons/shopfloor/docs/checkout_diag_seq.plantuml +61 -0
  32. odoo/addons/shopfloor/docs/checkout_diag_seq.png +0 -0
  33. odoo/addons/shopfloor/docs/cluster_picking_diag_seq.plantuml +112 -0
  34. odoo/addons/shopfloor/docs/cluster_picking_diag_seq.png +0 -0
  35. odoo/addons/shopfloor/docs/delivery_diag_seq.plantuml +56 -0
  36. odoo/addons/shopfloor/docs/delivery_diag_seq.png +0 -0
  37. odoo/addons/shopfloor/docs/location_content_transfer_diag_seq.plantuml +66 -0
  38. odoo/addons/shopfloor/docs/location_content_transfer_diag_seq.png +0 -0
  39. odoo/addons/shopfloor/docs/oca_logo.png +0 -0
  40. odoo/addons/shopfloor/docs/single_pack_transfer_diag_seq.plantuml +36 -0
  41. odoo/addons/shopfloor/docs/single_pack_transfer_diag_seq.png +0 -0
  42. odoo/addons/shopfloor/docs/zone_picking_diag_seq.plantuml +85 -0
  43. odoo/addons/shopfloor/docs/zone_picking_diag_seq.png +0 -0
  44. odoo/addons/shopfloor/exceptions.py +6 -0
  45. odoo/addons/shopfloor/i18n/ca.po +1802 -0
  46. odoo/addons/shopfloor/i18n/de.po +1791 -0
  47. odoo/addons/shopfloor/i18n/es_AR.po +2147 -0
  48. odoo/addons/shopfloor/i18n/pt_BR.po +1791 -0
  49. odoo/addons/shopfloor/i18n/shopfloor.pot +1877 -0
  50. odoo/addons/shopfloor/models/__init__.py +12 -0
  51. odoo/addons/shopfloor/models/priority_postpone_mixin.py +41 -0
  52. odoo/addons/shopfloor/models/shopfloor_app.py +9 -0
  53. odoo/addons/shopfloor/models/shopfloor_menu.py +436 -0
  54. odoo/addons/shopfloor/models/stock_location.py +76 -0
  55. odoo/addons/shopfloor/models/stock_move.py +119 -0
  56. odoo/addons/shopfloor/models/stock_move_line.py +307 -0
  57. odoo/addons/shopfloor/models/stock_package_level.py +50 -0
  58. odoo/addons/shopfloor/models/stock_picking.py +118 -0
  59. odoo/addons/shopfloor/models/stock_picking_batch.py +41 -0
  60. odoo/addons/shopfloor/models/stock_picking_type.py +26 -0
  61. odoo/addons/shopfloor/models/stock_quant.py +31 -0
  62. odoo/addons/shopfloor/models/stock_quant_package.py +101 -0
  63. odoo/addons/shopfloor/readme/CONTRIBUTORS.rst +18 -0
  64. odoo/addons/shopfloor/readme/CREDITS.rst +5 -0
  65. odoo/addons/shopfloor/readme/DESCRIPTION.rst +17 -0
  66. odoo/addons/shopfloor/readme/HISTORY.rst +4 -0
  67. odoo/addons/shopfloor/readme/ROADMAP.rst +4 -0
  68. odoo/addons/shopfloor/readme/USAGE.rst +6 -0
  69. odoo/addons/shopfloor/security/groups.xml +17 -0
  70. odoo/addons/shopfloor/services/__init__.py +16 -0
  71. odoo/addons/shopfloor/services/checkout.py +1763 -0
  72. odoo/addons/shopfloor/services/cluster_picking.py +1628 -0
  73. odoo/addons/shopfloor/services/delivery.py +828 -0
  74. odoo/addons/shopfloor/services/forms/__init__.py +1 -0
  75. odoo/addons/shopfloor/services/forms/picking_form.py +78 -0
  76. odoo/addons/shopfloor/services/location_content_transfer.py +1194 -0
  77. odoo/addons/shopfloor/services/menu.py +60 -0
  78. odoo/addons/shopfloor/services/picking_batch.py +126 -0
  79. odoo/addons/shopfloor/services/service.py +101 -0
  80. odoo/addons/shopfloor/services/single_pack_transfer.py +366 -0
  81. odoo/addons/shopfloor/services/zone_picking.py +1938 -0
  82. odoo/addons/shopfloor/static/description/icon.png +0 -0
  83. odoo/addons/shopfloor/static/description/index.html +500 -0
  84. odoo/addons/shopfloor/tests/__init__.py +83 -0
  85. odoo/addons/shopfloor/tests/common.py +324 -0
  86. odoo/addons/shopfloor/tests/models.py +29 -0
  87. odoo/addons/shopfloor/tests/test_actions_change_package_lot.py +1175 -0
  88. odoo/addons/shopfloor/tests/test_actions_data.py +376 -0
  89. odoo/addons/shopfloor/tests/test_actions_data_base.py +244 -0
  90. odoo/addons/shopfloor/tests/test_actions_data_detail.py +322 -0
  91. odoo/addons/shopfloor/tests/test_actions_search.py +248 -0
  92. odoo/addons/shopfloor/tests/test_actions_stock.py +48 -0
  93. odoo/addons/shopfloor/tests/test_checkout_auto_post.py +67 -0
  94. odoo/addons/shopfloor/tests/test_checkout_base.py +81 -0
  95. odoo/addons/shopfloor/tests/test_checkout_cancel_line.py +154 -0
  96. odoo/addons/shopfloor/tests/test_checkout_change_packaging.py +184 -0
  97. odoo/addons/shopfloor/tests/test_checkout_done.py +133 -0
  98. odoo/addons/shopfloor/tests/test_checkout_list_delivery_packaging.py +131 -0
  99. odoo/addons/shopfloor/tests/test_checkout_list_package.py +327 -0
  100. odoo/addons/shopfloor/tests/test_checkout_new_package.py +88 -0
  101. odoo/addons/shopfloor/tests/test_checkout_no_package.py +95 -0
  102. odoo/addons/shopfloor/tests/test_checkout_scan.py +174 -0
  103. odoo/addons/shopfloor/tests/test_checkout_scan_line.py +377 -0
  104. odoo/addons/shopfloor/tests/test_checkout_scan_line_base.py +25 -0
  105. odoo/addons/shopfloor/tests/test_checkout_scan_line_no_prefill_qty.py +91 -0
  106. odoo/addons/shopfloor/tests/test_checkout_scan_package_action.py +451 -0
  107. odoo/addons/shopfloor/tests/test_checkout_scan_package_action_no_prefill_qty.py +107 -0
  108. odoo/addons/shopfloor/tests/test_checkout_select.py +74 -0
  109. odoo/addons/shopfloor/tests/test_checkout_select_line.py +130 -0
  110. odoo/addons/shopfloor/tests/test_checkout_select_package_base.py +64 -0
  111. odoo/addons/shopfloor/tests/test_checkout_set_qty.py +257 -0
  112. odoo/addons/shopfloor/tests/test_checkout_summary.py +69 -0
  113. odoo/addons/shopfloor/tests/test_cluster_picking_base.py +83 -0
  114. odoo/addons/shopfloor/tests/test_cluster_picking_batch.py +109 -0
  115. odoo/addons/shopfloor/tests/test_cluster_picking_change_pack_lot.py +111 -0
  116. odoo/addons/shopfloor/tests/test_cluster_picking_is_zero.py +98 -0
  117. odoo/addons/shopfloor/tests/test_cluster_picking_scan_destination.py +376 -0
  118. odoo/addons/shopfloor/tests/test_cluster_picking_scan_destination_no_prefill_qty.py +115 -0
  119. odoo/addons/shopfloor/tests/test_cluster_picking_scan_line.py +402 -0
  120. odoo/addons/shopfloor/tests/test_cluster_picking_scan_line_location_or_pack_first.py +114 -0
  121. odoo/addons/shopfloor/tests/test_cluster_picking_scan_line_no_prefill_qty.py +70 -0
  122. odoo/addons/shopfloor/tests/test_cluster_picking_select.py +387 -0
  123. odoo/addons/shopfloor/tests/test_cluster_picking_skip.py +90 -0
  124. odoo/addons/shopfloor/tests/test_cluster_picking_stock_issue.py +364 -0
  125. odoo/addons/shopfloor/tests/test_cluster_picking_unload.py +911 -0
  126. odoo/addons/shopfloor/tests/test_delivery_base.py +155 -0
  127. odoo/addons/shopfloor/tests/test_delivery_done.py +108 -0
  128. odoo/addons/shopfloor/tests/test_delivery_list_stock_picking.py +49 -0
  129. odoo/addons/shopfloor/tests/test_delivery_reset_qty_done_line.py +119 -0
  130. odoo/addons/shopfloor/tests/test_delivery_reset_qty_done_pack.py +107 -0
  131. odoo/addons/shopfloor/tests/test_delivery_scan_deliver.py +557 -0
  132. odoo/addons/shopfloor/tests/test_delivery_select.py +38 -0
  133. odoo/addons/shopfloor/tests/test_delivery_set_qty_done_line.py +91 -0
  134. odoo/addons/shopfloor/tests/test_delivery_set_qty_done_pack.py +135 -0
  135. odoo/addons/shopfloor/tests/test_delivery_sublocation.py +180 -0
  136. odoo/addons/shopfloor/tests/test_location_content_transfer_base.py +136 -0
  137. odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py +125 -0
  138. odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py +509 -0
  139. odoo/addons/shopfloor/tests/test_location_content_transfer_putaway.py +143 -0
  140. odoo/addons/shopfloor/tests/test_location_content_transfer_scan_location.py +34 -0
  141. odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_all.py +343 -0
  142. odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_package_or_line.py +1074 -0
  143. odoo/addons/shopfloor/tests/test_location_content_transfer_single.py +748 -0
  144. odoo/addons/shopfloor/tests/test_location_content_transfer_start.py +359 -0
  145. odoo/addons/shopfloor/tests/test_menu_base.py +261 -0
  146. odoo/addons/shopfloor/tests/test_menu_counters.py +61 -0
  147. odoo/addons/shopfloor/tests/test_misc.py +25 -0
  148. odoo/addons/shopfloor/tests/test_move_action_assign.py +87 -0
  149. odoo/addons/shopfloor/tests/test_openapi.py +21 -0
  150. odoo/addons/shopfloor/tests/test_picking_form.py +62 -0
  151. odoo/addons/shopfloor/tests/test_scan_anything.py +49 -0
  152. odoo/addons/shopfloor/tests/test_single_pack_transfer.py +1121 -0
  153. odoo/addons/shopfloor/tests/test_single_pack_transfer_base.py +32 -0
  154. odoo/addons/shopfloor/tests/test_single_pack_transfer_putaway.py +104 -0
  155. odoo/addons/shopfloor/tests/test_stock_split.py +204 -0
  156. odoo/addons/shopfloor/tests/test_user.py +42 -0
  157. odoo/addons/shopfloor/tests/test_zone_picking_base.py +608 -0
  158. odoo/addons/shopfloor/tests/test_zone_picking_change_pack_lot.py +140 -0
  159. odoo/addons/shopfloor/tests/test_zone_picking_select_line.py +723 -0
  160. odoo/addons/shopfloor/tests/test_zone_picking_select_line_first_scan_location.py +207 -0
  161. odoo/addons/shopfloor/tests/test_zone_picking_select_line_first_scan_location.py.bak +202 -0
  162. odoo/addons/shopfloor/tests/test_zone_picking_select_line_no_prefill_qty.py +107 -0
  163. odoo/addons/shopfloor/tests/test_zone_picking_select_picking_type.py +26 -0
  164. odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination.py +643 -0
  165. odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_no_prefill_qty.py +146 -0
  166. odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_pick_pack.py +241 -0
  167. odoo/addons/shopfloor/tests/test_zone_picking_start.py +206 -0
  168. odoo/addons/shopfloor/tests/test_zone_picking_stock_issue.py +121 -0
  169. odoo/addons/shopfloor/tests/test_zone_picking_unload_all.py +353 -0
  170. odoo/addons/shopfloor/tests/test_zone_picking_unload_buffer_lines.py +113 -0
  171. odoo/addons/shopfloor/tests/test_zone_picking_unload_set_destination.py +374 -0
  172. odoo/addons/shopfloor/tests/test_zone_picking_unload_single.py +123 -0
  173. odoo/addons/shopfloor/tests/test_zone_picking_zero_check.py +43 -0
  174. odoo/addons/shopfloor/utils.py +13 -0
  175. odoo/addons/shopfloor/views/shopfloor_menu.xml +167 -0
  176. odoo/addons/shopfloor/views/stock_location.xml +20 -0
  177. odoo/addons/shopfloor/views/stock_move_line.xml +52 -0
  178. odoo/addons/shopfloor/views/stock_picking_type.xml +19 -0
  179. odoo_addon_shopfloor-16.0.1.0.0.24.dist-info/METADATA +192 -0
  180. odoo_addon_shopfloor-16.0.1.0.0.24.dist-info/RECORD +182 -0
  181. odoo_addon_shopfloor-16.0.1.0.0.24.dist-info/WHEEL +5 -0
  182. odoo_addon_shopfloor-16.0.1.0.0.24.dist-info/top_level.txt +1 -0
@@ -0,0 +1,31 @@
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 odoo import models
4
+
5
+
6
+ class StockQuant(models.Model):
7
+ _inherit = "stock.quant"
8
+
9
+ def user_has_groups(self, groups):
10
+ if self.env.context.get("_sf_inventory"):
11
+ allow_groups = groups.split(",")
12
+ # action_validate checks if the user is a manager, but
13
+ # in shopfloor, we want to programmatically create and
14
+ # validate inventories under the hood. sudo sets the su
15
+ # flag but not the group: allow to bypass the check when
16
+ # sudo is used.
17
+ if "stock.group_stock_manager" in allow_groups and self.env.su:
18
+ return True
19
+ return super().user_has_groups(groups)
20
+
21
+ def _is_inventory_mode(self):
22
+ """Used to control whether a quant was written on or created during an
23
+ "inventory session", meaning a mode where we need to create the stock.move
24
+ record necessary to be consistent with the `inventory_quantity` field.
25
+ """
26
+ # The default method check if we have the stock.group_stock_manager
27
+ # group, however, we want to force using this mode from shopfloor
28
+ # (cluster picking) when sudo is used and the user is a stock user.
29
+ if self.env.context.get("inventory_mode") is True and self.env.su:
30
+ return True
31
+ return super()._is_inventory_mode()
@@ -0,0 +1,101 @@
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 odoo import _, api, exceptions, fields, models
4
+
5
+
6
+ class StockQuantPackage(models.Model):
7
+ _inherit = "stock.quant.package"
8
+
9
+ move_line_ids = fields.One2many(
10
+ comodel_name="stock.move.line",
11
+ inverse_name="package_id",
12
+ readonly=True,
13
+ help="Technical field. Move lines moving this package.",
14
+ )
15
+ planned_move_line_ids = fields.One2many(
16
+ comodel_name="stock.move.line",
17
+ inverse_name="result_package_id",
18
+ domain=[("state", "not in", ("done", "cancel"))],
19
+ readonly=True,
20
+ help="Technical field. Move lines for which destination is this package.",
21
+ )
22
+ # TODO: review other fields
23
+ reserved_move_line_ids = fields.One2many(
24
+ comodel_name="stock.move.line",
25
+ compute="_compute_reserved_move_lines",
26
+ )
27
+ shopfloor_weight = fields.Float(
28
+ "Shopfloor weight (kg)",
29
+ digits="Product Unit of Measure",
30
+ compute="_compute_shopfloor_weight",
31
+ help="Real pack weight or the estimated one.",
32
+ )
33
+
34
+ def _get_reserved_move_lines(self):
35
+ return self.env["stock.move.line"].search(
36
+ [("package_id", "=", self.id), ("state", "not in", ("done", "cancel"))]
37
+ )
38
+
39
+ @api.depends("move_line_ids.state")
40
+ def _compute_reserved_move_lines(self):
41
+ for rec in self:
42
+ rec.update({"reserved_move_line_ids": rec._get_reserved_move_lines()})
43
+
44
+ @api.depends("pack_weight", "estimated_pack_weight_kg")
45
+ @api.depends_context("picking_id")
46
+ def _compute_shopfloor_weight(self):
47
+ for rec in self:
48
+ rec.shopfloor_weight = rec.pack_weight or rec.estimated_pack_weight_kg
49
+
50
+ # TODO: we should refactor this like
51
+
52
+ # source_planned_move_line_ids
53
+ # destination_planned_move_line_ids
54
+
55
+ # filter out done/cancel lines
56
+
57
+ @api.constrains("name")
58
+ def _constrain_name_unique(self):
59
+ for rec in self:
60
+ if self.search_count([("name", "=", rec.name), ("id", "!=", rec.id)]):
61
+ raise exceptions.UserError(_("Package name must be unique!"))
62
+
63
+ def move_package_to_location(self, dest_location):
64
+ """Create inventories to move a package to a different location
65
+
66
+ It should be called when the package is - in real life - already in
67
+ the destination. It creates an inventory to remove the package from
68
+ the source location and a second inventory to place the package
69
+ in the destination (to reflect the reality).
70
+
71
+ The source location is the current location of the package.
72
+ """
73
+ quant_values = []
74
+ # sudo and the key in context activate is_inventory_mode on quants
75
+ quants = self.quant_ids.sudo().with_context(
76
+ inventory_mode=True, _sf_inventory=True
77
+ )
78
+ for quant in quants:
79
+ quantity = quant.quantity
80
+ quant.inventory_quantity_auto_apply = 0
81
+ quant_values.append(
82
+ self._move_package_quant_move_values(quant, dest_location, quantity)
83
+ )
84
+
85
+ quant_model = (
86
+ self.env["stock.quant"]
87
+ .sudo()
88
+ .with_context(inventory_mode=True, _sf_inventory=True)
89
+ )
90
+ quant_model.create(quant_values)
91
+ return
92
+
93
+ def _move_package_quant_move_values(self, quant, location, quantity):
94
+ return {
95
+ "product_id": quant.product_id.id,
96
+ "inventory_quantity_auto_apply": quantity,
97
+ "location_id": location.id,
98
+ "lot_id": quant.lot_id.id,
99
+ "package_id": quant.package_id.id,
100
+ "owner_id": quant.owner_id.id,
101
+ }
@@ -0,0 +1,18 @@
1
+ * Guewen Baconnier <guewen.baconnier@camptocamp.com>
2
+ * Simone Orsi <simahawk@gmail.com>
3
+ * Sébastien Alix <sebastien.alix@camptocamp.com>
4
+ * Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
5
+ * Benoit Guillot <benoit.guillot@akretion.com>
6
+ * Thierry Ducrest <thierry.ducrest@camptocamp.com>
7
+ * Raphaël Reverdy <raphael.reverdy@akretion.com>
8
+ * Jacques-Etienne Baudoux <je@bcim.be>
9
+ * Juan Miguel Sánchez Arce <juan.sanchez@camptocamp.com>
10
+ * Michael Tietz (MT Software) <mtietz@mt-software.de>
11
+ * Souheil Bejaoui <souheil.bejaoui@acsone.eu>
12
+ * Laurent Mignon <laurent.mignon@acsone.eu>
13
+
14
+ Design
15
+ ~~~~~~
16
+
17
+ * Joël Grand-Guillaume <joel.grandguillaume@camptocamp.com>
18
+ * Jacques-Etienne Baudoux <je@bcim.be>
@@ -0,0 +1,5 @@
1
+ **Financial support**
2
+
3
+ * Cosanum
4
+ * Camptocamp R&D
5
+ * Akretion R&D
@@ -0,0 +1,17 @@
1
+ Shopfloor is a barcode scanner application for internal warehouse operations.
2
+
3
+ The application supports scenarios, to relate to Operation Types:
4
+
5
+ * Cluster Picking
6
+ * Zone Picking
7
+ * Checkout/Packing
8
+ * Delivery
9
+ * Location Content Transfer
10
+ * Single Pack Transfer
11
+
12
+ This module provides REST APIs to support the scenarios. It needs a frontend
13
+ to consume the backend APIs and provide screens for users on barcode devices.
14
+ A default front-end application is provided by ``shopfloor_mobile``.
15
+
16
+ | Note: if you want to enable a new scenario on an existing application, you must trigger the registry sync on the shopfloor.app in a post_init_hook or a post-migrate script.
17
+ | See an example `here <https://github.com/OCA/wms/pull/520/commits/bccdfd445a9bc943998c4848f183a076e8459a98>`_.
@@ -0,0 +1,4 @@
1
+ 13.0.1.0.0
2
+ ~~~~~~~~~~
3
+
4
+ First official version.
@@ -0,0 +1,4 @@
1
+ * improve documentation
2
+ * split out scenario components to their own modules
3
+ * maybe split common stock features to `shopfloor_stock_base`
4
+ and move scenario to `shopfloor_wms`?
@@ -0,0 +1,6 @@
1
+ An API key is created in the Demo data (for development), using
2
+ the Demo user. The key to use in the HTTP header ``API-KEY`` is: 72B044F7AC780DAC
3
+
4
+ Curl example::
5
+
6
+ curl -X POST "http://localhost:8069/shopfloor/user/menu" -H "accept: */*" -H "Content-Type: application/json" -H "API-KEY: 72B044F7AC780DAC"
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2021 ACSONE SA/NV
3
+ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
4
+ <odoo noupdate="1">
5
+ <record model="res.groups" id="stock.group_stock_user">
6
+ <field
7
+ name="implied_ids"
8
+ eval="[(4, ref('shopfloor_base.group_shopfloor_user'))]"
9
+ />
10
+ </record>
11
+ <record model="res.groups" id="stock.group_stock_manager">
12
+ <field
13
+ name="implied_ids"
14
+ eval="[(4, ref('shopfloor_base.group_shopfloor_manager'))]"
15
+ />
16
+ </record>
17
+ </odoo>
@@ -0,0 +1,16 @@
1
+ # core classes
2
+ from . import service
3
+
4
+ # generic services
5
+ from . import menu
6
+
7
+ # process services
8
+ from . import checkout
9
+ from . import zone_picking
10
+ from . import cluster_picking
11
+ from . import delivery
12
+ from . import location_content_transfer
13
+ from . import single_pack_transfer
14
+
15
+ # forms
16
+ from . import forms