odoo-addon-shopfloor 16.0.2.12.0.1__py3-none-any.whl → 18.0.0.1.1__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 (105) hide show
  1. odoo/addons/shopfloor/README.rst +79 -52
  2. odoo/addons/shopfloor/__manifest__.py +11 -4
  3. odoo/addons/shopfloor/actions/__init__.py +0 -1
  4. odoo/addons/shopfloor/actions/change_package_lot.py +4 -6
  5. odoo/addons/shopfloor/actions/data.py +7 -6
  6. odoo/addons/shopfloor/actions/inventory.py +1 -1
  7. odoo/addons/shopfloor/actions/message.py +1 -1
  8. odoo/addons/shopfloor/actions/move_line_search.py +1 -1
  9. odoo/addons/shopfloor/actions/search.py +8 -32
  10. odoo/addons/shopfloor/actions/stock.py +8 -7
  11. odoo/addons/shopfloor/i18n/ca.po +0 -5
  12. odoo/addons/shopfloor/i18n/de.po +0 -5
  13. odoo/addons/shopfloor/i18n/es_AR.po +0 -5
  14. odoo/addons/shopfloor/i18n/it.po +2 -8
  15. odoo/addons/shopfloor/i18n/pt_BR.po +0 -5
  16. odoo/addons/shopfloor/i18n/shopfloor.pot +7 -194
  17. odoo/addons/shopfloor/models/stock_location.py +5 -5
  18. odoo/addons/shopfloor/models/stock_move.py +24 -7
  19. odoo/addons/shopfloor/models/stock_move_line.py +29 -82
  20. odoo/addons/shopfloor/models/stock_picking.py +8 -6
  21. odoo/addons/shopfloor/models/stock_quant_package.py +2 -2
  22. odoo/addons/shopfloor/readme/CONTRIBUTORS.md +17 -0
  23. odoo/addons/shopfloor/readme/CREDITS.md +5 -0
  24. odoo/addons/shopfloor/readme/DESCRIPTION.md +37 -0
  25. odoo/addons/shopfloor/readme/{HISTORY.rst → HISTORY.md} +1 -2
  26. odoo/addons/shopfloor/readme/ROADMAP.md +10 -0
  27. odoo/addons/shopfloor/readme/USAGE.md +6 -0
  28. odoo/addons/shopfloor/services/checkout.py +9 -9
  29. odoo/addons/shopfloor/services/cluster_picking.py +2 -2
  30. odoo/addons/shopfloor/services/delivery.py +4 -6
  31. odoo/addons/shopfloor/services/forms/picking_form.py +4 -1
  32. odoo/addons/shopfloor/services/location_content_transfer.py +1 -1
  33. odoo/addons/shopfloor/services/single_pack_transfer.py +1 -1
  34. odoo/addons/shopfloor/services/zone_picking.py +5 -9
  35. odoo/addons/shopfloor/static/description/index.html +41 -18
  36. odoo/addons/shopfloor/tests/__init__.py +74 -73
  37. odoo/addons/shopfloor/tests/common.py +9 -9
  38. odoo/addons/shopfloor/tests/test_actions_change_package_lot.py +104 -71
  39. odoo/addons/shopfloor/tests/test_actions_data.py +17 -21
  40. odoo/addons/shopfloor/tests/test_actions_data_base.py +9 -3
  41. odoo/addons/shopfloor/tests/test_actions_data_detail.py +17 -19
  42. odoo/addons/shopfloor/tests/test_actions_search.py +2 -1
  43. odoo/addons/shopfloor/tests/test_actions_stock.py +4 -1
  44. odoo/addons/shopfloor/tests/test_checkout_auto_post.py +3 -3
  45. odoo/addons/shopfloor/tests/test_checkout_base.py +1 -1
  46. odoo/addons/shopfloor/tests/test_checkout_list_delivery_packaging.py +1 -1
  47. odoo/addons/shopfloor/tests/test_checkout_list_package.py +4 -4
  48. odoo/addons/shopfloor/tests/test_checkout_new_package.py +3 -3
  49. odoo/addons/shopfloor/tests/test_checkout_no_package.py +3 -3
  50. odoo/addons/shopfloor/tests/test_checkout_scan_dest_location.py +1 -1
  51. odoo/addons/shopfloor/tests/test_checkout_scan_package_action.py +11 -11
  52. odoo/addons/shopfloor/tests/test_checkout_select_package_base.py +1 -1
  53. odoo/addons/shopfloor/tests/test_checkout_set_qty.py +17 -17
  54. odoo/addons/shopfloor/tests/test_checkout_summary.py +2 -2
  55. odoo/addons/shopfloor/tests/test_cluster_picking_base.py +1 -1
  56. odoo/addons/shopfloor/tests/test_cluster_picking_batch.py +2 -2
  57. odoo/addons/shopfloor/tests/test_cluster_picking_change_pack_lot.py +1 -1
  58. odoo/addons/shopfloor/tests/test_cluster_picking_is_zero.py +1 -1
  59. odoo/addons/shopfloor/tests/test_cluster_picking_scan_destination.py +17 -19
  60. odoo/addons/shopfloor/tests/test_cluster_picking_scan_line_no_prefill_qty.py +1 -1
  61. odoo/addons/shopfloor/tests/test_cluster_picking_stock_issue.py +5 -5
  62. odoo/addons/shopfloor/tests/test_delivery_base.py +4 -6
  63. odoo/addons/shopfloor/tests/test_delivery_done.py +1 -1
  64. odoo/addons/shopfloor/tests/test_delivery_reset_qty_done_line.py +1 -1
  65. odoo/addons/shopfloor/tests/test_delivery_reset_qty_done_pack.py +1 -1
  66. odoo/addons/shopfloor/tests/test_delivery_scan_deliver.py +6 -6
  67. odoo/addons/shopfloor/tests/test_location_content_transfer_base.py +2 -2
  68. odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py +8 -8
  69. odoo/addons/shopfloor/tests/test_location_content_transfer_set_destination_package_or_line.py +41 -41
  70. odoo/addons/shopfloor/tests/test_location_content_transfer_single.py +3 -3
  71. odoo/addons/shopfloor/tests/test_menu_base.py +4 -4
  72. odoo/addons/shopfloor/tests/test_move_action_assign.py +19 -4
  73. odoo/addons/shopfloor/tests/test_single_pack_transfer.py +3 -3
  74. odoo/addons/shopfloor/tests/test_stock_split.py +77 -17
  75. odoo/addons/shopfloor/tests/test_zone_picking_base.py +5 -5
  76. odoo/addons/shopfloor/tests/test_zone_picking_change_pack_lot.py +2 -2
  77. odoo/addons/shopfloor/tests/test_zone_picking_complete_mix_pack_flux.py +2 -2
  78. odoo/addons/shopfloor/tests/test_zone_picking_require_destination_package.py +3 -3
  79. odoo/addons/shopfloor/tests/test_zone_picking_select_line.py +4 -4
  80. odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination.py +29 -29
  81. odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_package_not_allowed.py +2 -2
  82. odoo/addons/shopfloor/tests/test_zone_picking_set_line_destination_pick_pack.py +12 -12
  83. odoo/addons/shopfloor/tests/test_zone_picking_start.py +1 -1
  84. odoo/addons/shopfloor/tests/test_zone_picking_unload_all.py +12 -12
  85. odoo/addons/shopfloor/tests/test_zone_picking_unload_buffer_lines.py +4 -4
  86. odoo/addons/shopfloor/tests/test_zone_picking_unload_set_destination.py +10 -10
  87. odoo/addons/shopfloor/tests/test_zone_picking_unload_single.py +3 -3
  88. odoo/addons/shopfloor/views/shopfloor_menu.xml +33 -102
  89. odoo/addons/shopfloor/views/stock_move_line.xml +2 -2
  90. odoo/addons/shopfloor/views/stock_picking_type.xml +1 -1
  91. odoo_addon_shopfloor-18.0.0.1.1.dist-info/METADATA +222 -0
  92. {odoo_addon_shopfloor-16.0.2.12.0.1.dist-info → odoo_addon_shopfloor-18.0.0.1.1.dist-info}/RECORD +94 -98
  93. {odoo_addon_shopfloor-16.0.2.12.0.1.dist-info → odoo_addon_shopfloor-18.0.0.1.1.dist-info}/WHEEL +1 -1
  94. odoo_addon_shopfloor-18.0.0.1.1.dist-info/top_level.txt +1 -0
  95. odoo/addons/shopfloor/actions/barcode_parser.py +0 -44
  96. odoo/addons/shopfloor/migrations/16.0.2.0.0/post-migration.py +0 -41
  97. odoo/addons/shopfloor/migrations/16.0.2.4.2/post-init_search_move_line_options.py +0 -33
  98. odoo/addons/shopfloor/migrations/16.0.2.4.2/post-migration.py +0 -29
  99. odoo/addons/shopfloor/readme/CONTRIBUTORS.rst +0 -18
  100. odoo/addons/shopfloor/readme/CREDITS.rst +0 -5
  101. odoo/addons/shopfloor/readme/DESCRIPTION.rst +0 -17
  102. odoo/addons/shopfloor/readme/ROADMAP.rst +0 -4
  103. odoo/addons/shopfloor/readme/USAGE.rst +0 -6
  104. odoo_addon_shopfloor-16.0.2.12.0.1.dist-info/METADATA +0 -193
  105. odoo_addon_shopfloor-16.0.2.12.0.1.dist-info/top_level.txt +0 -1
@@ -21,7 +21,7 @@ class ZonePickingUnloadSetDestinationCase(ZonePickingCommonCase):
21
21
  .create(
22
22
  {
23
23
  "name": "Product Z",
24
- "type": "product",
24
+ "is_storable": True,
25
25
  "default_code": "Z",
26
26
  "barcode": "Z",
27
27
  "weight": 7,
@@ -58,7 +58,7 @@ class ZonePickingUnloadSetDestinationCase(ZonePickingCommonCase):
58
58
  # set the destination package
59
59
  self.service._set_destination_package(
60
60
  move_line,
61
- move_line.reserved_uom_qty,
61
+ move_line.quantity,
62
62
  self.free_package,
63
63
  )
64
64
  response = self.service.dispatch(
@@ -80,7 +80,7 @@ class ZonePickingUnloadSetDestinationCase(ZonePickingCommonCase):
80
80
  # set the destination package
81
81
  self.service._set_destination_package(
82
82
  move_line,
83
- move_line.reserved_uom_qty,
83
+ move_line.quantity,
84
84
  self.free_package,
85
85
  )
86
86
  response = self.service.dispatch(
@@ -107,7 +107,7 @@ class ZonePickingUnloadSetDestinationCase(ZonePickingCommonCase):
107
107
  # set the destination package
108
108
  self.service._set_destination_package(
109
109
  move_line,
110
- move_line.reserved_uom_qty,
110
+ move_line.quantity,
111
111
  self.free_package,
112
112
  )
113
113
  response = self.service.dispatch(
@@ -155,7 +155,7 @@ class ZonePickingUnloadSetDestinationCase(ZonePickingCommonCase):
155
155
  # set the destination package
156
156
  self.service._set_destination_package(
157
157
  move_line,
158
- move_line.reserved_uom_qty,
158
+ move_line.quantity,
159
159
  self.free_package,
160
160
  )
161
161
  move_line.location_dest_id = packing_sublocation1
@@ -202,7 +202,7 @@ class ZonePickingUnloadSetDestinationCase(ZonePickingCommonCase):
202
202
  # set the destination package
203
203
  self.service._set_destination_package(
204
204
  move_line,
205
- move_line.reserved_uom_qty,
205
+ move_line.quantity,
206
206
  self.free_package,
207
207
  )
208
208
  move_line.location_dest_id = packing_sublocation1
@@ -242,7 +242,7 @@ class ZonePickingUnloadSetDestinationCase(ZonePickingCommonCase):
242
242
  # set the destination package
243
243
  self.service._set_destination_package(
244
244
  move_line,
245
- move_line.reserved_uom_qty,
245
+ move_line.quantity,
246
246
  self.free_package,
247
247
  )
248
248
  response = self.service.dispatch(
@@ -279,7 +279,7 @@ class ZonePickingUnloadSetDestinationCase(ZonePickingCommonCase):
279
279
  ):
280
280
  self.service._set_destination_package(
281
281
  move_line,
282
- move_line.reserved_uom_qty,
282
+ move_line.quantity,
283
283
  package_dest,
284
284
  )
285
285
  free_package_line = move_lines.filtered(
@@ -323,7 +323,7 @@ class ZonePickingUnloadSetDestinationCase(ZonePickingCommonCase):
323
323
  self.assertEqual(self.picking_z.move_ids[0].product_uom_qty, 40)
324
324
  self.picking_z.action_assign()
325
325
  move_line = self.picking_z.move_line_ids
326
- self.assertEqual(move_line.reserved_uom_qty, 32)
326
+ self.assertEqual(move_line.quantity, 32)
327
327
  self.assertEqual(move_line.move_id.state, "partially_available")
328
328
  packing_sublocation = (
329
329
  self.env["stock.location"]
@@ -339,7 +339,7 @@ class ZonePickingUnloadSetDestinationCase(ZonePickingCommonCase):
339
339
  # set the destination package
340
340
  self.service._set_destination_package(
341
341
  move_line,
342
- move_line.reserved_uom_qty,
342
+ move_line.quantity,
343
343
  self.free_package,
344
344
  )
345
345
  response = self.service.dispatch(
@@ -24,7 +24,7 @@ class ZonePickingUnloadSingleCase(ZonePickingCommonCase):
24
24
  # => get back on 'unload_single' screen
25
25
  self.service._set_destination_package(
26
26
  move_line,
27
- move_line.reserved_uom_qty,
27
+ move_line.quantity,
28
28
  self.free_package,
29
29
  )
30
30
  response = self.service.dispatch(
@@ -77,7 +77,7 @@ class ZonePickingUnloadSingleCase(ZonePickingCommonCase):
77
77
  # set the destination package
78
78
  self.service._set_destination_package(
79
79
  move_line,
80
- move_line.reserved_uom_qty,
80
+ move_line.quantity,
81
81
  self.free_package,
82
82
  )
83
83
  response = self.service.dispatch(
@@ -104,7 +104,7 @@ class ZonePickingUnloadSingleCase(ZonePickingCommonCase):
104
104
  # set the destination package
105
105
  self.service._set_destination_package(
106
106
  move_line,
107
- move_line.reserved_uom_qty,
107
+ move_line.quantity,
108
108
  self.free_package,
109
109
  )
110
110
  response = self.service.dispatch(
@@ -12,205 +12,136 @@
12
12
  />
13
13
  </field>
14
14
  <group name="options" position="inside">
15
- <group
16
- name="move_create"
17
- attrs="{'invisible': [('move_create_is_possible', '=', False)]}"
18
- >
19
- <field name="move_create_is_possible" invisible="1" />
15
+ <group name="move_create" invisible="not move_create_is_possible">
20
16
  <field name="allow_move_create" />
21
17
  </group>
22
18
  <group
23
19
  name="unreserve_other_moves"
24
- attrs="{'invisible': [('unreserve_other_moves_is_possible', '=', False)]}"
20
+ invisible="not unreserve_other_moves_is_possible"
25
21
  >
26
- <field name="unreserve_other_moves_is_possible" invisible="1" />
27
22
  <field name="allow_unreserve_other_moves" />
28
23
  </group>
29
24
  <group
30
25
  name="ignore_no_putaway_available"
31
- attrs="{'invisible': [('ignore_no_putaway_available_is_possible', '=', False)]}"
26
+ invisible="not ignore_no_putaway_available_is_possible"
32
27
  >
33
- <field
34
- name="ignore_no_putaway_available_is_possible"
35
- invisible="1"
36
- />
37
28
  <field name="ignore_no_putaway_available" />
38
29
  </group>
39
30
  <group
40
31
  name="require_destination_package"
41
- attrs="{'invisible': [('require_destination_package_is_possible', '=', False)]}"
32
+ invisible="not require_destination_package_is_possible"
42
33
  >
43
- <field
44
- name="require_destination_package_is_possible"
45
- invisible="1"
46
- />
47
34
  <field name="require_destination_package" />
48
35
  </group>
49
36
  <group
50
37
  name="pick_pack_same_time"
51
- attrs="{'invisible': [('pick_pack_same_time_is_possible', '=', False)]}"
38
+ invisible="not pick_pack_same_time_is_possible"
52
39
  >
53
- <field name="pick_pack_same_time_is_possible" invisible="1" />
54
40
  <field name="pick_pack_same_time" />
55
41
  </group>
56
42
  <group
57
43
  name="force_reservation"
58
- attrs="{'invisible': [('allow_force_reservation_is_possible', '=', False)]}"
44
+ invisible="not allow_force_reservation_is_possible"
59
45
  >
60
- <field name="allow_force_reservation_is_possible" invisible="1" />
61
46
  <field name="allow_force_reservation" />
62
47
  </group>
63
48
  <group
64
49
  name="prepackaged_product"
65
- attrs="{'invisible': [('prepackaged_product_is_possible', '=', False)]}"
50
+ invisible="not prepackaged_product_is_possible"
66
51
  >
67
- <field name="prepackaged_product_is_possible" invisible="1" />
68
52
  <field name="allow_prepackaged_product" />
69
53
  </group>
70
54
  <group
71
55
  name="unload_at_destination"
72
- attrs="{'invisible': [('unload_package_at_destination_is_possible', '=', False)]}"
56
+ invisible="not unload_package_at_destination_is_possible"
73
57
  >
74
- <field
75
- name="unload_package_at_destination_is_possible"
76
- invisible="1"
77
- />
78
58
  <field
79
59
  name="unload_package_at_destination"
80
- attrs="{'readonly': [('pick_pack_same_time', '=', True)]}"
60
+ readonly="pick_pack_same_time"
81
61
  />
82
62
  </group>
83
63
  <group
84
64
  name="disable_full_bin_action"
85
- attrs="{'invisible': [('disable_full_bin_action_is_possible', '=', False)]}"
65
+ invisible="not disable_full_bin_action_is_possible"
86
66
  >
87
- <field name="disable_full_bin_action_is_possible" invisible="1" />
88
67
  <field name="disable_full_bin_action" />
89
68
  </group>
90
69
  <group
91
70
  name="multiple_move_single_pack"
92
- attrs="{'invisible': [('multiple_move_single_pack_is_possible', '=', False)]}"
71
+ invisible="not multiple_move_single_pack_is_possible"
93
72
  >
94
- <field name="multiple_move_single_pack_is_possible" invisible="1" />
95
73
  <field
96
74
  name="multiple_move_single_pack"
97
- attrs="{'readonly': [('pick_pack_same_time', '=', True)]}"
75
+ readonly="pick_pack_same_time"
98
76
  />
99
77
  </group>
100
- <group
101
- name="get_work"
102
- attrs="{'invisible': [('allow_get_work_is_possible', '=', False)]}"
103
- >
104
- <field name="allow_get_work_is_possible" invisible="1" />
78
+ <group name="get_work" invisible="not allow_get_work_is_possible">
105
79
  <field name="allow_get_work" />
106
80
  </group>
107
- <group
108
- name="no_prefill_qty"
109
- attrs="{'invisible': [('no_prefill_qty_is_possible', '=', False)]}"
110
- >
111
- <field name="no_prefill_qty_is_possible" invisible="1" />
81
+ <group name="no_prefill_qty" invisible="not no_prefill_qty_is_possible">
112
82
  <field name="no_prefill_qty" />
113
83
  </group>
114
84
  <group
115
85
  name="show_oneline_package_content"
116
- attrs="{'invisible': [('show_oneline_package_content_is_possible', '=', False)]}"
86
+ invisible="not show_oneline_package_content_is_possible"
117
87
  >
118
- <field
119
- name="show_oneline_package_content_is_possible"
120
- invisible="1"
121
- />
122
88
  <field name="show_oneline_package_content" />
123
89
  </group>
124
90
  <group
125
91
  name="scan_location_or_pack_first"
126
- attrs="{'invisible': [('scan_location_or_pack_first_is_possible', '=', False)]}"
92
+ invisible="not scan_location_or_pack_first_is_possible"
127
93
  >
128
- <field name="scenario_key" invisible="1" />
129
- <field
130
- name="scan_location_or_pack_first_is_possible"
131
- invisible="1"
132
- />
133
94
  <field name="scan_location_or_pack_first" />
134
- <div
135
- class="text-muted"
136
- attrs="{'invisible': [('scenario_key', '!=', 'checkout')]}"
137
- >
95
+ <div class="text-muted" invisible="scenario_key != 'checkout'">
138
96
  When choosing an order to pack, do not allow to scan a product.
139
97
  </div>
140
- <div
141
- class="text-muted"
142
- attrs="{'invisible': [('scenario_key', '!=', 'zone_picking')]}"
143
- >
98
+ <div class="text-muted" invisible="scenario_key != 'zone_picking'">
144
99
  When selecting a move line, force the user to first scan a package or a location and not a product or a lot.
145
100
  </div>
146
101
  <div
147
102
  class="text-muted"
148
- attrs="{'invisible': [('scenario_key', '!=', 'cluster_picking')]}"
103
+ invisible="scenario_key != 'cluster_picking'"
149
104
  >
150
105
  When selecting a move line, force the user to first scan a package or a location and not a product or a lot.
151
106
  </div>
152
107
  </group>
153
- <group
154
- name="auto_post_line"
155
- attrs="{'invisible': [('auto_post_line_is_possible', '=', False)]}"
156
- >
157
- <field name="auto_post_line_is_possible" invisible="1" />
108
+ <group name="auto_post_line" invisible="not auto_post_line_is_possible">
158
109
  <field name="auto_post_line" />
159
110
  </group>
160
111
  <group
161
112
  name="allow_alternative_destination"
162
- attrs="{'invisible': [('allow_alternative_destination_is_possible', '=', False)]}"
113
+ invisible="not allow_alternative_destination_is_possible"
163
114
  >
164
- <field
165
- name="allow_alternative_destination_is_possible"
166
- invisible="1"
167
- />
168
115
  <field name="allow_alternative_destination" />
169
116
  </group>
170
- <group
171
- name="allow_return"
172
- attrs="{'invisible': [('allow_return_is_possible', '=', False)]}"
173
- >
174
- <field name="allow_return_is_possible" invisible="1" />
117
+ <group name="allow_return" invisible="not allow_return_is_possible">
175
118
  <field name="allow_return" />
176
119
  </group>
177
120
  <group
178
121
  name="allow_alternative_destination_package"
179
- attrs="{'invisible': [('allow_alternative_destination_package_is_possible', '=', False)]}"
122
+ invisible="not allow_alternative_destination_package_is_possible"
180
123
  >
181
- <field
182
- name="allow_alternative_destination_package_is_possible"
183
- invisible="1"
184
- />
185
124
  <field name="allow_alternative_destination_package" />
186
125
  </group>
187
126
  <group
188
127
  name="search_move_line"
189
- attrs="{'invisible': [('move_line_search_sort_order_is_possible', '=', False), ('move_line_search_additional_domain_is_possible', '=', False)]}"
128
+ invisible="not move_line_search_sort_order_is_possible and not move_line_search_additional_domain_is_possible"
190
129
  >
191
- <field
192
- name="move_line_search_additional_domain_is_possible"
193
- invisible="1"
194
- />
195
130
  <field
196
131
  name="move_line_search_additional_domain"
197
132
  widget="domain"
198
133
  options="{'model': 'stock.move.line'}"
199
- attrs="{'invisible': [('move_line_search_additional_domain_is_possible', '=', False)]}"
200
- />
201
- <field
202
- name="move_line_search_sort_order_is_possible"
203
- invisible="1"
134
+ invisible="not move_line_search_additional_domain_is_possible"
204
135
  />
205
136
  <field
206
137
  name="move_line_search_sort_order"
207
- attrs="{'invisible': [('move_line_search_sort_order_is_possible', '=', False)]}"
138
+ invisible="not move_line_search_sort_order_is_possible"
208
139
  />
209
140
  <div
210
141
  class="o_cell o_wrap_label"
211
142
  style="margin-top: 4px;"
212
143
  colspan="2"
213
- attrs="{'invisible': ['|', ('move_line_search_sort_order_is_possible', '=', False), ('move_line_search_sort_order', '!=', 'custom_code')]}"
144
+ invisible="not move_line_search_sort_order_is_possible or move_line_search_sort_order != 'custom_code'"
214
145
  >
215
146
  <label
216
147
  class="text-900"
@@ -219,23 +150,23 @@
219
150
  <p>Three variables are available:</p>
220
151
  <ul>
221
152
  <li><code
222
- >line</code>: The move line for with the key must be computed.
153
+ >line</code>: The move line for with the key must be computed.
223
154
  </li>
224
155
  <li><code
225
- >get_sort_key_priority</code>: Return sort key to sort by priority. (return a tuple)
156
+ >get_sort_key_priority</code>: Return sort key to sort by priority. (return a tuple)
226
157
  </li>
227
158
  <li><code
228
- >get_sort_key_location</code>: Return sort key to sort by location. (return a tuple)
159
+ >get_sort_key_location</code>: Return sort key to sort by location. (return a tuple)
229
160
  </li>
230
161
  <li><code
231
- >get_sort_key_assigned_to_current_user</code>: Return sort key to get line assigned to current user first. (return a tuple)
162
+ >get_sort_key_assigned_to_current_user</code>: Return sort key to get line assigned to current user first. (return a tuple)
232
163
  </li>
233
164
  <li>To assign the key value: <code
234
- >key = get_sort_key_assigned_to_current_user(line) + (line.x, )</code></li>
165
+ >key = get_sort_key_assigned_to_current_user(line) + (line.x, )</code></li>
235
166
  </ul>
236
167
  <field
237
168
  name="move_line_search_sort_order_custom_code"
238
- attrs="{'invisible': ['|', ('move_line_search_sort_order_is_possible', '=', False), ('move_line_search_sort_order', '!=', 'custom_code')]}"
169
+ invisible="not move_line_search_sort_order_is_possible or move_line_search_sort_order != 'custom_code'"
239
170
  nolabel="1"
240
171
  />
241
172
  </div>
@@ -8,7 +8,7 @@
8
8
  ref="stock.view_stock_move_line_detailed_operation_tree"
9
9
  />
10
10
  <field name="arch" type="xml">
11
- <field name="qty_done" position="after">
11
+ <field name="product_uom_id" position="after">
12
12
  <!-- handy for testing / debugging -->
13
13
  <!-- TODO: make them readonly? -->
14
14
  <field
@@ -44,7 +44,7 @@
44
44
  <field name="model">stock.move.line</field>
45
45
  <field name="inherit_id" ref="stock.view_stock_move_line_operation_tree" />
46
46
  <field name="arch" type="xml">
47
- <field name="qty_done" position="after">
47
+ <field name="product_uom_id" position="after">
48
48
  <field name="shopfloor_user_id" />
49
49
  </field>
50
50
  </field>
@@ -10,7 +10,7 @@
10
10
  <field name="shopfloor_menu_ids" widget="many2many_tags" />
11
11
  <field
12
12
  name="shopfloor_zero_check"
13
- attrs="{'invisible': [('shopfloor_menu_ids', '=', [])]}"
13
+ invisible="not shopfloor_menu_ids"
14
14
  />
15
15
  </group>
16
16
  </xpath>
@@ -0,0 +1,222 @@
1
+ Metadata-Version: 2.1
2
+ Name: odoo-addon-shopfloor
3
+ Version: 18.0.0.1.1
4
+ Requires-Python: >=3.10
5
+ Requires-Dist: odoo-addon-base_rest==18.0.*
6
+ Requires-Dist: odoo-addon-jsonifier==18.0.*
7
+ Requires-Dist: odoo-addon-product_manufacturer==18.0.*
8
+ Requires-Dist: odoo-addon-product_packaging_level==18.0.*
9
+ Requires-Dist: odoo-addon-shopfloor_base==18.0.*
10
+ Requires-Dist: odoo-addon-stock_location_is_sublocation==18.0.*
11
+ Requires-Dist: odoo-addon-stock_move_line_change_lot==18.0.*
12
+ Requires-Dist: odoo-addon-stock_move_line_qty_picked==18.0.*
13
+ Requires-Dist: odoo-addon-stock_picking_completion_info==18.0.*
14
+ Requires-Dist: odoo-addon-stock_picking_delivery_link==18.0.*
15
+ Requires-Dist: odoo-addon-stock_picking_progress==18.0.*
16
+ Requires-Dist: odoo-addon-stock_quant_package_dimension==18.0.*
17
+ Requires-Dist: odoo-addon-stock_quant_package_product_packaging==18.0.*
18
+ Requires-Dist: odoo-addon-stock_storage_type==18.0.*
19
+ Requires-Dist: odoo==18.0.*
20
+ Summary: manage warehouse operations with barcode scanners
21
+ Home-page: https://github.com/OCA/stock-logistics-shopfloor
22
+ License: AGPL-3
23
+ Author: Camptocamp, BCIM, Akretion, Odoo Community Association (OCA)
24
+ Author-email: support@odoo-community.org
25
+ Classifier: Programming Language :: Python
26
+ Classifier: Framework :: Odoo
27
+ Classifier: Framework :: Odoo :: 18.0
28
+ Classifier: License :: OSI Approved :: GNU Affero General Public License v3
29
+ Classifier: Development Status :: 4 - Beta
30
+ Description-Content-Type: text/x-rst
31
+
32
+ .. image:: https://odoo-community.org/readme-banner-image
33
+ :target: https://odoo-community.org/get-involved?utm_source=readme
34
+ :alt: Odoo Community Association
35
+
36
+ =========
37
+ Shopfloor
38
+ =========
39
+
40
+ ..
41
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
42
+ !! This file is generated by oca-gen-addon-readme !!
43
+ !! changes will be overwritten. !!
44
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
45
+ !! source digest: sha256:739657eee1fdf9678a26382abddbac38fe12b94108c24fc7367b427639a5c8b9
46
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
47
+
48
+ .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
49
+ :target: https://odoo-community.org/page/development-status
50
+ :alt: Beta
51
+ .. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
52
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
53
+ :alt: License: AGPL-3
54
+ .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--shopfloor-lightgray.png?logo=github
55
+ :target: https://github.com/OCA/stock-logistics-shopfloor/tree/18.0/shopfloor
56
+ :alt: OCA/stock-logistics-shopfloor
57
+ .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
58
+ :target: https://translation.odoo-community.org/projects/stock-logistics-shopfloor-18-0/stock-logistics-shopfloor-18-0-shopfloor
59
+ :alt: Translate me on Weblate
60
+ .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
61
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/stock-logistics-shopfloor&target_branch=18.0
62
+ :alt: Try me on Runboat
63
+
64
+ |badge1| |badge2| |badge3| |badge4| |badge5|
65
+
66
+ Shopfloor is a barcode scanner application for internal warehouse
67
+ operations.
68
+
69
+ The application supports scenarios, to relate to Operation Types:
70
+
71
+ - Cluster Picking
72
+ - Zone Picking
73
+ - Checkout/Packing
74
+ - Delivery
75
+ - Location Content Transfer
76
+ - Single Pack Transfer
77
+
78
+ This module provides REST APIs to support the scenarios. It needs a
79
+ frontend to consume the backend APIs and provide screens for users on
80
+ barcode devices. A default front-end application is provided by
81
+ ``shopfloor_mobile``.
82
+
83
+ | Note: if you want to enable a new scenario on an existing application,
84
+ you must trigger the registry sync on the shopfloor.app in a
85
+ post_init_hook or a post-migrate script.
86
+ | See an example
87
+ `here <https://github.com/OCA/wms/pull/520/commits/bccdfd445a9bc943998c4848f183a076e8459a98>`__.
88
+
89
+ **WARNING v18**
90
+
91
+ Scenario will be migrated one by one.
92
+
93
+ Current availability status:
94
+
95
+ - ☐ checkout
96
+ - ☐ cluster picking
97
+ - ☐ zone picking
98
+ - ☐ delivery
99
+ - ☐ location content transfer
100
+ - ☐ single pack transfer (to be discarded in favor of
101
+ shopfloor_single_product_transfer)
102
+ - ☐ zone picking
103
+
104
+ **Table of contents**
105
+
106
+ .. contents::
107
+ :local:
108
+
109
+ Usage
110
+ =====
111
+
112
+ An API key is created in the Demo data (for development), using the Demo
113
+ user. The key to use in the HTTP header ``API-KEY`` is: 72B044F7AC780DAC
114
+
115
+ Curl example:
116
+
117
+ ::
118
+
119
+ curl -X POST "http://localhost:8069/shopfloor/user/menu" -H "accept: */*" -H "Content-Type: application/json" -H "API-KEY: 72B044F7AC780DAC"
120
+
121
+ Known issues / Roadmap
122
+ ======================
123
+
124
+ - improve documentation
125
+ - split out scenario components to their own modules
126
+ - maybe split common stock features to shopfloor_stock_base and move
127
+ scenario to shopfloor_wms?
128
+
129
+ **WARNING v18**
130
+
131
+ We don't want to split now the scenario to keep it as much as possible
132
+ in line w/ v16. We'll do it later.
133
+
134
+ Changelog
135
+ =========
136
+
137
+ 13.0.1.0.0
138
+ ----------
139
+
140
+ First official version.
141
+
142
+ Bug Tracker
143
+ ===========
144
+
145
+ Bugs are tracked on `GitHub Issues <https://github.com/OCA/stock-logistics-shopfloor/issues>`_.
146
+ In case of trouble, please check there if your issue has already been reported.
147
+ If you spotted it first, help us to smash it by providing a detailed and welcomed
148
+ `feedback <https://github.com/OCA/stock-logistics-shopfloor/issues/new?body=module:%20shopfloor%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
149
+
150
+ Do not contact contributors directly about support or help with technical issues.
151
+
152
+ Credits
153
+ =======
154
+
155
+ Authors
156
+ -------
157
+
158
+ * Camptocamp
159
+ * BCIM
160
+ * Akretion
161
+
162
+ Contributors
163
+ ------------
164
+
165
+ - Guewen Baconnier <guewen.baconnier@camptocamp.com>
166
+ - Simone Orsi <simahawk@gmail.com>
167
+ - Sébastien Alix <sebastien.alix@camptocamp.com>
168
+ - Alexandre Fayolle <alexandre.fayolle@camptocamp.com>
169
+ - Benoit Guillot <benoit.guillot@akretion.com>
170
+ - Thierry Ducrest <thierry.ducrest@camptocamp.com>
171
+ - Raphaël Reverdy <raphael.reverdy@akretion.com>
172
+ - Jacques-Etienne Baudoux <je@bcim.be>
173
+ - Juan Miguel Sánchez Arce <juan.sanchez@camptocamp.com>
174
+ - Michael Tietz (MT Software) <mtietz@mt-software.de>
175
+ - Souheil Bejaoui <souheil.bejaoui@acsone.eu>
176
+ - Laurent Mignon <laurent.mignon@acsone.eu>
177
+
178
+ Design
179
+ ~~~~~~
180
+
181
+ - Joël Grand-Guillaume <joel.grandguillaume@camptocamp.com>
182
+ - Jacques-Etienne Baudoux <je@bcim.be>
183
+
184
+ Other credits
185
+ -------------
186
+
187
+ **Financial support**
188
+
189
+ - Cosanum
190
+ - Camptocamp R&D
191
+ - Akretion R&D
192
+
193
+ Maintainers
194
+ -----------
195
+
196
+ This module is maintained by the OCA.
197
+
198
+ .. image:: https://odoo-community.org/logo.png
199
+ :alt: Odoo Community Association
200
+ :target: https://odoo-community.org
201
+
202
+ OCA, or the Odoo Community Association, is a nonprofit organization whose
203
+ mission is to support the collaborative development of Odoo features and
204
+ promote its widespread use.
205
+
206
+ .. |maintainer-guewen| image:: https://github.com/guewen.png?size=40px
207
+ :target: https://github.com/guewen
208
+ :alt: guewen
209
+ .. |maintainer-simahawk| image:: https://github.com/simahawk.png?size=40px
210
+ :target: https://github.com/simahawk
211
+ :alt: simahawk
212
+ .. |maintainer-sebalix| image:: https://github.com/sebalix.png?size=40px
213
+ :target: https://github.com/sebalix
214
+ :alt: sebalix
215
+
216
+ Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
217
+
218
+ |maintainer-guewen| |maintainer-simahawk| |maintainer-sebalix|
219
+
220
+ This module is part of the `OCA/stock-logistics-shopfloor <https://github.com/OCA/stock-logistics-shopfloor/tree/18.0/shopfloor>`_ project on GitHub.
221
+
222
+ You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.