odoo-addon-shopfloor 16.0.2.2.0__py3-none-any.whl → 16.0.2.2.1.5__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/actions/move_line_search.py +125 -33
- odoo/addons/shopfloor/data/shopfloor_scenario_data.xml +7 -2
- odoo/addons/shopfloor/i18n/ca.po +106 -4
- odoo/addons/shopfloor/i18n/de.po +104 -2
- odoo/addons/shopfloor/i18n/es_AR.po +108 -6
- odoo/addons/shopfloor/i18n/it.po +108 -6
- odoo/addons/shopfloor/i18n/pt_BR.po +104 -2
- odoo/addons/shopfloor/i18n/shopfloor.pot +102 -0
- odoo/addons/shopfloor/migrations/16.0.2.2.1/post-init_search_move_line_options.py +33 -0
- odoo/addons/shopfloor/models/shopfloor_menu.py +85 -0
- odoo/addons/shopfloor/services/location_content_transfer.py +20 -41
- odoo/addons/shopfloor/services/menu.py +6 -3
- odoo/addons/shopfloor/services/service.py +28 -2
- odoo/addons/shopfloor/services/zone_picking.py +2 -2
- odoo/addons/shopfloor/static/description/index.html +1 -1
- odoo/addons/shopfloor/tests/__init__.py +2 -0
- odoo/addons/shopfloor/tests/test_actions_search_move_line.py +128 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_get_work.py +41 -0
- odoo/addons/shopfloor/tests/test_location_content_transfer_mix.py +2 -2
- odoo/addons/shopfloor/tests/test_menu_contrains.py +40 -0
- odoo/addons/shopfloor/tests/test_menu_counters.py +112 -2
- odoo/addons/shopfloor/views/shopfloor_menu.xml +54 -0
- {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/METADATA +2 -2
- {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/RECORD +28 -25
- {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/WHEEL +0 -0
- {odoo_addon_shopfloor-16.0.2.2.0.dist-info → odoo_addon_shopfloor-16.0.2.2.1.5.dist-info}/top_level.txt +0 -0
odoo/addons/shopfloor/README.rst
CHANGED
@@ -7,7 +7,7 @@ Shopfloor
|
|
7
7
|
!! This file is generated by oca-gen-addon-readme !!
|
8
8
|
!! changes will be overwritten. !!
|
9
9
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
10
|
-
!! source digest: sha256:
|
10
|
+
!! source digest: sha256:bb5933746c40b25c45fcadac4704a1a752a86c48bb857969ca935196736d24c6
|
11
11
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
12
12
|
|
13
13
|
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
@@ -1,5 +1,8 @@
|
|
1
1
|
# Copyright 2020 Camptocamp SA (http://www.camptocamp.com)
|
2
|
+
# Copyright 2024 ACSONE SA/NV
|
2
3
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
4
|
+
from odoo.tools import safe_eval
|
5
|
+
|
3
6
|
from odoo.addons.component.core import Component
|
4
7
|
|
5
8
|
|
@@ -20,9 +23,42 @@ class MoveLineSearch(Component):
|
|
20
23
|
self.work, "picking_types", self.env["stock.picking.type"].browse()
|
21
24
|
)
|
22
25
|
|
23
|
-
|
26
|
+
@property
|
27
|
+
def additional_domain(self):
|
28
|
+
return getattr(self.work, "additional_domain", [])
|
29
|
+
|
30
|
+
@property
|
31
|
+
def sort_order(self):
|
32
|
+
return getattr(self.work, "sort_order", "priority")
|
33
|
+
|
34
|
+
@property
|
35
|
+
def sort_order_custom_code(self):
|
36
|
+
return getattr(self.work, "sort_order_custom_code", None)
|
37
|
+
|
38
|
+
def _get_additional_domain_eval_context(self):
|
39
|
+
"""Prepare the context used when evaluating the additional domain
|
40
|
+
:returns: dict -- evaluation context given to safe_eval
|
41
|
+
"""
|
42
|
+
return {
|
43
|
+
"datetime": safe_eval.datetime,
|
44
|
+
"dateutil": safe_eval.dateutil,
|
45
|
+
"time": safe_eval.time,
|
46
|
+
"uid": self.env.uid,
|
47
|
+
"user": self.env.user,
|
48
|
+
}
|
49
|
+
|
50
|
+
def _sort_key_custom_code_eval_context(self, line):
|
51
|
+
return {
|
52
|
+
"line": line,
|
53
|
+
"key": None,
|
54
|
+
"get_sort_key_priority": self._sort_key_move_lines_priority,
|
55
|
+
"get_sort_key_location": self._sort_key_move_lines_location,
|
56
|
+
"get_sort_key_assigned_to_current_user": self._sort_key_assigned_to_current_user,
|
57
|
+
}
|
58
|
+
|
59
|
+
def _search_move_lines_domain(
|
24
60
|
self,
|
25
|
-
locations,
|
61
|
+
locations=None,
|
26
62
|
picking_type=None,
|
27
63
|
package=None,
|
28
64
|
product=None,
|
@@ -32,16 +68,26 @@ class MoveLineSearch(Component):
|
|
32
68
|
# When True, adds the package in the domain even if the package is False
|
33
69
|
enforce_empty_package=False,
|
34
70
|
):
|
71
|
+
"""Return a domain to search move lines.
|
72
|
+
|
73
|
+
Be careful on the use of the picking_type parameter. This paramater can take
|
74
|
+
a recordset or None as value. The interpretation of the value is as follows:
|
75
|
+
* If picking_type is None, the domain will be filtered on all picking types
|
76
|
+
defined in the work. (most probably those defined on the menu)
|
77
|
+
* If picking_type is a recordset, the domain will be filtered on the given
|
78
|
+
picking types if the recordset is not empty. If the recordset is empty,
|
79
|
+
the domain will not be filtered on any picking type.
|
80
|
+
"""
|
35
81
|
domain = [
|
36
|
-
("location_id", "child_of", locations.ids),
|
37
82
|
("qty_done", "=", 0),
|
38
83
|
("state", "in", ("assigned", "partially_available")),
|
39
84
|
]
|
40
|
-
if picking_type
|
41
|
-
|
42
|
-
domain += [("picking_id.picking_type_id", "
|
43
|
-
|
44
|
-
|
85
|
+
picking_types = picking_type if picking_type is not None else self.picking_types
|
86
|
+
if picking_types:
|
87
|
+
domain += [("picking_id.picking_type_id", "in", picking_types.ids)]
|
88
|
+
locations = locations or picking_types.default_location_src_id
|
89
|
+
if locations:
|
90
|
+
domain += [("location_id", "child_of", locations.ids)]
|
45
91
|
if package or package is not None and enforce_empty_package:
|
46
92
|
domain += [("package_id", "=", package.id if package else False)]
|
47
93
|
if product:
|
@@ -49,23 +95,26 @@ class MoveLineSearch(Component):
|
|
49
95
|
if lot:
|
50
96
|
domain += [("lot_id", "=", lot.id)]
|
51
97
|
if match_user:
|
98
|
+
# we only want to see the lines assigned to the current user
|
52
99
|
domain += [
|
53
|
-
"
|
54
|
-
("
|
55
|
-
("shopfloor_user_id", "=", self.env.uid),
|
100
|
+
("shopfloor_user_id", "in", (False, self.env.uid)),
|
101
|
+
("picking_id.user_id", "in", (False, self.env.uid)),
|
56
102
|
]
|
57
103
|
if picking_ready:
|
58
104
|
domain += [("picking_id.state", "=", "assigned")]
|
105
|
+
if self.additional_domain:
|
106
|
+
eval_context = self._get_additional_domain_eval_context()
|
107
|
+
domain += safe_eval.safe_eval(self.additional_domain, eval_context)
|
59
108
|
return domain
|
60
109
|
|
61
|
-
def
|
110
|
+
def search_move_lines(
|
62
111
|
self,
|
63
|
-
locations,
|
112
|
+
locations=None,
|
64
113
|
picking_type=None,
|
65
114
|
package=None,
|
66
115
|
product=None,
|
67
116
|
lot=None,
|
68
|
-
order=
|
117
|
+
order=None,
|
69
118
|
match_user=False,
|
70
119
|
sort_keys_func=None,
|
71
120
|
picking_ready=True,
|
@@ -73,7 +122,7 @@ class MoveLineSearch(Component):
|
|
73
122
|
):
|
74
123
|
"""Find lines that potentially need work in given locations."""
|
75
124
|
move_lines = self.env["stock.move.line"].search(
|
76
|
-
self.
|
125
|
+
self._search_move_lines_domain(
|
77
126
|
locations,
|
78
127
|
picking_type,
|
79
128
|
package,
|
@@ -84,36 +133,79 @@ class MoveLineSearch(Component):
|
|
84
133
|
enforce_empty_package=enforce_empty_package,
|
85
134
|
)
|
86
135
|
)
|
136
|
+
order = order or self.sort_order
|
87
137
|
sort_keys_func = sort_keys_func or self._sort_key_move_lines(order)
|
88
138
|
move_lines = move_lines.sorted(sort_keys_func)
|
89
139
|
return move_lines
|
90
140
|
|
91
|
-
|
92
|
-
def _sort_key_move_lines(order):
|
141
|
+
def _sort_key_move_lines(self, order=None):
|
93
142
|
"""Return a sorting function to order lines."""
|
143
|
+
if order is None:
|
144
|
+
return lambda line: tuple()
|
94
145
|
|
95
146
|
if order == "priority":
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
147
|
+
return self._sort_key_move_lines_priority
|
148
|
+
|
149
|
+
if order == "location":
|
150
|
+
return self._sort_key_move_lines_location
|
151
|
+
|
152
|
+
if order == "custom_code":
|
153
|
+
return self._sort_key_custom_code
|
154
|
+
|
155
|
+
if order == "assigned_to_current_user":
|
156
|
+
return self._sort_key_assigned_to_current_user
|
157
|
+
|
158
|
+
raise ValueError(f"Unknown order '{order}'")
|
159
|
+
|
160
|
+
def _sort_key_move_lines_priority(self, line):
|
161
|
+
# make prority negative to keep sorting ascending
|
162
|
+
return self._sort_key_assigned_to_current_user(line) + (
|
163
|
+
-int(line.move_id.priority or "0"),
|
164
|
+
line.move_id.date,
|
165
|
+
line.move_id.id,
|
166
|
+
)
|
167
|
+
|
168
|
+
def _sort_key_move_lines_location(self, line):
|
169
|
+
return self._sort_key_assigned_to_current_user(line) + (
|
170
|
+
line.location_id.shopfloor_picking_sequence or "",
|
171
|
+
line.location_id.name,
|
172
|
+
line.move_id.date,
|
173
|
+
line.move_id.id,
|
174
|
+
)
|
175
|
+
|
176
|
+
def _sort_key_assigned_to_current_user(self, line):
|
177
|
+
user_id = line.shopfloor_user_id.id or line.picking_id.user_id.id or None
|
178
|
+
# Determine sort priority
|
179
|
+
# Priority 0: Assigned to the current user
|
180
|
+
# Priority 1: Not assigned to any user
|
181
|
+
# Priority 2: Assigned to a different user
|
182
|
+
if user_id == self.env.uid:
|
183
|
+
priority = 0
|
184
|
+
elif user_id is None:
|
185
|
+
priority = 1
|
186
|
+
else:
|
187
|
+
priority = 2
|
188
|
+
return (priority,)
|
189
|
+
|
190
|
+
def _sort_key_custom_code(self, line):
|
191
|
+
context = self._sort_key_custom_code_eval_context(line)
|
192
|
+
safe_eval.safe_eval(
|
193
|
+
self.sort_order_custom_code, context, mode="exec", nocopy=True
|
194
|
+
)
|
195
|
+
return context["key"]
|
110
196
|
|
111
197
|
def counters_for_lines(self, lines):
|
112
198
|
# Not using mapped/filtered to support simple lists and generators
|
113
|
-
priority_lines =
|
199
|
+
priority_lines = set()
|
200
|
+
priority_pickings = set()
|
201
|
+
for line in lines:
|
202
|
+
if int(line.move_id.priority or "0") > 0:
|
203
|
+
priority_lines.add(line)
|
204
|
+
if int(line.picking_id.priority or "0") > 0:
|
205
|
+
priority_pickings.add(line.picking_id)
|
114
206
|
return {
|
115
207
|
"lines_count": len(lines),
|
116
208
|
"picking_count": len({x.picking_id.id for x in lines}),
|
117
209
|
"priority_lines_count": len(priority_lines),
|
118
|
-
"priority_picking_count": len(
|
210
|
+
"priority_picking_count": len(priority_pickings),
|
119
211
|
}
|
@@ -21,7 +21,9 @@
|
|
21
21
|
"multiple_move_single_pack": true,
|
22
22
|
"no_prefill_qty": true,
|
23
23
|
"scan_location_or_pack_first": true,
|
24
|
-
"allow_alternative_destination_package": true
|
24
|
+
"allow_alternative_destination_package": true,
|
25
|
+
"allow_move_line_search_sort_order": false,
|
26
|
+
"allow_move_line_search_additional_domain": true
|
25
27
|
}
|
26
28
|
</field>
|
27
29
|
</record>
|
@@ -68,7 +70,10 @@
|
|
68
70
|
"allow_unreserve_other_moves": true,
|
69
71
|
"allow_ignore_no_putaway_available": true,
|
70
72
|
"allow_get_work": true,
|
71
|
-
"no_prefill_qty": true
|
73
|
+
"no_prefill_qty": true,
|
74
|
+
"allow_move_line_search_sort_order": true,
|
75
|
+
"allow_move_line_search_additional_domain": true
|
76
|
+
|
72
77
|
}
|
73
78
|
</field>
|
74
79
|
</record>
|
odoo/addons/shopfloor/i18n/ca.po
CHANGED
@@ -116,6 +116,32 @@ msgid ""
|
|
116
116
|
"destination'."
|
117
117
|
msgstr ""
|
118
118
|
|
119
|
+
#. module: shopfloor
|
120
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
121
|
+
msgid ""
|
122
|
+
"<code>get_sort_key_assigned_to_current_user</code>: Return sort key to get "
|
123
|
+
"line assigned to current user first. (return a tuple)"
|
124
|
+
msgstr ""
|
125
|
+
|
126
|
+
#. module: shopfloor
|
127
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
128
|
+
msgid ""
|
129
|
+
"<code>get_sort_key_location</code>: Return sort key to sort by location. "
|
130
|
+
"(return a tuple)"
|
131
|
+
msgstr ""
|
132
|
+
|
133
|
+
#. module: shopfloor
|
134
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
135
|
+
msgid ""
|
136
|
+
"<code>get_sort_key_priority</code>: Return sort key to sort by priority. "
|
137
|
+
"(return a tuple)"
|
138
|
+
msgstr ""
|
139
|
+
|
140
|
+
#. module: shopfloor
|
141
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
142
|
+
msgid "<code>line</code>: The move line for with the key must be computed."
|
143
|
+
msgstr ""
|
144
|
+
|
119
145
|
#. module: shopfloor
|
120
146
|
#: model:ir.model,name:shopfloor.model_shopfloor_app
|
121
147
|
msgid "A Shopfloor application"
|
@@ -133,6 +159,11 @@ msgstr "Es requereix un paquet destí."
|
|
133
159
|
msgid "Activate Zero Check"
|
134
160
|
msgstr "Activar verificació zero"
|
135
161
|
|
162
|
+
#. module: shopfloor
|
163
|
+
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_additional_domain
|
164
|
+
msgid "Additional domain used when searching move lines"
|
165
|
+
msgstr ""
|
166
|
+
|
136
167
|
#. module: shopfloor
|
137
168
|
#: model:ir.model,name:shopfloor.model_shopfloor_priority_postpone_mixin
|
138
169
|
msgid "Adds shopfloor priority/postpone fields"
|
@@ -330,6 +361,35 @@ msgstr ""
|
|
330
361
|
msgid "Creation of moves is not allowed for menu {}."
|
331
362
|
msgstr "La creació de moviments no està permesa pel menú {}."
|
332
363
|
|
364
|
+
#. module: shopfloor
|
365
|
+
#: model:ir.model.fields.selection,name:shopfloor.selection__shopfloor_menu__move_line_search_sort_order__custom_code
|
366
|
+
msgid "Custom code"
|
367
|
+
msgstr ""
|
368
|
+
|
369
|
+
#. module: shopfloor
|
370
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
371
|
+
msgid "Custom code to construct the key to sort move lines"
|
372
|
+
msgstr ""
|
373
|
+
|
374
|
+
#. module: shopfloor
|
375
|
+
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_sort_order_custom_code
|
376
|
+
msgid "Custom sort key code"
|
377
|
+
msgstr ""
|
378
|
+
|
379
|
+
#. module: shopfloor
|
380
|
+
#. odoo-python
|
381
|
+
#: code:addons/shopfloor/models/shopfloor_menu.py:0
|
382
|
+
#, python-format
|
383
|
+
msgid "Custom sort key code is only allowed when 'Custom code' is selected."
|
384
|
+
msgstr ""
|
385
|
+
|
386
|
+
#. module: shopfloor
|
387
|
+
#. odoo-python
|
388
|
+
#: code:addons/shopfloor/models/shopfloor_menu.py:0
|
389
|
+
#, python-format
|
390
|
+
msgid "Custom sort key code is required when 'Custom code' is selected."
|
391
|
+
msgstr ""
|
392
|
+
|
333
393
|
#. module: shopfloor
|
334
394
|
#: model:ir.model.fields,field_description:shopfloor.field_stock_move_line__date_planned
|
335
395
|
msgid "Date Scheduled"
|
@@ -468,6 +528,11 @@ msgstr ""
|
|
468
528
|
msgid "Lines have different destination location."
|
469
529
|
msgstr ""
|
470
530
|
|
531
|
+
#. module: shopfloor
|
532
|
+
#: model:ir.model.fields.selection,name:shopfloor.selection__shopfloor_menu__move_line_search_sort_order__location
|
533
|
+
msgid "Location"
|
534
|
+
msgstr ""
|
535
|
+
|
471
536
|
#. module: shopfloor
|
472
537
|
#. odoo-python
|
473
538
|
#: code:addons/shopfloor/actions/message.py:0
|
@@ -593,6 +658,16 @@ msgstr ""
|
|
593
658
|
msgid "Move Line Count"
|
594
659
|
msgstr ""
|
595
660
|
|
661
|
+
#. module: shopfloor
|
662
|
+
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_additional_domain_is_possible
|
663
|
+
msgid "Move Line Search Additional Domain Is Possible"
|
664
|
+
msgstr ""
|
665
|
+
|
666
|
+
#. module: shopfloor
|
667
|
+
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_sort_order_is_possible
|
668
|
+
msgid "Move Line Search Sort Order Is Possible"
|
669
|
+
msgstr ""
|
670
|
+
|
596
671
|
#. module: shopfloor
|
597
672
|
#. odoo-python
|
598
673
|
#: code:addons/shopfloor/actions/message.py:0
|
@@ -1093,6 +1168,11 @@ msgstr ""
|
|
1093
1168
|
msgid "Prepackaged Product Is Possible"
|
1094
1169
|
msgstr ""
|
1095
1170
|
|
1171
|
+
#. module: shopfloor
|
1172
|
+
#: model:ir.model.fields.selection,name:shopfloor.selection__shopfloor_menu__move_line_search_sort_order__priority
|
1173
|
+
msgid "Priority"
|
1174
|
+
msgstr ""
|
1175
|
+
|
1096
1176
|
#. module: shopfloor
|
1097
1177
|
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__allow_prepackaged_product
|
1098
1178
|
msgid "Process as pre-packaged"
|
@@ -1154,6 +1234,11 @@ msgstr ""
|
|
1154
1234
|
msgid "Product(s) processed as raw product(s)"
|
1155
1235
|
msgstr ""
|
1156
1236
|
|
1237
|
+
#. module: shopfloor
|
1238
|
+
#: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__move_line_search_sort_order_custom_code
|
1239
|
+
msgid "Python code to sort move lines. "
|
1240
|
+
msgstr ""
|
1241
|
+
|
1157
1242
|
#. module: shopfloor
|
1158
1243
|
#: model:ir.model,name:shopfloor.model_stock_quant
|
1159
1244
|
msgid "Quants"
|
@@ -1427,6 +1512,11 @@ msgstr ""
|
|
1427
1512
|
msgid "Someone is already working on these transfers"
|
1428
1513
|
msgstr ""
|
1429
1514
|
|
1515
|
+
#. module: shopfloor
|
1516
|
+
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_sort_order
|
1517
|
+
msgid "Sort method used when searching move lines"
|
1518
|
+
msgstr ""
|
1519
|
+
|
1430
1520
|
#. module: shopfloor
|
1431
1521
|
#: model:ir.model.fields,field_description:shopfloor.field_stock_location__source_move_line_ids
|
1432
1522
|
msgid "Source Move Line"
|
@@ -1506,8 +1596,8 @@ msgstr ""
|
|
1506
1596
|
#: code:addons/shopfloor/models/stock_picking.py:0
|
1507
1597
|
#, python-format
|
1508
1598
|
msgid ""
|
1509
|
-
"The backorder <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-
|
1510
|
-
"
|
1599
|
+
"The backorder <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-"
|
1600
|
+
"id=\"%(new_picking_id)d\">%(new_picking_name)s</a> has been created."
|
1511
1601
|
msgstr ""
|
1512
1602
|
|
1513
1603
|
#. module: shopfloor
|
@@ -1740,6 +1830,18 @@ msgstr ""
|
|
1740
1830
|
msgid "This transfer does not exist or is not available anymore."
|
1741
1831
|
msgstr ""
|
1742
1832
|
|
1833
|
+
#. module: shopfloor
|
1834
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
1835
|
+
msgid "Three variables are available:"
|
1836
|
+
msgstr ""
|
1837
|
+
|
1838
|
+
#. module: shopfloor
|
1839
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
1840
|
+
msgid ""
|
1841
|
+
"To assign the key value: <code>key = "
|
1842
|
+
"get_sort_key_assigned_to_current_user(line) + (line.x, )</code>"
|
1843
|
+
msgstr ""
|
1844
|
+
|
1743
1845
|
#. module: shopfloor
|
1744
1846
|
#: model:ir.model.fields,field_description:shopfloor.field_stock_picking__total_weight
|
1745
1847
|
#: model:ir.model.fields,field_description:shopfloor.field_stock_picking_batch__total_weight
|
@@ -2025,8 +2127,8 @@ msgstr ""
|
|
2025
2127
|
#~ msgstr "ID"
|
2026
2128
|
|
2027
2129
|
#~ msgid ""
|
2028
|
-
#~ "Created from backorder <a href=# data-oe-model=stock.picking data-oe-
|
2029
|
-
#~ "
|
2130
|
+
#~ "Created from backorder <a href=# data-oe-model=stock.picking data-oe-"
|
2131
|
+
#~ "id=%d>%s</a>."
|
2030
2132
|
#~ msgstr ""
|
2031
2133
|
#~ "Creat des de comanda pendent <a href=# data-oe-model=stock.picking data-"
|
2032
2134
|
#~ "oe-id=%d>%s</a>."
|
odoo/addons/shopfloor/i18n/de.po
CHANGED
@@ -114,6 +114,32 @@ msgid ""
|
|
114
114
|
"destination'."
|
115
115
|
msgstr ""
|
116
116
|
|
117
|
+
#. module: shopfloor
|
118
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
119
|
+
msgid ""
|
120
|
+
"<code>get_sort_key_assigned_to_current_user</code>: Return sort key to get "
|
121
|
+
"line assigned to current user first. (return a tuple)"
|
122
|
+
msgstr ""
|
123
|
+
|
124
|
+
#. module: shopfloor
|
125
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
126
|
+
msgid ""
|
127
|
+
"<code>get_sort_key_location</code>: Return sort key to sort by location. "
|
128
|
+
"(return a tuple)"
|
129
|
+
msgstr ""
|
130
|
+
|
131
|
+
#. module: shopfloor
|
132
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
133
|
+
msgid ""
|
134
|
+
"<code>get_sort_key_priority</code>: Return sort key to sort by priority. "
|
135
|
+
"(return a tuple)"
|
136
|
+
msgstr ""
|
137
|
+
|
138
|
+
#. module: shopfloor
|
139
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
140
|
+
msgid "<code>line</code>: The move line for with the key must be computed."
|
141
|
+
msgstr ""
|
142
|
+
|
117
143
|
#. module: shopfloor
|
118
144
|
#: model:ir.model,name:shopfloor.model_shopfloor_app
|
119
145
|
msgid "A Shopfloor application"
|
@@ -131,6 +157,11 @@ msgstr ""
|
|
131
157
|
msgid "Activate Zero Check"
|
132
158
|
msgstr ""
|
133
159
|
|
160
|
+
#. module: shopfloor
|
161
|
+
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_additional_domain
|
162
|
+
msgid "Additional domain used when searching move lines"
|
163
|
+
msgstr ""
|
164
|
+
|
134
165
|
#. module: shopfloor
|
135
166
|
#: model:ir.model,name:shopfloor.model_shopfloor_priority_postpone_mixin
|
136
167
|
msgid "Adds shopfloor priority/postpone fields"
|
@@ -328,6 +359,35 @@ msgstr ""
|
|
328
359
|
msgid "Creation of moves is not allowed for menu {}."
|
329
360
|
msgstr ""
|
330
361
|
|
362
|
+
#. module: shopfloor
|
363
|
+
#: model:ir.model.fields.selection,name:shopfloor.selection__shopfloor_menu__move_line_search_sort_order__custom_code
|
364
|
+
msgid "Custom code"
|
365
|
+
msgstr ""
|
366
|
+
|
367
|
+
#. module: shopfloor
|
368
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
369
|
+
msgid "Custom code to construct the key to sort move lines"
|
370
|
+
msgstr ""
|
371
|
+
|
372
|
+
#. module: shopfloor
|
373
|
+
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_sort_order_custom_code
|
374
|
+
msgid "Custom sort key code"
|
375
|
+
msgstr ""
|
376
|
+
|
377
|
+
#. module: shopfloor
|
378
|
+
#. odoo-python
|
379
|
+
#: code:addons/shopfloor/models/shopfloor_menu.py:0
|
380
|
+
#, python-format
|
381
|
+
msgid "Custom sort key code is only allowed when 'Custom code' is selected."
|
382
|
+
msgstr ""
|
383
|
+
|
384
|
+
#. module: shopfloor
|
385
|
+
#. odoo-python
|
386
|
+
#: code:addons/shopfloor/models/shopfloor_menu.py:0
|
387
|
+
#, python-format
|
388
|
+
msgid "Custom sort key code is required when 'Custom code' is selected."
|
389
|
+
msgstr ""
|
390
|
+
|
331
391
|
#. module: shopfloor
|
332
392
|
#: model:ir.model.fields,field_description:shopfloor.field_stock_move_line__date_planned
|
333
393
|
msgid "Date Scheduled"
|
@@ -464,6 +524,11 @@ msgstr ""
|
|
464
524
|
msgid "Lines have different destination location."
|
465
525
|
msgstr ""
|
466
526
|
|
527
|
+
#. module: shopfloor
|
528
|
+
#: model:ir.model.fields.selection,name:shopfloor.selection__shopfloor_menu__move_line_search_sort_order__location
|
529
|
+
msgid "Location"
|
530
|
+
msgstr ""
|
531
|
+
|
467
532
|
#. module: shopfloor
|
468
533
|
#. odoo-python
|
469
534
|
#: code:addons/shopfloor/actions/message.py:0
|
@@ -589,6 +654,16 @@ msgstr ""
|
|
589
654
|
msgid "Move Line Count"
|
590
655
|
msgstr ""
|
591
656
|
|
657
|
+
#. module: shopfloor
|
658
|
+
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_additional_domain_is_possible
|
659
|
+
msgid "Move Line Search Additional Domain Is Possible"
|
660
|
+
msgstr ""
|
661
|
+
|
662
|
+
#. module: shopfloor
|
663
|
+
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_sort_order_is_possible
|
664
|
+
msgid "Move Line Search Sort Order Is Possible"
|
665
|
+
msgstr ""
|
666
|
+
|
592
667
|
#. module: shopfloor
|
593
668
|
#. odoo-python
|
594
669
|
#: code:addons/shopfloor/actions/message.py:0
|
@@ -1089,6 +1164,11 @@ msgstr ""
|
|
1089
1164
|
msgid "Prepackaged Product Is Possible"
|
1090
1165
|
msgstr ""
|
1091
1166
|
|
1167
|
+
#. module: shopfloor
|
1168
|
+
#: model:ir.model.fields.selection,name:shopfloor.selection__shopfloor_menu__move_line_search_sort_order__priority
|
1169
|
+
msgid "Priority"
|
1170
|
+
msgstr ""
|
1171
|
+
|
1092
1172
|
#. module: shopfloor
|
1093
1173
|
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__allow_prepackaged_product
|
1094
1174
|
msgid "Process as pre-packaged"
|
@@ -1150,6 +1230,11 @@ msgstr ""
|
|
1150
1230
|
msgid "Product(s) processed as raw product(s)"
|
1151
1231
|
msgstr ""
|
1152
1232
|
|
1233
|
+
#. module: shopfloor
|
1234
|
+
#: model:ir.model.fields,help:shopfloor.field_shopfloor_menu__move_line_search_sort_order_custom_code
|
1235
|
+
msgid "Python code to sort move lines. "
|
1236
|
+
msgstr ""
|
1237
|
+
|
1153
1238
|
#. module: shopfloor
|
1154
1239
|
#: model:ir.model,name:shopfloor.model_stock_quant
|
1155
1240
|
msgid "Quants"
|
@@ -1423,6 +1508,11 @@ msgstr ""
|
|
1423
1508
|
msgid "Someone is already working on these transfers"
|
1424
1509
|
msgstr ""
|
1425
1510
|
|
1511
|
+
#. module: shopfloor
|
1512
|
+
#: model:ir.model.fields,field_description:shopfloor.field_shopfloor_menu__move_line_search_sort_order
|
1513
|
+
msgid "Sort method used when searching move lines"
|
1514
|
+
msgstr ""
|
1515
|
+
|
1426
1516
|
#. module: shopfloor
|
1427
1517
|
#: model:ir.model.fields,field_description:shopfloor.field_stock_location__source_move_line_ids
|
1428
1518
|
msgid "Source Move Line"
|
@@ -1502,8 +1592,8 @@ msgstr ""
|
|
1502
1592
|
#: code:addons/shopfloor/models/stock_picking.py:0
|
1503
1593
|
#, python-format
|
1504
1594
|
msgid ""
|
1505
|
-
"The backorder <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-
|
1506
|
-
"
|
1595
|
+
"The backorder <a href=\"#\" data-oe-model=\"stock.picking\" data-oe-"
|
1596
|
+
"id=\"%(new_picking_id)d\">%(new_picking_name)s</a> has been created."
|
1507
1597
|
msgstr ""
|
1508
1598
|
|
1509
1599
|
#. module: shopfloor
|
@@ -1736,6 +1826,18 @@ msgstr ""
|
|
1736
1826
|
msgid "This transfer does not exist or is not available anymore."
|
1737
1827
|
msgstr ""
|
1738
1828
|
|
1829
|
+
#. module: shopfloor
|
1830
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
1831
|
+
msgid "Three variables are available:"
|
1832
|
+
msgstr ""
|
1833
|
+
|
1834
|
+
#. module: shopfloor
|
1835
|
+
#: model_terms:ir.ui.view,arch_db:shopfloor.shopfloor_menu_form_view
|
1836
|
+
msgid ""
|
1837
|
+
"To assign the key value: <code>key = "
|
1838
|
+
"get_sort_key_assigned_to_current_user(line) + (line.x, )</code>"
|
1839
|
+
msgstr ""
|
1840
|
+
|
1739
1841
|
#. module: shopfloor
|
1740
1842
|
#: model:ir.model.fields,field_description:shopfloor.field_stock_picking__total_weight
|
1741
1843
|
#: model:ir.model.fields,field_description:shopfloor.field_stock_picking_batch__total_weight
|