diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po
index ec020b537a..7e878a4673 100644
--- a/InvenTree/locale/cs/LC_MESSAGES/django.po
+++ b/InvenTree/locale/cs/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -41,7 +41,7 @@ msgstr "Zadejte datum"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Chybějící soubor"
msgid "Missing external link"
msgstr "Chybějící externí odkaz"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr "Název parametru"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "Odstranit"
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/da/LC_MESSAGES/django.po b/InvenTree/locale/da/LC_MESSAGES/django.po
index b5c9f005ee..3dfe475357 100644
--- a/InvenTree/locale/da/LC_MESSAGES/django.po
+++ b/InvenTree/locale/da/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Language: da_DK\n"
@@ -41,7 +41,7 @@ msgstr "Angiv dato"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Manglende fil"
msgid "Missing external link"
msgstr "Manglende eksternt link"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 2441920516..ce287a8c03 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -41,7 +41,7 @@ msgstr "Datum eingeben"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Fehlende Datei"
msgid "Missing external link"
msgstr "Fehlender externer Link"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr "Unfertige Endprodukte"
msgid "Completed Outputs"
msgstr "Fertiggestellte Endprodukte"
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Dateiformat nicht unterstützt: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Fehler beim Lesen der Datei (ungültige Kodierung)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Fehler beim Lesen der Datei (ungültiges Format)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Fehler beim Lesen der Datei (falsche Größe)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Fehler beim Lesen der Datei (Daten könnten beschädigt sein)"
@@ -3481,7 +3482,7 @@ msgstr "Parametername"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr "Zuliefererteil entfernen"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "Löschen"
@@ -6191,9 +6192,8 @@ msgid "You do not have permission to edit the BOM."
msgstr "Sie haben keine Berechtigung zum Bearbeiten der Stückliste."
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
-msgstr "Die Stückliste für %(part)s hat sich geändert und muss kontrolliert werden.
"
+msgid "The BOM this part has been changed, and must be validated"
+msgstr ""
#: part/templates/part/bom.html:17
#, python-format
@@ -6852,9 +6852,8 @@ msgid "Create new part variant"
msgstr "Neue Teilevariante anlegen"
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
-msgstr "Neue Variante von Vorlage anlegen '%(full_name)s'."
+msgid "Create a new variant part from this template"
+msgstr ""
#: part/templatetags/inventree_extras.py:187
msgid "Unknown database"
@@ -7038,19 +7037,20 @@ msgstr "Kein Autor gefunden"
msgid "No date found"
msgstr "Kein Datum gefunden"
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr "Plugin `{plg_name}` ist nicht kompatibel mit der aktuellen InvenTree Version {version.inventreeVersion()}!"
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
-msgstr "Plugin benötigt mindestens Version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
+msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
-msgstr "Plugin benötigt maximal Version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
+msgstr ""
#: plugin/samples/integration/sample.py:39
msgid "Enable PO"
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr "Testergebnisse"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr "Test"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr "Ergebnis"
@@ -7568,84 +7568,83 @@ msgstr "Seriennummern muss eine Liste von Ganzzahlen sein"
msgid "Quantity does not match serial numbers"
msgstr "Anzahl stimmt nicht mit den Seriennummern überein"
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr "Seriennummern {exists} existieren bereits"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "Seriennummern existieren bereits"
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr "Artikel wurde einem Kundenauftrag zugewiesen"
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr "Lagerartikel ist in anderem Element verbaut"
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr "Lagerartikel enthält andere Artikel"
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr "Artikel wurde einem Kunden zugewiesen"
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr "Lagerartikel wird aktuell produziert"
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden"
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr "Artikel duplizeren"
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr "Lagerartikel müssen auf dasselbe Teil verweisen"
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen"
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr "Status-Codes müssen zusammenpassen"
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Lagerartikel kann nicht bewegt werden, da kein Bestand vorhanden ist"
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr "Eintrags-Notizen"
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr "Wert muss für diesen Test angegeben werden"
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr "Anhang muss für diesen Test hochgeladen werden"
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr "Name des Tests"
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr "Testergebnis"
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr "Test Ausgabe Wert"
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr "Test Ergebnis Anhang"
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr "Test Notizen"
@@ -7682,10 +7681,6 @@ msgstr "Optionales Notizfeld"
msgid "Serial numbers cannot be assigned to this part"
msgstr "Seriennummern können diesem Teil nicht zugewiesen werden"
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "Seriennummern existieren bereits"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr "Lagerartikel für Installation auswählen"
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr "Passwort ändern"
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr "Bearbeiten"
@@ -10719,16 +10714,6 @@ msgstr "Keine Zulieferer-Preise verfügbar"
msgid "No price break data available"
msgstr "Keine Staffelpreisdaten verfügbar"
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr "${human_name} bearbeiten"
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr "${human_name} löschen"
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr "Keine Einkaufshistorie verfügbar"
diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po
index aa3e18cb43..aa5a0d69e6 100644
--- a/InvenTree/locale/el/LC_MESSAGES/django.po
+++ b/InvenTree/locale/el/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -41,7 +41,7 @@ msgstr "Εισάγετε ημερομηνία"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Το αρχείο λείπει"
msgid "Missing external link"
msgstr "Λείπει ο εξωτερικός σύνδεσμος"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
index 3d85e8378e..1c59910bfa 100644
--- a/InvenTree/locale/en/LC_MESSAGES/django.po
+++ b/InvenTree/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-03-29 08:09+0000\n"
+"POT-Creation-Date: 2023-04-17 14:52+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,15 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: InvenTree/api.py:63
+#: InvenTree/api.py:65
msgid "API endpoint not found"
msgstr ""
-#: InvenTree/api.py:308
+#: InvenTree/api.py:299
msgid "User does not have permission to view this model"
msgstr ""
-#: InvenTree/exceptions.py:79
+#: InvenTree/exceptions.py:94
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -34,25 +34,25 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/fields.py:204 build/serializers.py:389
+#: InvenTree/fields.py:204 build/serializers.py:392
#: build/templates/build/sidebar.html:21 company/models.py:554
-#: company/templates/company/sidebar.html:35 order/models.py:1029
+#: company/templates/company/sidebar.html:35 order/models.py:1058
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2100 stock/models.py:2208
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:130 templates/js/translated/bom.js:1220
-#: templates/js/translated/company.js:1272 templates/js/translated/order.js:319
+#: templates/js/translated/company.js:1272 templates/js/translated/order.js:322
#: templates/js/translated/part.js:997
-#: templates/js/translated/purchase_order.js:2038
-#: templates/js/translated/return_order.js:715
-#: templates/js/translated/sales_order.js:937
-#: templates/js/translated/sales_order.js:1843
+#: templates/js/translated/purchase_order.js:2105
+#: templates/js/translated/return_order.js:718
+#: templates/js/translated/sales_order.js:963
+#: templates/js/translated/sales_order.js:1871
#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:2134
msgid "Notes"
msgstr ""
@@ -138,7 +138,7 @@ msgstr ""
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/helpers.py:602 order/models.py:409 order/models.py:565
+#: InvenTree/helpers.py:602 order/models.py:410 order/models.py:571
msgid "Invalid quantity provided"
msgstr ""
@@ -210,7 +210,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:409 stock/models.py:2202
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -220,20 +220,24 @@ msgstr ""
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:416 common/models.py:2607 company/models.py:129
-#: company/models.py:305 company/models.py:541 order/models.py:201
-#: order/models.py:1377 order/models.py:1856 part/admin.py:39
+#: InvenTree/models.py:416 common/models.py:2621 company/models.py:129
+#: company/models.py:305 company/models.py:541 order/models.py:202
+#: order/models.py:1062 order/models.py:1412 part/admin.py:39
#: part/models.py:892 part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_base.html:164
#: stock/admin.py:120 templates/js/translated/company.js:962
-#: templates/js/translated/company.js:1261 templates/js/translated/part.js:1932
-#: templates/js/translated/purchase_order.js:1878
-#: templates/js/translated/sales_order.js:926
+#: templates/js/translated/company.js:1261 templates/js/translated/order.js:326
+#: templates/js/translated/part.js:1932
+#: templates/js/translated/purchase_order.js:1945
+#: templates/js/translated/purchase_order.js:2109
+#: templates/js/translated/return_order.js:722
+#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:1876
msgid "Link"
msgstr ""
#: InvenTree/models.py:417 build/models.py:293 part/models.py:893
-#: stock/models.py:727
+#: stock/models.py:728
msgid "Link to external URL"
msgstr ""
@@ -246,9 +250,9 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:426 InvenTree/models.py:427 common/models.py:2056
-#: common/models.py:2057 common/models.py:2280 common/models.py:2281
-#: common/models.py:2537 common/models.py:2538 part/models.py:2997
+#: InvenTree/models.py:426 InvenTree/models.py:427 common/models.py:2070
+#: common/models.py:2071 common/models.py:2294 common/models.py:2295
+#: common/models.py:2551 common/models.py:2552 part/models.py:2997
#: part/models.py:3085 part/models.py:3164 part/models.py:3184
#: plugin/models.py:270 plugin/models.py:271
#: report/templates/report/inventree_test_report_base.html:105
@@ -293,7 +297,7 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:571 InvenTree/models.py:572 common/models.py:2266
+#: InvenTree/models.py:571 InvenTree/models.py:572 common/models.py:2280
#: company/models.py:387 label/models.py:102 part/models.py:838
#: part/models.py:3332 plugin/models.py:94 report/models.py:158
#: templates/InvenTree/settings/mixins/urls.html:13
@@ -316,7 +320,7 @@ msgstr ""
#: company/models.py:547 company/templates/company/company_base.html:72
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:108 label/models.py:109
-#: order/models.py:199 part/admin.py:194 part/admin.py:276 part/models.py:860
+#: order/models.py:200 part/admin.py:194 part/admin.py:276 part/models.py:860
#: part/models.py:3341 part/templates/part/category.html:81
#: part/templates/part/part_base.html:172
#: part/templates/part/part_scheduling.html:12 report/models.py:171
@@ -332,11 +336,11 @@ msgstr ""
#: templates/js/translated/company.js:1236 templates/js/translated/part.js:1155
#: templates/js/translated/part.js:1597 templates/js/translated/part.js:1869
#: templates/js/translated/part.js:2348 templates/js/translated/part.js:2439
-#: templates/js/translated/purchase_order.js:1548
-#: templates/js/translated/purchase_order.js:1682
-#: templates/js/translated/purchase_order.js:1860
+#: templates/js/translated/purchase_order.js:1615
+#: templates/js/translated/purchase_order.js:1749
+#: templates/js/translated/purchase_order.js:1927
#: templates/js/translated/return_order.js:272
-#: templates/js/translated/sales_order.js:714
+#: templates/js/translated/sales_order.js:740
#: templates/js/translated/stock.js:1418 templates/js/translated/stock.js:1791
#: templates/js/translated/stock.js:2551 templates/js/translated/stock.js:2623
msgid "Description"
@@ -363,7 +367,7 @@ msgstr ""
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:702 order/serializers.py:503
+#: InvenTree/models.py:702
msgid "Barcode Hash"
msgstr ""
@@ -375,11 +379,11 @@ msgstr ""
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:801
+#: InvenTree/models.py:802
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:802
+#: InvenTree/models.py:803
msgid "An error has been logged by the server."
msgstr ""
@@ -460,107 +464,107 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:708
msgid "Czech"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:709
msgid "Danish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:710
msgid "German"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:711
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:709
+#: InvenTree/settings.py:712
msgid "English"
msgstr ""
-#: InvenTree/settings.py:710
+#: InvenTree/settings.py:713
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:711
+#: InvenTree/settings.py:714
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:712
+#: InvenTree/settings.py:715
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/settings.py:713
+#: InvenTree/settings.py:716
msgid "French"
msgstr ""
-#: InvenTree/settings.py:714
+#: InvenTree/settings.py:717
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:715
+#: InvenTree/settings.py:718
msgid "Hungarian"
msgstr ""
-#: InvenTree/settings.py:716
+#: InvenTree/settings.py:719
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:717
+#: InvenTree/settings.py:720
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:718
+#: InvenTree/settings.py:721
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:719
+#: InvenTree/settings.py:722
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:720
+#: InvenTree/settings.py:723
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:721
+#: InvenTree/settings.py:724
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:722
+#: InvenTree/settings.py:725
msgid "Portuguese"
msgstr ""
-#: InvenTree/settings.py:723
+#: InvenTree/settings.py:726
msgid "Portuguese (Brazilian)"
msgstr ""
-#: InvenTree/settings.py:724
+#: InvenTree/settings.py:727
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:725
+#: InvenTree/settings.py:728
msgid "Slovenian"
msgstr ""
-#: InvenTree/settings.py:726
+#: InvenTree/settings.py:729
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:727
+#: InvenTree/settings.py:730
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:728
+#: InvenTree/settings.py:731
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:729
+#: InvenTree/settings.py:732
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:730
+#: InvenTree/settings.py:733
msgid "Chinese"
msgstr ""
@@ -576,188 +580,189 @@ msgstr ""
msgid "InvenTree system health checks failed"
msgstr ""
-#: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:313 InvenTree/status_codes.py:350
-#: InvenTree/status_codes.py:385 templates/js/translated/table_filters.js:417
+#: InvenTree/status_codes.py:139 InvenTree/status_codes.py:181
+#: InvenTree/status_codes.py:357 InvenTree/status_codes.py:394
+#: InvenTree/status_codes.py:429 templates/js/translated/table_filters.js:417
msgid "Pending"
msgstr ""
-#: InvenTree/status_codes.py:100
+#: InvenTree/status_codes.py:140
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:316
-#: InvenTree/status_codes.py:352 order/templates/order/order_base.html:142
-#: order/templates/order/sales_order_base.html:133
+#: InvenTree/status_codes.py:141 InvenTree/status_codes.py:360
+#: InvenTree/status_codes.py:396 order/templates/order/order_base.html:161
+#: order/templates/order/sales_order_base.html:161
msgid "Complete"
msgstr ""
-#: InvenTree/status_codes.py:102 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:315 InvenTree/status_codes.py:353
+#: InvenTree/status_codes.py:142 InvenTree/status_codes.py:184
+#: InvenTree/status_codes.py:359 InvenTree/status_codes.py:397
msgid "Cancelled"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:143
-#: InvenTree/status_codes.py:183
+#: InvenTree/status_codes.py:143 InvenTree/status_codes.py:185
+#: InvenTree/status_codes.py:227
msgid "Lost"
msgstr ""
-#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:186
+#: InvenTree/status_codes.py:144 InvenTree/status_codes.py:186
+#: InvenTree/status_codes.py:230
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1260
-#: templates/js/translated/sales_order.js:1503
-#: templates/js/translated/sales_order.js:1818
-msgid "Shipped"
-msgstr ""
-
-#: InvenTree/status_codes.py:179
-msgid "OK"
-msgstr ""
-
-#: InvenTree/status_codes.py:180
-msgid "Attention needed"
-msgstr ""
-
-#: InvenTree/status_codes.py:181
-msgid "Damaged"
-msgstr ""
-
-#: InvenTree/status_codes.py:182
-msgid "Destroyed"
-msgstr ""
-
-#: InvenTree/status_codes.py:184
-msgid "Rejected"
-msgstr ""
-
-#: InvenTree/status_codes.py:185
-msgid "Quarantined"
-msgstr ""
-
-#: InvenTree/status_codes.py:263
-msgid "Legacy stock tracking entry"
-msgstr ""
-
-#: InvenTree/status_codes.py:265
-msgid "Stock item created"
-msgstr ""
-
-#: InvenTree/status_codes.py:267
-msgid "Edited stock item"
-msgstr ""
-
-#: InvenTree/status_codes.py:268
-msgid "Assigned serial number"
-msgstr ""
-
-#: InvenTree/status_codes.py:270
-msgid "Stock counted"
-msgstr ""
-
-#: InvenTree/status_codes.py:271
-msgid "Stock manually added"
-msgstr ""
-
-#: InvenTree/status_codes.py:272
-msgid "Stock manually removed"
-msgstr ""
-
-#: InvenTree/status_codes.py:274
-msgid "Location changed"
-msgstr ""
-
-#: InvenTree/status_codes.py:276
-msgid "Installed into assembly"
-msgstr ""
-
-#: InvenTree/status_codes.py:277
-msgid "Removed from assembly"
-msgstr ""
-
-#: InvenTree/status_codes.py:279
-msgid "Installed component item"
-msgstr ""
-
-#: InvenTree/status_codes.py:280
-msgid "Removed component item"
-msgstr ""
-
-#: InvenTree/status_codes.py:282
-msgid "Split from parent item"
-msgstr ""
-
-#: InvenTree/status_codes.py:283
-msgid "Split child item"
-msgstr ""
-
-#: InvenTree/status_codes.py:285 templates/js/translated/stock.js:2213
-msgid "Merged stock items"
-msgstr ""
-
-#: InvenTree/status_codes.py:287
-msgid "Converted to variant"
-msgstr ""
-
-#: InvenTree/status_codes.py:289 templates/js/translated/table_filters.js:273
-msgid "Sent to customer"
-msgstr ""
-
-#: InvenTree/status_codes.py:290
-msgid "Returned from customer"
-msgstr ""
-
-#: InvenTree/status_codes.py:292
-msgid "Build order output created"
-msgstr ""
-
-#: InvenTree/status_codes.py:293
-msgid "Build order output completed"
-msgstr ""
-
-#: InvenTree/status_codes.py:294
-msgid "Consumed by build order"
-msgstr ""
-
-#: InvenTree/status_codes.py:296
-msgid "Shipped against Sales Order"
-msgstr ""
-
-#: InvenTree/status_codes.py:298
-msgid "Received against Purchase Order"
-msgstr ""
-
-#: InvenTree/status_codes.py:300
-msgid "Returned against Return Order"
-msgstr ""
-
-#: InvenTree/status_codes.py:314
-msgid "Production"
-msgstr ""
-
-#: InvenTree/status_codes.py:351
+#: InvenTree/status_codes.py:182 InvenTree/status_codes.py:395
msgid "In Progress"
msgstr ""
-#: InvenTree/status_codes.py:386
+#: InvenTree/status_codes.py:183 order/models.py:1295
+#: templates/js/translated/sales_order.js:1418
+#: templates/js/translated/sales_order.js:1542
+#: templates/js/translated/sales_order.js:1846
+msgid "Shipped"
+msgstr ""
+
+#: InvenTree/status_codes.py:223
+msgid "OK"
+msgstr ""
+
+#: InvenTree/status_codes.py:224
+msgid "Attention needed"
+msgstr ""
+
+#: InvenTree/status_codes.py:225
+msgid "Damaged"
+msgstr ""
+
+#: InvenTree/status_codes.py:226
+msgid "Destroyed"
+msgstr ""
+
+#: InvenTree/status_codes.py:228
+msgid "Rejected"
+msgstr ""
+
+#: InvenTree/status_codes.py:229
+msgid "Quarantined"
+msgstr ""
+
+#: InvenTree/status_codes.py:307
+msgid "Legacy stock tracking entry"
+msgstr ""
+
+#: InvenTree/status_codes.py:309
+msgid "Stock item created"
+msgstr ""
+
+#: InvenTree/status_codes.py:311
+msgid "Edited stock item"
+msgstr ""
+
+#: InvenTree/status_codes.py:312
+msgid "Assigned serial number"
+msgstr ""
+
+#: InvenTree/status_codes.py:314
+msgid "Stock counted"
+msgstr ""
+
+#: InvenTree/status_codes.py:315
+msgid "Stock manually added"
+msgstr ""
+
+#: InvenTree/status_codes.py:316
+msgid "Stock manually removed"
+msgstr ""
+
+#: InvenTree/status_codes.py:318
+msgid "Location changed"
+msgstr ""
+
+#: InvenTree/status_codes.py:320
+msgid "Installed into assembly"
+msgstr ""
+
+#: InvenTree/status_codes.py:321
+msgid "Removed from assembly"
+msgstr ""
+
+#: InvenTree/status_codes.py:323
+msgid "Installed component item"
+msgstr ""
+
+#: InvenTree/status_codes.py:324
+msgid "Removed component item"
+msgstr ""
+
+#: InvenTree/status_codes.py:326
+msgid "Split from parent item"
+msgstr ""
+
+#: InvenTree/status_codes.py:327
+msgid "Split child item"
+msgstr ""
+
+#: InvenTree/status_codes.py:329 templates/js/translated/stock.js:2213
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:331
+msgid "Converted to variant"
+msgstr ""
+
+#: InvenTree/status_codes.py:333 templates/js/translated/table_filters.js:273
+msgid "Sent to customer"
+msgstr ""
+
+#: InvenTree/status_codes.py:334
+msgid "Returned from customer"
+msgstr ""
+
+#: InvenTree/status_codes.py:336
+msgid "Build order output created"
+msgstr ""
+
+#: InvenTree/status_codes.py:337
+msgid "Build order output completed"
+msgstr ""
+
+#: InvenTree/status_codes.py:338
+msgid "Consumed by build order"
+msgstr ""
+
+#: InvenTree/status_codes.py:340
+msgid "Shipped against Sales Order"
+msgstr ""
+
+#: InvenTree/status_codes.py:342
+msgid "Received against Purchase Order"
+msgstr ""
+
+#: InvenTree/status_codes.py:344
+msgid "Returned against Return Order"
+msgstr ""
+
+#: InvenTree/status_codes.py:358
+msgid "Production"
+msgstr ""
+
+#: InvenTree/status_codes.py:430
msgid "Return"
msgstr ""
-#: InvenTree/status_codes.py:387
+#: InvenTree/status_codes.py:431
msgid "Repair"
msgstr ""
-#: InvenTree/status_codes.py:388
+#: InvenTree/status_codes.py:432
msgid "Refund"
msgstr ""
-#: InvenTree/status_codes.py:389
+#: InvenTree/status_codes.py:433
msgid "Replace"
msgstr ""
-#: InvenTree/status_codes.py:390
+#: InvenTree/status_codes.py:434
msgid "Reject"
msgstr ""
@@ -801,7 +806,7 @@ msgstr ""
msgid "About InvenTree"
msgstr ""
-#: build/api.py:245
+#: build/api.py:221
msgid "Build must be cancelled before it can be deleted"
msgstr ""
@@ -821,7 +826,7 @@ msgstr ""
#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:141
#: templates/InvenTree/settings/sidebar.html:49
-#: templates/js/translated/search.js:214 users/models.py:42
+#: templates/js/translated/search.js:216 users/models.py:42
msgid "Build Orders"
msgstr ""
@@ -833,27 +838,27 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:158 order/models.py:326 order/models.py:722
-#: order/models.py:1027 order/models.py:1638 part/admin.py:278
+#: build/models.py:158 order/models.py:327 order/models.py:734
+#: order/models.py:1056 order/models.py:1673 part/admin.py:278
#: part/models.py:3602 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
#: report/templates/report/inventree_so_report_base.html:28
#: templates/js/translated/bom.js:739 templates/js/translated/bom.js:913
-#: templates/js/translated/build.js:1847 templates/js/translated/order.js:269
+#: templates/js/translated/build.js:1847 templates/js/translated/order.js:272
#: templates/js/translated/pricing.js:368
-#: templates/js/translated/purchase_order.js:1903
-#: templates/js/translated/return_order.js:668
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/return_order.js:671
+#: templates/js/translated/sales_order.js:1710
msgid "Reference"
msgstr ""
#: build/models.py:169
-msgid "Brief description of the build"
+msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:177 build/templates/build/build_base.html:172
+#: build/models.py:177 build/templates/build/build_base.html:189
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
@@ -862,9 +867,9 @@ msgstr ""
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:183 build/templates/build/build_base.html:80
+#: build/models.py:183 build/templates/build/build_base.html:98
#: build/templates/build/detail.html:29 company/models.py:720
-#: order/models.py:1123 order/models.py:1239 order/models.py:1240
+#: order/models.py:1158 order/models.py:1274 order/models.py:1275
#: part/models.py:382 part/models.py:2849 part/models.py:2963
#: part/models.py:3103 part/models.py:3122 part/models.py:3141
#: part/models.py:3162 part/models.py:3254 part/models.py:3375
@@ -885,7 +890,7 @@ msgstr ""
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
#: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:502 templates/js/translated/bom.js:601
+#: templates/js/translated/barcode.js:516 templates/js/translated/bom.js:601
#: templates/js/translated/bom.js:738 templates/js/translated/bom.js:857
#: templates/js/translated/build.js:1230 templates/js/translated/build.js:1714
#: templates/js/translated/build.js:2213 templates/js/translated/build.js:2615
@@ -895,16 +900,16 @@ msgstr ""
#: templates/js/translated/company.js:1154 templates/js/translated/part.js:1582
#: templates/js/translated/part.js:1648 templates/js/translated/part.js:1838
#: templates/js/translated/pricing.js:351
-#: templates/js/translated/purchase_order.js:694
-#: templates/js/translated/purchase_order.js:1195
-#: templates/js/translated/purchase_order.js:1681
-#: templates/js/translated/purchase_order.js:1845
-#: templates/js/translated/return_order.js:482
-#: templates/js/translated/return_order.js:649
-#: templates/js/translated/sales_order.js:235
-#: templates/js/translated/sales_order.js:1068
-#: templates/js/translated/sales_order.js:1454
-#: templates/js/translated/sales_order.js:1666
+#: templates/js/translated/purchase_order.js:697
+#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1748
+#: templates/js/translated/purchase_order.js:1912
+#: templates/js/translated/return_order.js:485
+#: templates/js/translated/return_order.js:652
+#: templates/js/translated/sales_order.js:239
+#: templates/js/translated/sales_order.js:1094
+#: templates/js/translated/sales_order.js:1493
+#: templates/js/translated/sales_order.js:1694
#: templates/js/translated/stock.js:622 templates/js/translated/stock.js:788
#: templates/js/translated/stock.js:1000 templates/js/translated/stock.js:1747
#: templates/js/translated/stock.js:2649 templates/js/translated/stock.js:2873
@@ -924,9 +929,9 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:205 build/serializers.py:825
+#: build/models.py:205 build/serializers.py:828
#: templates/js/translated/build.js:2201
-#: templates/js/translated/sales_order.js:1056
+#: templates/js/translated/sales_order.js:1082
msgid "Source Location"
msgstr ""
@@ -966,19 +971,19 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:248 build/serializers.py:226 order/serializers.py:481
-#: stock/models.py:731 templates/js/translated/purchase_order.js:1058
+#: build/models.py:248 build/serializers.py:229 order/serializers.py:487
+#: stock/models.py:732 templates/js/translated/purchase_order.js:1048
msgid "Batch Code"
msgstr ""
-#: build/models.py:252 build/serializers.py:227
+#: build/models.py:252 build/serializers.py:230
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:255 order/models.py:209 part/models.py:1028
-#: part/templates/part/part_base.html:319
+#: build/models.py:255 order/models.py:210 part/models.py:1028
+#: part/templates/part/part_base.html:312
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:727
+#: templates/js/translated/sales_order.js:753
msgid "Creation Date"
msgstr ""
@@ -990,7 +995,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:263 order/models.py:376 order/models.py:1681
+#: build/models.py:263 order/models.py:377 order/models.py:1716
#: templates/js/translated/build.js:2700
msgid "Completion Date"
msgstr ""
@@ -1007,15 +1012,15 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:286 build/templates/build/build_base.html:193
-#: build/templates/build/detail.html:122 order/models.py:223
-#: order/templates/order/order_base.html:194
-#: order/templates/order/return_order_base.html:162
-#: order/templates/order/sales_order_base.html:193 part/models.py:1032
-#: part/templates/part/part_base.html:399
+#: build/models.py:286 build/templates/build/build_base.html:210
+#: build/templates/build/detail.html:122 order/models.py:224
+#: order/templates/order/order_base.html:213
+#: order/templates/order/return_order_base.html:183
+#: order/templates/order/sales_order_base.html:221 part/models.py:1032
+#: part/templates/part/part_base.html:392
#: report/templates/report/inventree_build_order_base.html:158
#: templates/js/translated/build.js:2672
-#: templates/js/translated/purchase_order.js:1593
+#: templates/js/translated/purchase_order.js:1660
#: templates/js/translated/return_order.js:305
#: templates/js/translated/table_filters.js:391
msgid "Responsible"
@@ -1027,9 +1032,9 @@ msgstr ""
#: build/models.py:292 build/templates/build/detail.html:108
#: company/templates/company/manufacturer_part.html:107
-#: company/templates/company/supplier_part.html:188
-#: part/templates/part/part_base.html:392 stock/models.py:725
-#: stock/templates/stock/item_base.html:206
+#: company/templates/company/supplier_part.html:182
+#: part/templates/part/part_base.html:385 stock/models.py:726
+#: stock/templates/stock/item_base.html:201
msgid "External Link"
msgstr ""
@@ -1075,11 +1080,11 @@ msgstr ""
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1209 order/models.py:1515
+#: build/models.py:1209 order/models.py:1550
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1215 order/models.py:1518
+#: build/models.py:1215 order/models.py:1553
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -1091,7 +1096,7 @@ msgstr ""
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1347 stock/templates/stock/item_base.html:175
+#: build/models.py:1347 stock/templates/stock/item_base.html:170
#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2588
#: templates/navbar.html:38
msgid "Build"
@@ -1101,19 +1106,19 @@ msgstr ""
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1364 build/serializers.py:674 order/serializers.py:1013
-#: order/serializers.py:1034 stock/serializers.py:388 stock/serializers.py:741
+#: build/models.py:1364 build/serializers.py:677 order/serializers.py:1035
+#: order/serializers.py:1056 stock/serializers.py:388 stock/serializers.py:741
#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:200
+#: stock/templates/stock/item_base.html:195
#: templates/js/translated/build.js:801 templates/js/translated/build.js:806
#: templates/js/translated/build.js:2215 templates/js/translated/build.js:2785
-#: templates/js/translated/sales_order.js:236
-#: templates/js/translated/sales_order.js:1069
-#: templates/js/translated/sales_order.js:1367
-#: templates/js/translated/sales_order.js:1372
-#: templates/js/translated/sales_order.js:1461
-#: templates/js/translated/sales_order.js:1551
+#: templates/js/translated/sales_order.js:240
+#: templates/js/translated/sales_order.js:1095
+#: templates/js/translated/sales_order.js:1394
+#: templates/js/translated/sales_order.js:1399
+#: templates/js/translated/sales_order.js:1500
+#: templates/js/translated/sales_order.js:1590
#: templates/js/translated/stock.js:623 templates/js/translated/stock.js:789
#: templates/js/translated/stock.js:2756
msgid "Stock Item"
@@ -1123,10 +1128,10 @@ msgstr ""
msgid "Source stock item"
msgstr ""
-#: build/models.py:1377 build/serializers.py:194
-#: build/templates/build/build_base.html:85
-#: build/templates/build/detail.html:34 common/models.py:2088
-#: order/models.py:1013 order/models.py:1559 order/serializers.py:1187
+#: build/models.py:1377 build/serializers.py:197
+#: build/templates/build/build_base.html:103
+#: build/templates/build/detail.html:34 common/models.py:2102
+#: order/models.py:1042 order/models.py:1594 order/serializers.py:1209
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277
#: part/forms.py:47 part/models.py:2976 part/models.py:3583
#: part/templates/part/part_pricing.html:16
@@ -1138,31 +1143,32 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
#: stock/admin.py:103 stock/serializers.py:281
-#: stock/templates/stock/item_base.html:293
-#: stock/templates/stock/item_base.html:301
+#: stock/templates/stock/item_base.html:288
+#: stock/templates/stock/item_base.html:296
+#: stock/templates/stock/item_base.html:343
#: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:504 templates/js/translated/bom.js:740
+#: templates/js/translated/barcode.js:518 templates/js/translated/bom.js:740
#: templates/js/translated/bom.js:921 templates/js/translated/build.js:477
#: templates/js/translated/build.js:638 templates/js/translated/build.js:828
#: templates/js/translated/build.js:1252 templates/js/translated/build.js:1740
#: templates/js/translated/build.js:2216
#: templates/js/translated/company.js:1406
#: templates/js/translated/model_renderers.js:201
-#: templates/js/translated/order.js:276 templates/js/translated/part.js:878
+#: templates/js/translated/order.js:279 templates/js/translated/part.js:878
#: templates/js/translated/part.js:1446 templates/js/translated/part.js:2876
#: templates/js/translated/pricing.js:363
#: templates/js/translated/pricing.js:456
#: templates/js/translated/pricing.js:504
#: templates/js/translated/pricing.js:598
-#: templates/js/translated/purchase_order.js:697
-#: templates/js/translated/purchase_order.js:1685
-#: templates/js/translated/purchase_order.js:1909
-#: templates/js/translated/sales_order.js:252
-#: templates/js/translated/sales_order.js:1070
-#: templates/js/translated/sales_order.js:1386
-#: templates/js/translated/sales_order.js:1467
-#: templates/js/translated/sales_order.js:1557
-#: templates/js/translated/sales_order.js:1688
+#: templates/js/translated/purchase_order.js:700
+#: templates/js/translated/purchase_order.js:1752
+#: templates/js/translated/purchase_order.js:1976
+#: templates/js/translated/sales_order.js:256
+#: templates/js/translated/sales_order.js:1096
+#: templates/js/translated/sales_order.js:1413
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1596
+#: templates/js/translated/sales_order.js:1716
#: templates/js/translated/stock.js:494 templates/js/translated/stock.js:648
#: templates/js/translated/stock.js:819 templates/js/translated/stock.js:2800
#: templates/js/translated/stock.js:2885
@@ -1181,255 +1187,256 @@ msgstr ""
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:145 build/serializers.py:703
+#: build/serializers.py:148 build/serializers.py:706
#: templates/js/translated/build.js:1240
msgid "Build Output"
msgstr ""
-#: build/serializers.py:157
+#: build/serializers.py:160
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:161
+#: build/serializers.py:164
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:165
+#: build/serializers.py:168
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:176
+#: build/serializers.py:179
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:195
+#: build/serializers.py:198
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:209 build/serializers.py:694 order/models.py:407
-#: order/serializers.py:354 order/serializers.py:476 part/serializers.py:1088
-#: part/serializers.py:1409 stock/models.py:585 stock/models.py:1344
+#: build/serializers.py:212 build/serializers.py:697 order/models.py:408
+#: order/serializers.py:360 order/serializers.py:482 part/serializers.py:1088
+#: part/serializers.py:1409 stock/models.py:586 stock/models.py:1370
#: stock/serializers.py:290
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:216
+#: build/serializers.py:219
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:219
+#: build/serializers.py:222
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:233 order/serializers.py:489 order/serializers.py:1191
-#: stock/serializers.py:299 templates/js/translated/purchase_order.js:1069
+#: build/serializers.py:236 order/serializers.py:495 order/serializers.py:1213
+#: stock/serializers.py:299 templates/js/translated/purchase_order.js:1072
#: templates/js/translated/stock.js:301 templates/js/translated/stock.js:495
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:234
+#: build/serializers.py:237
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:247
+#: build/serializers.py:250
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:248
+#: build/serializers.py:251
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:283 stock/api.py:647
+#: build/serializers.py:286 stock/api.py:630
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:332 build/serializers.py:401
+#: build/serializers.py:335 build/serializers.py:404
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:371 order/serializers.py:462 order/serializers.py:581
-#: order/serializers.py:1540 part/serializers.py:855 stock/serializers.py:310
+#: build/serializers.py:374 order/serializers.py:468 order/serializers.py:589
+#: order/serializers.py:1562 part/serializers.py:855 stock/serializers.py:310
#: stock/serializers.py:445 stock/serializers.py:526 stock/serializers.py:902
-#: stock/serializers.py:1144 stock/templates/stock/item_base.html:391
-#: templates/js/translated/barcode.js:503
-#: templates/js/translated/barcode.js:747 templates/js/translated/build.js:813
+#: stock/serializers.py:1144 stock/templates/stock/item_base.html:384
+#: templates/js/translated/barcode.js:517
+#: templates/js/translated/barcode.js:764 templates/js/translated/build.js:813
#: templates/js/translated/build.js:1755
-#: templates/js/translated/purchase_order.js:1096
-#: templates/js/translated/sales_order.js:1379
-#: templates/js/translated/sales_order.js:1478
-#: templates/js/translated/sales_order.js:1486
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/purchase_order.js:1097
+#: templates/js/translated/purchase_order.js:1187
+#: templates/js/translated/sales_order.js:1406
+#: templates/js/translated/sales_order.js:1517
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1604
#: templates/js/translated/stock.js:624 templates/js/translated/stock.js:790
#: templates/js/translated/stock.js:1002 templates/js/translated/stock.js:1911
#: templates/js/translated/stock.js:2663
msgid "Location"
msgstr ""
-#: build/serializers.py:372
+#: build/serializers.py:375
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:378 build/templates/build/build_base.html:145
-#: build/templates/build/detail.html:62 order/models.py:748
-#: order/models.py:1664 order/serializers.py:499 stock/admin.py:106
-#: stock/templates/stock/item_base.html:424
-#: templates/js/translated/barcode.js:236 templates/js/translated/build.js:2644
-#: templates/js/translated/purchase_order.js:1200
-#: templates/js/translated/purchase_order.js:1552
+#: build/serializers.py:381 build/templates/build/build_base.html:157
+#: build/templates/build/detail.html:62 order/models.py:760
+#: order/models.py:1699 order/serializers.py:505 stock/admin.py:106
+#: stock/templates/stock/item_base.html:417
+#: templates/js/translated/barcode.js:239 templates/js/translated/build.js:2644
+#: templates/js/translated/purchase_order.js:1227
+#: templates/js/translated/purchase_order.js:1619
#: templates/js/translated/return_order.js:277
-#: templates/js/translated/sales_order.js:719
+#: templates/js/translated/sales_order.js:745
#: templates/js/translated/stock.js:1886 templates/js/translated/stock.js:2774
#: templates/js/translated/stock.js:2901
msgid "Status"
msgstr ""
-#: build/serializers.py:384
+#: build/serializers.py:387
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:385
+#: build/serializers.py:388
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:454
+#: build/serializers.py:457
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:455
+#: build/serializers.py:458
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:461
+#: build/serializers.py:464
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:462
+#: build/serializers.py:465
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:490
+#: build/serializers.py:493
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:491
+#: build/serializers.py:494
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:514
+#: build/serializers.py:517
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:516
+#: build/serializers.py:519
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:526
+#: build/serializers.py:529
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:531
+#: build/serializers.py:534
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:532
+#: build/serializers.py:535
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:542 templates/js/translated/build.js:265
+#: build/serializers.py:545 templates/js/translated/build.js:265
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:547 order/serializers.py:237 order/serializers.py:1081
+#: build/serializers.py:550 order/serializers.py:242 order/serializers.py:1103
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:548
+#: build/serializers.py:551
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:558 templates/js/translated/build.js:269
+#: build/serializers.py:561 templates/js/translated/build.js:269
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:567 templates/js/translated/build.js:253
+#: build/serializers.py:570 templates/js/translated/build.js:253
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:597 build/serializers.py:651 part/models.py:3490
+#: build/serializers.py:600 build/serializers.py:654 part/models.py:3490
#: part/models.py:3873
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:607
+#: build/serializers.py:610
msgid "Build output"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:618
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:665
+#: build/serializers.py:668
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:680 stock/serializers.py:754
+#: build/serializers.py:683 stock/serializers.py:754
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:729 order/serializers.py:1071
+#: build/serializers.py:732 order/serializers.py:1093
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:735
+#: build/serializers.py:738
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:742
+#: build/serializers.py:745
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:747
+#: build/serializers.py:750
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:770 order/serializers.py:1355
+#: build/serializers.py:773 order/serializers.py:1377
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:826
+#: build/serializers.py:829
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:834
+#: build/serializers.py:837
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:835
+#: build/serializers.py:838
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:840
+#: build/serializers.py:843
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:841
+#: build/serializers.py:844
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:846
+#: build/serializers.py:849
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:847
+#: build/serializers.py:850
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:852
+#: build/serializers.py:855
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:853
+#: build/serializers.py:856
msgid "Allocate optional BOM items to build order"
msgstr ""
@@ -1447,101 +1454,141 @@ msgid "Build order {bo} is now overdue"
msgstr ""
#: build/templates/build/build_base.html:39
-#: order/templates/order/order_base.html:28
-#: order/templates/order/return_order_base.html:38
-#: order/templates/order/sales_order_base.html:38
-msgid "Print actions"
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:29
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:43
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:54
+msgid "Barcode actions"
msgstr ""
#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:33
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:46
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:56 templates/qr_button.html:1
+msgid "Show QR Code"
+msgstr ""
+
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:36
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:58
+#: templates/js/translated/barcode.js:466
+#: templates/js/translated/barcode.js:471
+msgid "Unlink Barcode"
+msgstr ""
+
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:38
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:51
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:60
+msgid "Link Barcode"
+msgstr ""
+
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:46
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
+msgid "Print actions"
+msgstr ""
+
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:50
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:54
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:56
+#: build/templates/build/build_base.html:74
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:59
+#: build/templates/build/build_base.html:77
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:62
+#: build/templates/build/build_base.html:80
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:67
-#: build/templates/build/build_base.html:68
+#: build/templates/build/build_base.html:85
+#: build/templates/build/build_base.html:86
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:90
+#: build/templates/build/build_base.html:108
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:117
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:104
-#, python-format
-msgid "This Build Order is allocated to Sales Order %(link)s"
-msgstr ""
-
-#: build/templates/build/build_base.html:111
+#: build/templates/build/build_base.html:123
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:118
+#: build/templates/build/build_base.html:130
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:123
+#: build/templates/build/build_base.html:135
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:128
+#: build/templates/build/build_base.html:140
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:133
+#: build/templates/build/build_base.html:145
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:154
-#: build/templates/build/detail.html:138 order/models.py:205
-#: order/models.py:1033 order/templates/order/order_base.html:170
-#: order/templates/order/return_order_base.html:145
-#: order/templates/order/sales_order_base.html:164
+#: build/templates/build/build_base.html:166
+#: build/templates/build/detail.html:138 order/models.py:206
+#: order/models.py:1068 order/templates/order/order_base.html:189
+#: order/templates/order/return_order_base.html:166
+#: order/templates/order/sales_order_base.html:192
#: report/templates/report/inventree_build_order_base.html:125
#: templates/js/translated/build.js:2692 templates/js/translated/part.js:1465
-#: templates/js/translated/purchase_order.js:1569
-#: templates/js/translated/purchase_order.js:1985
+#: templates/js/translated/purchase_order.js:1636
+#: templates/js/translated/purchase_order.js:2052
#: templates/js/translated/return_order.js:293
-#: templates/js/translated/return_order.js:690
-#: templates/js/translated/sales_order.js:735
-#: templates/js/translated/sales_order.js:1731
+#: templates/js/translated/return_order.js:693
+#: templates/js/translated/sales_order.js:761
+#: templates/js/translated/sales_order.js:1759
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:159
+#: build/templates/build/build_base.html:171
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:159
-#: build/templates/build/build_base.html:211
-#: order/templates/order/order_base.html:106
-#: order/templates/order/return_order_base.html:98
-#: order/templates/order/sales_order_base.html:94
+#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:228
+#: order/templates/order/order_base.html:125
+#: order/templates/order/return_order_base.html:119
+#: order/templates/order/sales_order_base.html:122
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:384
#: templates/js/translated/table_filters.js:444
@@ -1549,43 +1596,51 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:166
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:67 build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:174
+#: order/templates/order/sales_order_base.html:202
#: templates/js/translated/table_filters.js:487
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:179
-#: build/templates/build/detail.html:101 order/api.py:1516 order/models.py:1232
-#: order/models.py:1331 order/models.py:1465
+#: build/templates/build/build_base.html:196
+#: build/templates/build/detail.html:101 order/api.py:1422 order/models.py:1267
+#: order/models.py:1366 order/models.py:1500
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:135
#: report/templates/report/inventree_so_report_base.html:14
-#: stock/templates/stock/item_base.html:371
+#: stock/templates/stock/item_base.html:364
#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/pricing.js:894
-#: templates/js/translated/sales_order.js:681
+#: templates/js/translated/sales_order.js:707
#: templates/js/translated/stock.js:2703
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:186
+#: build/templates/build/build_base.html:203
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_base.html:152
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:200
+#: build/templates/build/build_base.html:217
#: build/templates/build/detail.html:94 templates/js/translated/build.js:2609
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:263
+#: build/templates/build/build_base.html:280
msgid "Delete Build Order"
msgstr ""
+#: build/templates/build/build_base.html:290
+msgid "Build Order QR Code"
+msgstr ""
+
+#: build/templates/build/build_base.html:302
+msgid "Link Barcode to Build Order"
+msgstr ""
+
#: build/templates/build/detail.html:15
msgid "Build Details"
msgstr ""
@@ -1598,9 +1653,8 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1150
-#: templates/js/translated/purchase_order.js:1201
-#: templates/js/translated/purchase_order.js:2027
+#: build/templates/build/detail.html:49 order/models.py:1185
+#: templates/js/translated/purchase_order.js:2094
msgid "Destination"
msgstr ""
@@ -1613,9 +1667,10 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:105
-#: stock/templates/stock/item_base.html:168
+#: stock/templates/stock/item_base.html:163
#: templates/js/translated/build.js:1259
#: templates/js/translated/model_renderers.js:206
+#: templates/js/translated/purchase_order.js:1193
#: templates/js/translated/stock.js:1072 templates/js/translated/stock.js:1900
#: templates/js/translated/stock.js:2908
#: templates/js/translated/table_filters.js:211
@@ -1624,9 +1679,9 @@ msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:157
-#: order/templates/order/return_order_base.html:132
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/order_base.html:176
+#: order/templates/order/return_order_base.html:153
+#: order/templates/order/sales_order_base.html:186
#: templates/js/translated/build.js:2652
msgid "Created"
msgstr ""
@@ -1679,7 +1734,7 @@ msgstr ""
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:86
#: part/templates/part/category.html:184
-#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:740
msgid "Order Parts"
msgstr ""
@@ -1779,23 +1834,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -2680,7 +2736,7 @@ msgstr ""
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1670 common/models.py:2049
+#: common/models.py:1670 common/models.py:2063
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -3001,89 +3057,105 @@ msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:1983
-msgid "Show Quantity in Forms"
+msgid "Regex Search"
msgstr ""
#: common/models.py:1984
-msgid "Display available part quantity in some forms"
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:1990
-msgid "Escape Key Closes Forms"
+msgid "Whole Word Search"
msgstr ""
#: common/models.py:1991
-msgid "Use the escape key to close modal forms"
+msgid "Search queries return results for whole word matches"
msgstr ""
#: common/models.py:1997
-msgid "Fixed Navbar"
+msgid "Show Quantity in Forms"
msgstr ""
#: common/models.py:1998
-msgid "The navbar position is fixed to the top of the screen"
+msgid "Display available part quantity in some forms"
msgstr ""
#: common/models.py:2004
-msgid "Date Format"
+msgid "Escape Key Closes Forms"
msgstr ""
#: common/models.py:2005
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2011
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2012
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2018
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2019
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2019 part/templates/part/detail.html:41
+#: common/models.py:2033 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2020
+#: common/models.py:2034
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2026 part/templates/part/detail.html:62
+#: common/models.py:2040 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2027
+#: common/models.py:2041
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2033
+#: common/models.py:2047
msgid "Table String Length"
msgstr ""
-#: common/models.py:2034
+#: common/models.py:2048
msgid "Maximimum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2103
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2096 company/serializers.py:424 order/models.py:1060
-#: order/models.py:1852 templates/js/translated/company.js:1411
+#: common/models.py:2110 company/serializers.py:424 order/models.py:1095
+#: order/models.py:1888 templates/js/translated/company.js:1411
#: templates/js/translated/part.js:1520 templates/js/translated/pricing.js:603
-#: templates/js/translated/return_order.js:680
+#: templates/js/translated/return_order.js:683
msgid "Price"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2111
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2257 common/models.py:2435
+#: common/models.py:2271 common/models.py:2449
msgid "Endpoint"
msgstr ""
-#: common/models.py:2258
+#: common/models.py:2272
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2281
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2272 part/admin.py:50 part/models.py:1011
+#: common/models.py:2286 part/admin.py:50 part/models.py:1011
#: plugin/models.py:100 templates/js/translated/table_filters.js:62
#: templates/js/translated/table_filters.js:144
#: templates/js/translated/table_filters.js:380
@@ -3091,97 +3163,97 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2287
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2287
+#: common/models.py:2301
msgid "Token"
msgstr ""
-#: common/models.py:2288
+#: common/models.py:2302
msgid "Token for access"
msgstr ""
-#: common/models.py:2295
+#: common/models.py:2309
msgid "Secret"
msgstr ""
-#: common/models.py:2296
+#: common/models.py:2310
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2402
+#: common/models.py:2416
msgid "Message ID"
msgstr ""
-#: common/models.py:2403
+#: common/models.py:2417
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2425
msgid "Host"
msgstr ""
-#: common/models.py:2412
+#: common/models.py:2426
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2433
msgid "Header"
msgstr ""
-#: common/models.py:2420
+#: common/models.py:2434
msgid "Header of this message"
msgstr ""
-#: common/models.py:2426
+#: common/models.py:2440
msgid "Body"
msgstr ""
-#: common/models.py:2427
+#: common/models.py:2441
msgid "Body of this message"
msgstr ""
-#: common/models.py:2436
+#: common/models.py:2450
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2441
+#: common/models.py:2455
msgid "Worked on"
msgstr ""
-#: common/models.py:2442
+#: common/models.py:2456
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2596
+#: common/models.py:2610
msgid "Id"
msgstr ""
-#: common/models.py:2602 templates/js/translated/news.js:35
+#: common/models.py:2616 templates/js/translated/news.js:35
msgid "Title"
msgstr ""
-#: common/models.py:2612 templates/js/translated/news.js:51
+#: common/models.py:2626 templates/js/translated/news.js:51
msgid "Published"
msgstr ""
-#: common/models.py:2617 templates/InvenTree/settings/plugin.html:62
+#: common/models.py:2631 templates/InvenTree/settings/plugin.html:62
#: templates/InvenTree/settings/plugin_settings.html:33
#: templates/js/translated/news.js:47
msgid "Author"
msgstr ""
-#: common/models.py:2622 templates/js/translated/news.js:43
+#: common/models.py:2636 templates/js/translated/news.js:43
msgid "Summary"
msgstr ""
-#: common/models.py:2627
+#: common/models.py:2641
msgid "Read"
msgstr ""
-#: common/models.py:2628
+#: common/models.py:2642
msgid "Was this news item read?"
msgstr ""
@@ -3293,9 +3365,9 @@ msgid "Contact email address"
msgstr ""
#: company/models.py:126 company/templates/company/company_base.html:140
-#: order/models.py:231 order/templates/order/order_base.html:187
-#: order/templates/order/return_order_base.html:155
-#: order/templates/order/sales_order_base.html:186
+#: order/models.py:232 order/templates/order/order_base.html:206
+#: order/templates/order/return_order_base.html:176
+#: order/templates/order/sales_order_base.html:214
msgid "Contact"
msgstr ""
@@ -3349,7 +3421,7 @@ msgstr ""
msgid "Company"
msgstr ""
-#: company/models.py:277 company/models.py:512 stock/models.py:667
+#: company/models.py:277 company/models.py:512 stock/models.py:668
#: stock/serializers.py:143 stock/templates/stock/item_base.html:143
#: templates/js/translated/bom.js:591
msgid "Base Part"
@@ -3361,8 +3433,8 @@ msgstr ""
#: company/models.py:292 company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:152 part/serializers.py:359
-#: stock/templates/stock/item_base.html:213
+#: company/templates/company/supplier_part.html:146 part/serializers.py:359
+#: stock/templates/stock/item_base.html:208
#: templates/js/translated/company.js:484
#: templates/js/translated/company.js:809
#: templates/js/translated/company.js:939
@@ -3376,13 +3448,13 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:299 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:160 part/serializers.py:365
+#: company/templates/company/supplier_part.html:154 part/serializers.py:365
#: templates/js/translated/company.js:325
#: templates/js/translated/company.js:808
#: templates/js/translated/company.js:955
#: templates/js/translated/company.js:1225 templates/js/translated/part.js:1435
-#: templates/js/translated/purchase_order.js:1684
-#: templates/js/translated/purchase_order.js:1891
+#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1958
msgid "MPN"
msgstr ""
@@ -3401,7 +3473,7 @@ msgstr ""
#: company/models.py:357 company/models.py:381 company/models.py:535
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:223
+#: stock/templates/stock/item_base.html:218
msgid "Manufacturer Part"
msgstr ""
@@ -3411,7 +3483,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2195 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3422,7 +3494,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:401 part/admin.py:40 part/models.py:978
-#: part/models.py:3337 part/templates/part/part_base.html:287
+#: part/models.py:3337 part/templates/part/part_base.html:286
#: templates/InvenTree/settings/settings_staff_js.html:255
#: templates/js/translated/company.js:1068 templates/js/translated/part.js:1274
msgid "Units"
@@ -3437,15 +3509,15 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:522 company/templates/company/company_base.html:82
-#: company/templates/company/supplier_part.html:136 order/models.py:349
-#: order/templates/order/order_base.html:120 part/bom.py:285 part/bom.py:313
-#: part/serializers.py:348 stock/templates/stock/item_base.html:230
+#: company/templates/company/supplier_part.html:130 order/models.py:350
+#: order/templates/order/order_base.html:139 part/bom.py:285 part/bom.py:313
+#: part/serializers.py:348 stock/templates/stock/item_base.html:225
#: templates/email/overdue_purchase_order.html:16
#: templates/js/translated/company.js:324
#: templates/js/translated/company.js:488
#: templates/js/translated/company.js:1179 templates/js/translated/part.js:1403
#: templates/js/translated/pricing.js:480
-#: templates/js/translated/purchase_order.js:1535
+#: templates/js/translated/purchase_order.js:1602
#: templates/js/translated/table_filters.js:510
msgid "Supplier"
msgstr ""
@@ -3454,12 +3526,12 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:528 company/templates/company/supplier_part.html:146
+#: company/models.py:528 company/templates/company/supplier_part.html:140
#: part/bom.py:286 part/bom.py:314 part/serializers.py:354
#: templates/js/translated/company.js:323 templates/js/translated/part.js:1421
#: templates/js/translated/pricing.js:492
-#: templates/js/translated/purchase_order.js:1683
-#: templates/js/translated/purchase_order.js:1866
+#: templates/js/translated/purchase_order.js:1750
+#: templates/js/translated/purchase_order.js:1933
msgid "SKU"
msgstr ""
@@ -3479,7 +3551,7 @@ msgstr ""
msgid "Supplier part description"
msgstr ""
-#: company/models.py:553 company/templates/company/supplier_part.html:181
+#: company/models.py:553 company/templates/company/supplier_part.html:175
#: part/admin.py:279 part/models.py:3605 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
@@ -3497,9 +3569,9 @@ msgstr ""
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:559 company/templates/company/supplier_part.html:167
-#: stock/admin.py:119 stock/models.py:693
-#: stock/templates/stock/item_base.html:246
+#: company/models.py:559 company/templates/company/supplier_part.html:161
+#: stock/admin.py:119 stock/models.py:694
+#: stock/templates/stock/item_base.html:241
#: templates/js/translated/company.js:1241
#: templates/js/translated/stock.js:2130
msgid "Packaging"
@@ -3510,14 +3582,14 @@ msgid "Part packaging"
msgstr ""
#: company/models.py:562 company/serializers.py:319
-#: company/templates/company/supplier_part.html:174
+#: company/templates/company/supplier_part.html:168
#: templates/js/translated/company.js:1246 templates/js/translated/part.js:1456
#: templates/js/translated/part.js:1512
#: templates/js/translated/purchase_order.js:250
-#: templates/js/translated/purchase_order.js:775
-#: templates/js/translated/purchase_order.js:1032
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:1939
+#: templates/js/translated/purchase_order.js:778
+#: templates/js/translated/purchase_order.js:1022
+#: templates/js/translated/purchase_order.js:1989
+#: templates/js/translated/purchase_order.js:2006
msgid "Pack Quantity"
msgstr ""
@@ -3603,15 +3675,15 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:87 order/models.py:736
-#: order/models.py:1652 order/templates/order/return_order_base.html:112
-#: order/templates/order/sales_order_base.html:116 stock/models.py:712
-#: stock/models.py:713 stock/serializers.py:796
-#: stock/templates/stock/item_base.html:402
+#: company/templates/company/company_base.html:87 order/models.py:748
+#: order/models.py:1687 order/templates/order/return_order_base.html:133
+#: order/templates/order/sales_order_base.html:144 stock/models.py:713
+#: stock/models.py:714 stock/serializers.py:796
+#: stock/templates/stock/item_base.html:395
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:480
#: templates/js/translated/return_order.js:254
-#: templates/js/translated/sales_order.js:696
+#: templates/js/translated/sales_order.js:722
#: templates/js/translated/stock.js:2738
#: templates/js/translated/table_filters.js:514
msgid "Customer"
@@ -3626,7 +3698,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:206
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:529
msgid "Remove Image"
msgstr ""
@@ -3635,25 +3707,25 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:209
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:532
#: templates/InvenTree/settings/user.html:87
#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:238
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:561
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:253
-#: part/templates/part/part_base.html:623
+#: part/templates/part/part_base.html:616
msgid "Download Image"
msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:120 templates/js/translated/search.js:175
+#: templates/InvenTree/search.html:120 templates/js/translated/search.js:177
msgid "Supplier Parts"
msgstr ""
@@ -3684,7 +3756,7 @@ msgid "Delete Parts"
msgstr ""
#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105
-#: templates/js/translated/search.js:179
+#: templates/js/translated/search.js:181
msgid "Manufacturer Parts"
msgstr ""
@@ -3709,7 +3781,7 @@ msgstr ""
#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:200
#: templates/InvenTree/settings/sidebar.html:51
-#: templates/js/translated/search.js:233 templates/navbar.html:50
+#: templates/js/translated/search.js:235 templates/navbar.html:50
#: users/models.py:43
msgid "Purchase Orders"
msgstr ""
@@ -3732,7 +3804,7 @@ msgstr ""
#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:220
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/search.js:247 templates/navbar.html:62
+#: templates/js/translated/search.js:249 templates/navbar.html:62
#: users/models.py:44
msgid "Sales Orders"
msgstr ""
@@ -3758,7 +3830,7 @@ msgstr ""
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:260 templates/navbar.html:65
+#: templates/js/translated/search.js:262 templates/navbar.html:65
#: users/models.py:45
msgid "Return Orders"
msgstr ""
@@ -3792,7 +3864,7 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:221
+#: company/templates/company/supplier_part.html:215
#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85
msgid "Order part"
msgstr ""
@@ -3832,8 +3904,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -3881,50 +3953,21 @@ msgid "Contacts"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:676
-#: stock/templates/stock/item_base.html:239
+#: company/templates/company/supplier_part.html:24 stock/models.py:677
+#: stock/templates/stock/item_base.html:234
#: templates/js/translated/company.js:1195
-#: templates/js/translated/purchase_order.js:695
+#: templates/js/translated/purchase_order.js:698
#: templates/js/translated/stock.js:1990
msgid "Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:36
-#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:41
-#: stock/templates/stock/location.html:54
-msgid "Barcode actions"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:40
-#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:45
-#: stock/templates/stock/location.html:56 templates/qr_button.html:1
-msgid "Show QR Code"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:42
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:58
-#: templates/js/translated/barcode.js:453
-#: templates/js/translated/barcode.js:458
-msgid "Unlink Barcode"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:44
-#: part/templates/part/part_base.html:51
-#: stock/templates/stock/item_base.html:50
-#: stock/templates/stock/location.html:60
-msgid "Link Barcode"
-msgstr ""
-
#: company/templates/company/supplier_part.html:51
msgid "Supplier part actions"
msgstr ""
#: company/templates/company/supplier_part.html:56
#: company/templates/company/supplier_part.html:57
-#: company/templates/company/supplier_part.html:222
+#: company/templates/company/supplier_part.html:216
#: part/templates/part/detail.html:112
msgid "Order Part"
msgstr ""
@@ -3954,67 +3997,60 @@ msgstr ""
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:122
-#: part/templates/part/part_base.html:308
-#: stock/templates/stock/item_base.html:161
-#: stock/templates/stock/location.html:156
-msgid "Barcode Identifier"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:140
+#: company/templates/company/supplier_part.html:134
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:200
+#: company/templates/company/supplier_part.html:194
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:203
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:203
+#: company/templates/company/supplier_part.html:197
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:204
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:198
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198
#: templates/js/translated/stock.js:471
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:217
+#: company/templates/company/supplier_part.html:211
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:242
+#: company/templates/company/supplier_part.html:236
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:247
+#: company/templates/company/supplier_part.html:241
#: templates/js/translated/company.js:373
#: templates/js/translated/pricing.js:666
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:274
+#: company/templates/company/supplier_part.html:268
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:285
+#: company/templates/company/supplier_part.html:279
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:360
+#: company/templates/company/supplier_part.html:354
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:288
#: part/templates/part/category.html:199
#: part/templates/part/category_sidebar.html:17 stock/admin.py:47
-#: stock/templates/stock/location.html:174
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:182
+#: stock/templates/stock/location.html:194
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:977
-#: templates/js/translated/search.js:200 templates/js/translated/stock.js:2569
+#: templates/js/translated/search.js:202 templates/js/translated/stock.js:2569
#: users/models.py:41
msgid "Stock Items"
msgstr ""
@@ -4040,7 +4076,7 @@ msgstr ""
msgid "New Customer"
msgstr ""
-#: company/views.py:52 templates/js/translated/search.js:220
+#: company/views.py:52 templates/js/translated/search.js:222
msgid "Companies"
msgstr ""
@@ -4114,365 +4150,365 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/api.py:229
+#: order/api.py:225
msgid "No matching purchase order found"
msgstr ""
-#: order/api.py:1514 order/models.py:1106 order/models.py:1190
+#: order/api.py:1420 order/models.py:1141 order/models.py:1225
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report_base.html:14
-#: stock/templates/stock/item_base.html:182
+#: stock/templates/stock/item_base.html:177
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1380 templates/js/translated/pricing.js:772
#: templates/js/translated/purchase_order.js:108
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1519
+#: templates/js/translated/purchase_order.js:699
+#: templates/js/translated/purchase_order.js:1586
#: templates/js/translated/stock.js:1970 templates/js/translated/stock.js:2685
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1518
+#: order/api.py:1424
msgid "Unknown"
msgstr ""
-#: order/models.py:66 report/templates/report/inventree_po_report_base.html:31
+#: order/models.py:67 report/templates/report/inventree_po_report_base.html:31
#: report/templates/report/inventree_so_report_base.html:31
-#: templates/js/translated/order.js:299
-#: templates/js/translated/purchase_order.js:1963
-#: templates/js/translated/sales_order.js:1711
+#: templates/js/translated/order.js:302
+#: templates/js/translated/purchase_order.js:2030
+#: templates/js/translated/sales_order.js:1739
msgid "Total Price"
msgstr ""
-#: order/models.py:67
+#: order/models.py:68
msgid "Total price for this order"
msgstr ""
-#: order/models.py:177
+#: order/models.py:178
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:199
-msgid "Order description"
+#: order/models.py:200
+msgid "Order description (optional)"
msgstr ""
-#: order/models.py:201 order/models.py:1378 order/models.py:1856
+#: order/models.py:202 order/models.py:1063 order/models.py:1413
msgid "Link to external page"
msgstr ""
-#: order/models.py:206
+#: order/models.py:207
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:215
+#: order/models.py:216
msgid "Created By"
msgstr ""
-#: order/models.py:222
+#: order/models.py:223
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:232
+#: order/models.py:233
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:236
+#: order/models.py:237
msgid "Order notes"
msgstr ""
-#: order/models.py:327 order/models.py:723
+#: order/models.py:328 order/models.py:735
msgid "Order reference"
msgstr ""
-#: order/models.py:335 order/models.py:748
+#: order/models.py:336 order/models.py:760
msgid "Purchase order status"
msgstr ""
-#: order/models.py:350
+#: order/models.py:351
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:358 order/templates/order/order_base.html:132
-#: templates/js/translated/purchase_order.js:1544
+#: order/models.py:359 order/templates/order/order_base.html:151
+#: templates/js/translated/purchase_order.js:1611
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:358
+#: order/models.py:359
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:365
+#: order/models.py:366
msgid "received by"
msgstr ""
-#: order/models.py:370 order/models.py:1675
+#: order/models.py:371 order/models.py:1710
msgid "Issue Date"
msgstr ""
-#: order/models.py:371 order/models.py:1676
+#: order/models.py:372 order/models.py:1711
msgid "Date order was issued"
msgstr ""
-#: order/models.py:377 order/models.py:1682
+#: order/models.py:378 order/models.py:1717
msgid "Date order was completed"
msgstr ""
-#: order/models.py:412
+#: order/models.py:413
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:560
+#: order/models.py:566
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:737
+#: order/models.py:749
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:756 order/models.py:1669
+#: order/models.py:768 order/models.py:1704
msgid "Customer Reference "
msgstr ""
-#: order/models.py:756 order/models.py:1670
+#: order/models.py:768 order/models.py:1705
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:758 order/models.py:1336
-#: templates/js/translated/sales_order.js:743
-#: templates/js/translated/sales_order.js:906
+#: order/models.py:770 order/models.py:1371
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:932
msgid "Shipment Date"
msgstr ""
-#: order/models.py:765
+#: order/models.py:777
msgid "shipped by"
msgstr ""
-#: order/models.py:809
+#: order/models.py:826
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:813
-msgid "Only a pending order can be marked as complete"
+#: order/models.py:830
+msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:816 templates/js/translated/sales_order.js:437
+#: order/models.py:833 templates/js/translated/sales_order.js:441
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:819
+#: order/models.py:836
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1014
+#: order/models.py:1043
msgid "Item quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1056
msgid "Line item reference"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1058
msgid "Line item notes"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1069
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1051
+#: order/models.py:1086
msgid "Context"
msgstr ""
-#: order/models.py:1052
+#: order/models.py:1087
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1061
+#: order/models.py:1096
msgid "Unit price"
msgstr ""
-#: order/models.py:1091
+#: order/models.py:1126
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1099
+#: order/models.py:1134
msgid "deleted"
msgstr ""
-#: order/models.py:1105 order/models.py:1190 order/models.py:1231
-#: order/models.py:1330 order/models.py:1465 order/models.py:1821
-#: order/models.py:1870 templates/js/translated/sales_order.js:1357
+#: order/models.py:1140 order/models.py:1225 order/models.py:1266
+#: order/models.py:1365 order/models.py:1500 order/models.py:1857
+#: order/models.py:1904 templates/js/translated/sales_order.js:1383
msgid "Order"
msgstr ""
-#: order/models.py:1124
+#: order/models.py:1159
msgid "Supplier part"
msgstr ""
-#: order/models.py:1131 order/templates/order/order_base.html:180
+#: order/models.py:1166 order/templates/order/order_base.html:199
#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1536
-#: templates/js/translated/purchase_order.js:1198
-#: templates/js/translated/purchase_order.js:2007
-#: templates/js/translated/return_order.js:703
+#: templates/js/translated/purchase_order.js:1225
+#: templates/js/translated/purchase_order.js:2074
+#: templates/js/translated/return_order.js:706
#: templates/js/translated/table_filters.js:48
#: templates/js/translated/table_filters.js:421
msgid "Received"
msgstr ""
-#: order/models.py:1132
+#: order/models.py:1167
msgid "Number of items received"
msgstr ""
-#: order/models.py:1139 stock/models.py:809 stock/serializers.py:229
-#: stock/templates/stock/item_base.html:189
+#: order/models.py:1174 stock/models.py:810 stock/serializers.py:229
+#: stock/templates/stock/item_base.html:184
#: templates/js/translated/stock.js:2021
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1140
+#: order/models.py:1175
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1188
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1219
+#: order/models.py:1254
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1224
+#: order/models.py:1259
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1250 part/templates/part/part_pricing.html:107
+#: order/models.py:1285 part/templates/part/part_pricing.html:107
#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:922
msgid "Sale Price"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1286
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1261
+#: order/models.py:1296
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1337
+#: order/models.py:1372
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1344
+#: order/models.py:1379
msgid "Checked By"
msgstr ""
-#: order/models.py:1345
+#: order/models.py:1380
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1352 order/models.py:1541 order/serializers.py:1202
-#: order/serializers.py:1330 templates/js/translated/model_renderers.js:403
+#: order/models.py:1387 order/models.py:1576 order/serializers.py:1224
+#: order/serializers.py:1352 templates/js/translated/model_renderers.js:409
msgid "Shipment"
msgstr ""
-#: order/models.py:1353
+#: order/models.py:1388
msgid "Shipment number"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1392
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1363
+#: order/models.py:1398
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1364
+#: order/models.py:1399
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1371
+#: order/models.py:1406
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1372
+#: order/models.py:1407
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1390
+#: order/models.py:1425
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1428
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1500 order/models.py:1502
+#: order/models.py:1535 order/models.py:1537
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1506
+#: order/models.py:1541
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1508
+#: order/models.py:1543
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1511
+#: order/models.py:1546
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1521 order/serializers.py:1064
+#: order/models.py:1556 order/serializers.py:1086
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1524
+#: order/models.py:1559
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1525
+#: order/models.py:1560
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1533
+#: order/models.py:1568
msgid "Line"
msgstr ""
-#: order/models.py:1542
+#: order/models.py:1577
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1555 order/models.py:1829
-#: templates/js/translated/return_order.js:661
+#: order/models.py:1590 order/models.py:1865
+#: templates/js/translated/return_order.js:664
msgid "Item"
msgstr ""
-#: order/models.py:1556
+#: order/models.py:1591
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1559
+#: order/models.py:1594
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:1639
+#: order/models.py:1674
msgid "Return Order reference"
msgstr ""
-#: order/models.py:1653
+#: order/models.py:1688
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:1664
+#: order/models.py:1699
msgid "Return order status"
msgstr ""
-#: order/models.py:1814
+#: order/models.py:1850
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:1822 order/models.py:1870
+#: order/models.py:1858 order/models.py:1904
#: order/templates/order/return_order_base.html:9
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
@@ -4481,164 +4517,168 @@ msgstr ""
msgid "Return Order"
msgstr ""
-#: order/models.py:1830
+#: order/models.py:1866
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:1835
+#: order/models.py:1871
msgid "Received Date"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1872
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:1847 templates/js/translated/return_order.js:672
+#: order/models.py:1883 templates/js/translated/return_order.js:675
#: templates/js/translated/table_filters.js:51
msgid "Outcome"
msgstr ""
-#: order/models.py:1847
+#: order/models.py:1883
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:1853
+#: order/models.py:1889
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/serializers.py:223
+#: order/serializers.py:228
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:238 order/serializers.py:1082
+#: order/serializers.py:243 order/serializers.py:1104
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:249 order/serializers.py:1093
+#: order/serializers.py:254 order/serializers.py:1115
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:361
+#: order/serializers.py:367
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:379
+#: order/serializers.py:385
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:397
+#: order/serializers.py:403
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:402
+#: order/serializers.py:408
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:408
+#: order/serializers.py:414
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:409
+#: order/serializers.py:415
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:447 order/serializers.py:1170
+#: order/serializers.py:453 order/serializers.py:1192
msgid "Line Item"
msgstr ""
-#: order/serializers.py:453
+#: order/serializers.py:459
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:463 order/serializers.py:582 order/serializers.py:1541
+#: order/serializers.py:469 order/serializers.py:590 order/serializers.py:1563
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:482 templates/js/translated/purchase_order.js:1059
+#: order/serializers.py:488 templates/js/translated/purchase_order.js:1049
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:490 templates/js/translated/purchase_order.js:1070
+#: order/serializers.py:496 templates/js/translated/purchase_order.js:1073
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:504
-msgid "Unique identifier field"
+#: order/serializers.py:509 templates/js/translated/barcode.js:41
+msgid "Barcode"
msgstr ""
-#: order/serializers.py:518
+#: order/serializers.py:510
+msgid "Scanned barcode"
+msgstr ""
+
+#: order/serializers.py:526
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:544
+#: order/serializers.py:552
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:598 order/serializers.py:1556
+#: order/serializers.py:606 order/serializers.py:1578
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:615
+#: order/serializers.py:623
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:626
+#: order/serializers.py:634
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:907
+#: order/serializers.py:929
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:962
+#: order/serializers.py:984
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1025 order/serializers.py:1179
+#: order/serializers.py:1047 order/serializers.py:1201
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1047
+#: order/serializers.py:1069
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1192
+#: order/serializers.py:1214
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1214 order/serializers.py:1338
+#: order/serializers.py:1236 order/serializers.py:1360
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1217 order/serializers.py:1341
+#: order/serializers.py:1239 order/serializers.py:1363
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1271
+#: order/serializers.py:1293
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1281
+#: order/serializers.py:1303
msgid "The following serial numbers are already allocated"
msgstr ""
-#: order/serializers.py:1507
+#: order/serializers.py:1529
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1514
+#: order/serializers.py:1536
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1517
+#: order/serializers.py:1539
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1549
+#: order/serializers.py:1571
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1629
+#: order/serializers.py:1652
msgid "Line price currency"
msgstr ""
@@ -4660,113 +4700,123 @@ msgstr ""
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:33
+#: order/templates/order/order_base.html:51
msgid "Print purchase order report"
msgstr ""
-#: order/templates/order/order_base.html:35
-#: order/templates/order/return_order_base.html:45
-#: order/templates/order/sales_order_base.html:45
+#: order/templates/order/order_base.html:53
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
msgid "Export order to file"
msgstr ""
-#: order/templates/order/order_base.html:41
-#: order/templates/order/return_order_base.html:55
-#: order/templates/order/sales_order_base.html:54
+#: order/templates/order/order_base.html:59
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
msgid "Order actions"
msgstr ""
-#: order/templates/order/order_base.html:46
-#: order/templates/order/return_order_base.html:59
-#: order/templates/order/sales_order_base.html:58
+#: order/templates/order/order_base.html:64
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:50
-#: order/templates/order/return_order_base.html:61
-#: order/templates/order/sales_order_base.html:61
+#: order/templates/order/order_base.html:68
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:55
+#: order/templates/order/order_base.html:73
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:61
-#: order/templates/order/order_base.html:62
-#: order/templates/order/return_order_base.html:65
-#: order/templates/order/return_order_base.html:66
-msgid "Submit Order"
+#: order/templates/order/order_base.html:79
+#: order/templates/order/order_base.html:80
+#: order/templates/order/return_order_base.html:83
+#: order/templates/order/return_order_base.html:84
+#: order/templates/order/sales_order_base.html:84
+#: order/templates/order/sales_order_base.html:85
+msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:65
+#: order/templates/order/order_base.html:83
msgid "Receive items"
msgstr ""
-#: order/templates/order/order_base.html:67
+#: order/templates/order/order_base.html:85
msgid "Receive Items"
msgstr ""
-#: order/templates/order/order_base.html:69
-#: order/templates/order/return_order_base.html:69
+#: order/templates/order/order_base.html:87
+#: order/templates/order/return_order_base.html:87
msgid "Mark order as complete"
msgstr ""
-#: order/templates/order/order_base.html:70
-#: order/templates/order/return_order_base.html:70
-#: order/templates/order/sales_order_base.html:68
+#: order/templates/order/order_base.html:88
+#: order/templates/order/return_order_base.html:88
+#: order/templates/order/sales_order_base.html:94
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:92
-#: order/templates/order/return_order_base.html:84
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:110
+#: order/templates/order/return_order_base.html:102
+#: order/templates/order/sales_order_base.html:107
msgid "Order Reference"
msgstr ""
-#: order/templates/order/order_base.html:97
-#: order/templates/order/return_order_base.html:89
-#: order/templates/order/sales_order_base.html:85
+#: order/templates/order/order_base.html:115
+#: order/templates/order/return_order_base.html:107
+#: order/templates/order/sales_order_base.html:112
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:102
-#: order/templates/order/return_order_base.html:94
-#: order/templates/order/sales_order_base.html:90
+#: order/templates/order/order_base.html:121
+#: order/templates/order/return_order_base.html:115
+#: order/templates/order/sales_order_base.html:118
msgid "Order Status"
msgstr ""
-#: order/templates/order/order_base.html:125
+#: order/templates/order/order_base.html:144
msgid "No suppplier information available"
msgstr ""
-#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:129
+#: order/templates/order/order_base.html:157
+#: order/templates/order/sales_order_base.html:157
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:144
-#: order/templates/order/sales_order_base.html:135
-#: order/templates/order/sales_order_base.html:145
+#: order/templates/order/order_base.html:163
+#: order/templates/order/sales_order_base.html:163
+#: order/templates/order/sales_order_base.html:173
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:163
-#: order/templates/order/return_order_base.html:138
+#: order/templates/order/order_base.html:182
+#: order/templates/order/return_order_base.html:159
#: report/templates/report/inventree_build_order_base.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:201
+#: order/templates/order/order_base.html:220
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:205
-#: order/templates/order/return_order_base.html:173
-#: order/templates/order/sales_order_base.html:204
+#: order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:194
+#: order/templates/order/sales_order_base.html:232
msgid "Total cost could not be calculated"
msgstr ""
+#: order/templates/order/order_base.html:330
+msgid "Purchase Order QR Code"
+msgstr ""
+
+#: order/templates/order/order_base.html:342
+msgid "Link Barcode to Purchase Order"
+msgstr ""
+
#: order/templates/order/order_wizard/match_fields.html:9
#: part/templates/part/import_wizard/ajax_match_fields.html:9
#: part/templates/part/import_wizard/match_fields.html:9
@@ -4818,10 +4868,10 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/bom.js:102 templates/js/translated/build.js:485
#: templates/js/translated/build.js:646 templates/js/translated/build.js:2097
-#: templates/js/translated/purchase_order.js:640
-#: templates/js/translated/purchase_order.js:1144
-#: templates/js/translated/return_order.js:449
-#: templates/js/translated/sales_order.js:979
+#: templates/js/translated/purchase_order.js:643
+#: templates/js/translated/purchase_order.js:1155
+#: templates/js/translated/return_order.js:452
+#: templates/js/translated/sales_order.js:1005
#: templates/js/translated/stock.js:660 templates/js/translated/stock.js:829
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -4883,9 +4933,9 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:28
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:367
-#: templates/js/translated/return_order.js:402
-#: templates/js/translated/sales_order.js:175
+#: templates/js/translated/purchase_order.js:370
+#: templates/js/translated/return_order.js:405
+#: templates/js/translated/sales_order.js:179
msgid "Add Line Item"
msgstr ""
@@ -4923,63 +4973,79 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:43
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:47
-#: order/templates/order/sales_order_base.html:47
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:119
-#: order/templates/order/sales_order_base.html:123
+#: order/templates/order/return_order_base.html:140
+#: order/templates/order/sales_order_base.html:151
#: templates/js/translated/return_order.js:267
-#: templates/js/translated/sales_order.js:709
+#: templates/js/translated/sales_order.js:735
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:169
-#: order/templates/order/sales_order_base.html:200
+#: order/templates/order/return_order_base.html:190
+#: order/templates/order/sales_order_base.html:228
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
#: part/templates/part/part_pricing.html:99
#: part/templates/part/part_pricing.html:114
#: templates/js/translated/part.js:989
-#: templates/js/translated/purchase_order.js:1582
+#: templates/js/translated/purchase_order.js:1649
#: templates/js/translated/return_order.js:327
-#: templates/js/translated/sales_order.js:755
+#: templates/js/translated/sales_order.js:781
msgid "Total Cost"
msgstr ""
+#: order/templates/order/return_order_base.html:258
+msgid "Return Order QR Code"
+msgstr ""
+
+#: order/templates/order/return_order_base.html:270
+msgid "Link Barcode to Return Order"
+msgstr ""
+
#: order/templates/order/return_order_sidebar.html:5
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:43
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/sales_order.js:361
-msgid "Complete Shipments"
+#: order/templates/order/sales_order_base.html:89
+#: order/templates/order/sales_order_base.html:90
+msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:67
-#: templates/js/translated/sales_order.js:415
+#: order/templates/order/sales_order_base.html:93
+#: templates/js/translated/sales_order.js:419
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:103
+#: order/templates/order/sales_order_base.html:131
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:141
+#: order/templates/order/sales_order_base.html:169
#: order/templates/order/sales_order_detail.html:105
#: order/templates/order/so_sidebar.html:11
msgid "Completed Shipments"
msgstr ""
+#: order/templates/order/sales_order_base.html:305
+msgid "Sales Order QR Code"
+msgstr ""
+
+#: order/templates/order/sales_order_base.html:317
+msgid "Link Barcode to Sales Order"
+msgstr ""
+
#: order/templates/order/sales_order_detail.html:18
msgid "Sales Order Items"
msgstr ""
@@ -5035,20 +5101,20 @@ msgstr ""
msgid "Part Description"
msgstr ""
-#: part/admin.py:36 part/models.py:880 part/templates/part/part_base.html:272
+#: part/admin.py:36 part/models.py:880 part/templates/part/part_base.html:271
#: templates/js/translated/part.js:1143 templates/js/translated/part.js:1855
#: templates/js/translated/stock.js:1769
msgid "IPN"
msgstr ""
-#: part/admin.py:37 part/models.py:887 part/templates/part/part_base.html:280
+#: part/admin.py:37 part/models.py:887 part/templates/part/part_base.html:279
#: report/models.py:177 templates/js/translated/part.js:1148
#: templates/js/translated/part.js:1861
msgid "Revision"
msgstr ""
#: part/admin.py:38 part/admin.py:198 part/models.py:866
-#: part/templates/part/category.html:93 part/templates/part/part_base.html:301
+#: part/templates/part/category.html:93 part/templates/part/part_base.html:300
msgid "Keywords"
msgstr ""
@@ -5068,17 +5134,17 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:47 part/models.py:971 part/templates/part/part_base.html:206
+#: part/admin.py:47 part/models.py:971 part/templates/part/part_base.html:205
msgid "Minimum Stock"
msgstr ""
-#: part/admin.py:61 part/templates/part/part_base.html:200
+#: part/admin.py:61 part/templates/part/part_base.html:199
#: templates/js/translated/company.js:1277
#: templates/js/translated/table_filters.js:253
msgid "In Stock"
msgstr ""
-#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:213
+#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212
#: templates/js/translated/bom.js:1163 templates/js/translated/build.js:1940
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1749
#: templates/js/translated/table_filters.js:96
@@ -5091,11 +5157,11 @@ msgstr ""
#: part/admin.py:64 templates/js/translated/build.js:1954
#: templates/js/translated/build.js:2214 templates/js/translated/build.js:2799
-#: templates/js/translated/sales_order.js:1790
+#: templates/js/translated/sales_order.js:1818
msgid "Allocated"
msgstr ""
-#: part/admin.py:65 part/templates/part/part_base.html:244 stock/admin.py:124
+#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124
#: templates/js/translated/part.js:635 templates/js/translated/part.js:1753
msgid "Building"
msgstr ""
@@ -5127,7 +5193,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:84
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/part.js:2367 templates/js/translated/search.js:158
+#: templates/js/translated/part.js:2367 templates/js/translated/search.js:160
#: templates/navbar.html:24 users/models.py:38
msgid "Parts"
msgstr ""
@@ -5158,36 +5224,36 @@ msgstr ""
msgid "Maximum Price"
msgstr ""
-#: part/api.py:515
+#: part/api.py:495
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:535
+#: part/api.py:515
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:553
+#: part/api.py:533
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:639
+#: part/api.py:619
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:797
+#: part/api.py:767
msgid "Valid"
msgstr ""
-#: part/api.py:798
+#: part/api.py:768
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:804
+#: part/api.py:774
msgid "This option must be selected"
msgstr ""
#: part/bom.py:175 part/models.py:121 part/models.py:914
-#: part/templates/part/category.html:115 part/templates/part/part_base.html:376
+#: part/templates/part/category.html:115 part/templates/part/part_base.html:369
msgid "Default Location"
msgstr ""
@@ -5195,8 +5261,8 @@ msgstr ""
msgid "Total Stock"
msgstr ""
-#: part/bom.py:177 part/templates/part/part_base.html:195
-#: templates/js/translated/sales_order.js:1757
+#: part/bom.py:177 part/templates/part/part_base.html:194
+#: templates/js/translated/sales_order.js:1785
msgid "Available Stock"
msgstr ""
@@ -5210,7 +5276,7 @@ msgid "Part Category"
msgstr ""
#: part/models.py:72 part/templates/part/category.html:135
-#: templates/InvenTree/search.html:97 templates/js/translated/search.js:186
+#: templates/InvenTree/search.html:97 templates/js/translated/search.js:188
#: users/models.py:37
msgid "Part Categories"
msgstr ""
@@ -5219,7 +5285,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:127 stock/models.py:119 templates/js/translated/stock.js:2575
+#: part/models.py:127 stock/models.py:120 templates/js/translated/stock.js:2575
#: templates/js/translated/table_filters.js:163
#: templates/js/translated/table_filters.js:182
msgid "Structural"
@@ -5237,11 +5303,11 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:138 stock/models.py:108
+#: part/models.py:138 stock/models.py:109
msgid "Icon"
msgstr ""
-#: part/models.py:139 stock/models.py:109
+#: part/models.py:139 stock/models.py:110
msgid "Icon (optional)"
msgstr ""
@@ -5295,12 +5361,12 @@ msgstr ""
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:855
+#: part/models.py:855 part/templates/part/part_base.html:179
msgid "Variant Of"
msgstr ""
#: part/models.py:861
-msgid "Part description"
+msgid "Part description (optional)"
msgstr ""
#: part/models.py:867
@@ -5308,7 +5374,7 @@ msgid "Part keywords to improve visibility in search results"
msgstr ""
#: part/models.py:874 part/models.py:3182 part/models.py:3419
-#: part/serializers.py:849 part/templates/part/part_base.html:263
+#: part/serializers.py:849 part/templates/part/part_base.html:262
#: templates/InvenTree/settings/settings_staff_js.html:132
#: templates/js/translated/notification.js:50
#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2097
@@ -5331,7 +5397,7 @@ msgstr ""
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:957 part/templates/part/part_base.html:385
+#: part/models.py:957 part/templates/part/part_base.html:378
msgid "Default Supplier"
msgstr ""
@@ -5411,8 +5477,8 @@ msgstr ""
msgid "User responsible for this part"
msgstr ""
-#: part/models.py:1036 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:448
+#: part/models.py:1036 part/templates/part/part_base.html:341
+#: stock/templates/stock/item_base.html:441
#: templates/js/translated/part.js:1947
msgid "Last Stocktake"
msgstr ""
@@ -5569,7 +5635,7 @@ msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:368
#: templates/js/translated/part.js:1002 templates/js/translated/pricing.js:794
#: templates/js/translated/pricing.js:915
-#: templates/js/translated/purchase_order.js:1561
+#: templates/js/translated/purchase_order.js:1628
#: templates/js/translated/stock.js:2613
msgid "Date"
msgstr ""
@@ -5822,7 +5888,7 @@ msgstr ""
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:3713 stock/models.py:569
+#: part/models.py:3713 stock/models.py:570
msgid "Quantity must be integer value for trackable parts"
msgstr ""
@@ -6102,7 +6168,7 @@ msgstr ""
#: part/tasks.py:289 templates/js/translated/part.js:983
#: templates/js/translated/part.js:1456 templates/js/translated/part.js:1512
-#: templates/js/translated/purchase_order.js:1922
+#: templates/js/translated/purchase_order.js:1989
msgid "Total Quantity"
msgstr ""
@@ -6127,8 +6193,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6264,7 +6329,7 @@ msgid "Refresh scheduling data"
msgstr ""
#: part/templates/part/detail.html:45 part/templates/part/prices.html:15
-#: templates/js/translated/tables.js:562
+#: templates/js/translated/tables.js:572
msgid "Refresh"
msgstr ""
@@ -6416,13 +6481,13 @@ msgstr ""
#: part/templates/part/import_wizard/part_upload.html:92
#: templates/js/translated/bom.js:278 templates/js/translated/bom.js:312
-#: templates/js/translated/order.js:109 templates/js/translated/tables.js:183
+#: templates/js/translated/order.js:112 templates/js/translated/tables.js:183
msgid "Format"
msgstr ""
#: part/templates/part/import_wizard/part_upload.html:93
#: templates/js/translated/bom.js:279 templates/js/translated/bom.js:313
-#: templates/js/translated/order.js:110
+#: templates/js/translated/order.js:113
msgid "Select file format"
msgstr ""
@@ -6507,8 +6572,7 @@ msgid "Part can be sold to customers"
msgstr ""
#: part/templates/part/part_base.html:147
-#: part/templates/part/part_base.html:155
-msgid "Part is virtual (not a physical part)"
+msgid "Part is not active"
msgstr ""
#: part/templates/part/part_base.html:148
@@ -6519,71 +6583,70 @@ msgstr ""
msgid "Inactive"
msgstr ""
+#: part/templates/part/part_base.html:155
+msgid "Part is virtual (not a physical part)"
+msgstr ""
+
#: part/templates/part/part_base.html:165
-#: part/templates/part/part_base.html:691
+#: part/templates/part/part_base.html:684
msgid "Show Part Details"
msgstr ""
-#: part/templates/part/part_base.html:183
-#, python-format
-msgid "This part is a variant of %(link)s"
-msgstr ""
-
-#: part/templates/part/part_base.html:221
-#: stock/templates/stock/item_base.html:385
+#: part/templates/part/part_base.html:220
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:230
-#: stock/templates/stock/item_base.html:378
+#: part/templates/part/part_base.html:229
+#: stock/templates/stock/item_base.html:371
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/bom.js:1174
+#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1174
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:294
+#: part/templates/part/part_base.html:293
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1037
+#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1037
#: templates/js/translated/part.js:1181 templates/js/translated/part.js:1920
#: templates/js/translated/pricing.js:373
#: templates/js/translated/pricing.js:1019
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:354
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:334
+#: part/templates/part/part_base.html:358
+#: stock/templates/stock/item_base.html:323
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:446
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:463
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:513
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:530
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:589
+#: part/templates/part/part_base.html:582
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:685
+#: part/templates/part/part_base.html:678
msgid "Hide Part Details"
msgstr ""
@@ -6673,7 +6736,7 @@ msgid "Refresh Part Pricing"
msgstr ""
#: part/templates/part/prices.html:25 stock/admin.py:129
-#: stock/templates/stock/item_base.html:443
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/company.js:1291
#: templates/js/translated/company.js:1301
#: templates/js/translated/stock.js:1956
@@ -6790,8 +6853,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -6853,6 +6915,7 @@ msgid "Match found for barcode data"
msgstr ""
#: plugin/base/barcodes/api.py:120
+#: templates/js/translated/purchase_order.js:1321
msgid "Barcode matches existing item"
msgstr ""
@@ -6864,15 +6927,15 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:26
+#: plugin/builtin/barcodes/inventree_barcode.py:28
msgid "InvenTree Barcodes"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:27
+#: plugin/builtin/barcodes/inventree_barcode.py:29
msgid "Provides native support for barcodes"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:29
+#: plugin/builtin/barcodes/inventree_barcode.py:31
#: plugin/builtin/integration/core_notifications.py:33
msgid "InvenTree contributors"
msgstr ""
@@ -6975,18 +7038,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7053,16 +7117,16 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:172
+#: report/api.py:171
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:208 report/api.py:244
+#: report/api.py:207 report/api.py:243
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
-#: report/api.py:311
+#: report/api.py:310
msgid "Test report"
msgstr ""
@@ -7168,11 +7232,11 @@ msgstr ""
#: report/templates/report/inventree_po_report_base.html:30
#: report/templates/report/inventree_so_report_base.html:30
-#: templates/js/translated/order.js:288 templates/js/translated/pricing.js:509
+#: templates/js/translated/order.js:291 templates/js/translated/pricing.js:509
#: templates/js/translated/pricing.js:578
#: templates/js/translated/pricing.js:802
-#: templates/js/translated/purchase_order.js:1953
-#: templates/js/translated/sales_order.js:1701
+#: templates/js/translated/purchase_order.js:2020
+#: templates/js/translated/sales_order.js:1729
msgid "Unit Price"
msgstr ""
@@ -7184,22 +7248,22 @@ msgstr ""
#: report/templates/report/inventree_po_report_base.html:72
#: report/templates/report/inventree_so_report_base.html:72
-#: templates/js/translated/purchase_order.js:1855
-#: templates/js/translated/sales_order.js:1676
+#: templates/js/translated/purchase_order.js:1922
+#: templates/js/translated/sales_order.js:1704
msgid "Total"
msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:25
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:717 stock/templates/stock/item_base.html:323
+#: stock/models.py:718 stock/templates/stock/item_base.html:312
#: templates/js/translated/build.js:475 templates/js/translated/build.js:636
#: templates/js/translated/build.js:1250 templates/js/translated/build.js:1738
#: templates/js/translated/model_renderers.js:195
-#: templates/js/translated/return_order.js:483
-#: templates/js/translated/return_order.js:663
-#: templates/js/translated/sales_order.js:250
-#: templates/js/translated/sales_order.js:1470
-#: templates/js/translated/sales_order.js:1555
+#: templates/js/translated/return_order.js:486
+#: templates/js/translated/return_order.js:666
+#: templates/js/translated/sales_order.js:254
+#: templates/js/translated/sales_order.js:1509
+#: templates/js/translated/sales_order.js:1594
#: templates/js/translated/stock.js:526
msgid "Serial Number"
msgstr ""
@@ -7213,12 +7277,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2183 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2189
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7286,8 +7350,8 @@ msgstr ""
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:114 stock/models.py:700
-#: stock/templates/stock/item_base.html:362
+#: stock/admin.py:114 stock/models.py:701
+#: stock/templates/stock/item_base.html:355
msgid "Installed In"
msgstr ""
@@ -7311,278 +7375,277 @@ msgstr ""
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:131 stock/models.py:773
-#: stock/templates/stock/item_base.html:430
+#: stock/admin.py:131 stock/models.py:774
+#: stock/templates/stock/item_base.html:423
#: templates/js/translated/stock.js:1940
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:426 templates/js/translated/table_filters.js:325
+#: stock/api.py:409 templates/js/translated/table_filters.js:325
msgid "External Location"
msgstr ""
-#: stock/api.py:587
+#: stock/api.py:570
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:594
+#: stock/api.py:577
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:619
+#: stock/api.py:602
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:53 stock/models.py:684
+#: stock/models.py:54 stock/models.py:685
#: stock/templates/stock/location.html:17
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:54 stock/templates/stock/location.html:183
-#: templates/InvenTree/search.html:167 templates/js/translated/search.js:206
+#: stock/models.py:55 stock/templates/stock/location.html:177
+#: templates/InvenTree/search.html:167 templates/js/translated/search.js:208
#: users/models.py:40
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:113 stock/models.py:814
-#: stock/templates/stock/item_base.html:253
+#: stock/models.py:114 stock/models.py:815
+#: stock/templates/stock/item_base.html:248
msgid "Owner"
msgstr ""
-#: stock/models.py:114 stock/models.py:815
+#: stock/models.py:115 stock/models.py:816
msgid "Select Owner"
msgstr ""
-#: stock/models.py:121
+#: stock/models.py:122
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:127 templates/js/translated/stock.js:2584
+#: stock/models.py:128 templates/js/translated/stock.js:2584
#: templates/js/translated/table_filters.js:167
msgid "External"
msgstr ""
-#: stock/models.py:128
+#: stock/models.py:129
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:170
+#: stock/models.py:171
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:549
+#: stock/models.py:550
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:575 stock/serializers.py:151
+#: stock/models.py:576 stock/serializers.py:151
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:592
+#: stock/models.py:593
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:602 stock/models.py:611
+#: stock/models.py:603 stock/models.py:612
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:603
+#: stock/models.py:604
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:625
+#: stock/models.py:626
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:631
+#: stock/models.py:632
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:645
+#: stock/models.py:646
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:659
+#: stock/models.py:660
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:669
+#: stock/models.py:670
msgid "Base part"
msgstr ""
-#: stock/models.py:677
+#: stock/models.py:678
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:687
+#: stock/models.py:688
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:694
+#: stock/models.py:695
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:703
+#: stock/models.py:704
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:719
+#: stock/models.py:720
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:733
+#: stock/models.py:734
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:738
+#: stock/models.py:739
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:745
+#: stock/models.py:746
msgid "Source Build"
msgstr ""
-#: stock/models.py:747
+#: stock/models.py:748
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:758
+#: stock/models.py:759
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:762
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:767
+#: stock/models.py:768
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:774
+#: stock/models.py:775
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:790
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:790
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:802 stock/templates/stock/item.html:132
+#: stock/models.py:803 stock/templates/stock/item.html:132
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:810
+#: stock/models.py:811
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:838
+#: stock/models.py:839
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1335
+#: stock/models.py:1361
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1341
+#: stock/models.py:1367
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1373
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1350
+#: stock/models.py:1376
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1353
+#: stock/models.py:1379
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1360
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1430
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1433
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1436
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1439
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1442
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1445
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1452 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1460
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1464
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1633
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2101
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2159
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2165
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2184
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2190
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2196
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2203
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2209
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7619,10 +7682,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -7839,129 +7898,133 @@ msgstr ""
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:194
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:212
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:257
+#: stock/templates/stock/item_base.html:252
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:258
+#: stock/templates/stock/item_base.html:253
#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:271
-msgid "This stock item is in production and cannot be edited."
+#: stock/templates/stock/item_base.html:266
+msgid "This stock item is unavailable"
msgstr ""
#: stock/templates/stock/item_base.html:272
+msgid "This stock item is in production and cannot be edited."
+msgstr ""
+
+#: stock/templates/stock/item_base.html:273
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:285
-msgid "This stock item has not passed all required tests"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:293
+#: stock/templates/stock/item_base.html:288
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:301
+#: stock/templates/stock/item_base.html:296
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:307
-msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
+#: stock/templates/stock/item_base.html:312
+msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted"
msgstr ""
-#: stock/templates/stock/item_base.html:329
+#: stock/templates/stock/item_base.html:318
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:329
+#: stock/templates/stock/item_base.html:318
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:338
+#: stock/templates/stock/item_base.html:327
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:338
+#: stock/templates/stock/item_base.html:327
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:351
+#: stock/templates/stock/item_base.html:341
msgid "Available Quantity"
msgstr ""
-#: stock/templates/stock/item_base.html:395
+#: stock/templates/stock/item_base.html:388
#: templates/js/translated/build.js:1764
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:403
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:434
+#: stock/templates/stock/item_base.html:409
+msgid "This stock item has not passed all required tests"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:427
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:434
+#: stock/templates/stock/item_base.html:427
#: templates/js/translated/table_filters.js:333
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:436
+#: stock/templates/stock/item_base.html:429
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:436
+#: stock/templates/stock/item_base.html:429
#: templates/js/translated/table_filters.js:339
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:452
+#: stock/templates/stock/item_base.html:445
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:530
+#: stock/templates/stock/item_base.html:523
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:538
+#: stock/templates/stock/item_base.html:532
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:550
+#: stock/templates/stock/item_base.html:543
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:607
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:617
+#: stock/templates/stock/item_base.html:610
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:618
+#: stock/templates/stock/item_base.html:611
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:626
+#: stock/templates/stock/item_base.html:619
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:649
msgid "Return to Stock"
msgstr ""
@@ -8021,29 +8084,29 @@ msgstr ""
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:169
-#: stock/templates/stock/location.html:217
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:211
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:221
+#: stock/templates/stock/location.html:215
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:222
+#: stock/templates/stock/location.html:216
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:309
+#: stock/templates/stock/location.html:303
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:382
+#: stock/templates/stock/location.html:376
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:387
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -8581,7 +8644,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/tables.js:553 templates/navbar.html:107
+#: templates/js/translated/tables.js:563 templates/navbar.html:107
#: templates/search.html:8 templates/search_form.html:6
#: templates/search_form.html:7
msgid "Search"
@@ -8627,8 +8690,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -9101,6 +9164,10 @@ msgstr ""
msgid "Delete Attachments"
msgstr ""
+#: templates/barcode_data.html:5
+msgid "Barcode Identifier"
+msgstr ""
+
#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
@@ -9255,10 +9322,6 @@ msgstr ""
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:41
-msgid "Barcode"
-msgstr ""
-
#: templates/js/translated/barcode.js:48
msgid "Scan barcode using connected webcam"
msgstr ""
@@ -9271,94 +9334,94 @@ msgstr ""
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:172
+#: templates/js/translated/barcode.js:175
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:201
+#: templates/js/translated/barcode.js:204
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:236
+#: templates/js/translated/barcode.js:239
#: templates/js/translated/modals.js:1100
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:354
+#: templates/js/translated/barcode.js:359
msgid "Scan barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:404 templates/navbar.html:114
+#: templates/js/translated/barcode.js:407 templates/navbar.html:114
msgid "Scan Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:416
+#: templates/js/translated/barcode.js:427
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:455
+#: templates/js/translated/barcode.js:468
msgid "This will remove the link to the associated barcode"
msgstr ""
-#: templates/js/translated/barcode.js:461
+#: templates/js/translated/barcode.js:474
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:523 templates/js/translated/stock.js:1097
+#: templates/js/translated/barcode.js:537 templates/js/translated/stock.js:1097
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:566
+#: templates/js/translated/barcode.js:580
msgid "Scan Stock Items Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:568
+#: templates/js/translated/barcode.js:582
msgid "Scan stock item barcode to check in to this location"
msgstr ""
-#: templates/js/translated/barcode.js:571
-#: templates/js/translated/barcode.js:763
+#: templates/js/translated/barcode.js:585
+#: templates/js/translated/barcode.js:780
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:602
+#: templates/js/translated/barcode.js:616
msgid "No barcode provided"
msgstr ""
-#: templates/js/translated/barcode.js:642
+#: templates/js/translated/barcode.js:656
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:646
+#: templates/js/translated/barcode.js:660
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:653
+#: templates/js/translated/barcode.js:667
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:662
+#: templates/js/translated/barcode.js:676
msgid "Barcode does not match valid stock item"
msgstr ""
-#: templates/js/translated/barcode.js:679
+#: templates/js/translated/barcode.js:695
msgid "Scan Stock Container Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:681
+#: templates/js/translated/barcode.js:697
msgid "Scan stock container barcode to check in to this location"
msgstr ""
-#: templates/js/translated/barcode.js:715
+#: templates/js/translated/barcode.js:731
msgid "Barcode does not match valid stock location"
msgstr ""
-#: templates/js/translated/barcode.js:758
+#: templates/js/translated/barcode.js:775
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:826
-#: templates/js/translated/barcode.js:835
+#: templates/js/translated/barcode.js:843
+#: templates/js/translated/barcode.js:852
msgid "Barcode does not match a valid location"
msgstr ""
@@ -9377,7 +9440,7 @@ msgstr ""
#: templates/js/translated/bom.js:158 templates/js/translated/bom.js:669
#: templates/js/translated/modals.js:69 templates/js/translated/modals.js:608
#: templates/js/translated/modals.js:732 templates/js/translated/modals.js:1040
-#: templates/js/translated/purchase_order.js:739 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:742 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -9511,7 +9574,7 @@ msgid "No pricing available"
msgstr ""
#: templates/js/translated/bom.js:1143 templates/js/translated/build.js:1922
-#: templates/js/translated/sales_order.js:1771
+#: templates/js/translated/sales_order.js:1799
msgid "No Stock Available"
msgstr ""
@@ -9712,12 +9775,12 @@ msgid "No required tests for this build"
msgstr ""
#: templates/js/translated/build.js:1781 templates/js/translated/build.js:2803
-#: templates/js/translated/sales_order.js:1505
+#: templates/js/translated/sales_order.js:1544
msgid "Edit stock allocation"
msgstr ""
#: templates/js/translated/build.js:1783 templates/js/translated/build.js:2804
-#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1545
msgid "Delete stock allocation"
msgstr ""
@@ -9738,17 +9801,17 @@ msgid "Quantity Per"
msgstr ""
#: templates/js/translated/build.js:1916
-#: templates/js/translated/sales_order.js:1778
+#: templates/js/translated/sales_order.js:1806
msgid "Insufficient stock available"
msgstr ""
#: templates/js/translated/build.js:1918
-#: templates/js/translated/sales_order.js:1776
+#: templates/js/translated/sales_order.js:1804
msgid "Sufficient stock available"
msgstr ""
#: templates/js/translated/build.js:2014
-#: templates/js/translated/sales_order.js:1870
+#: templates/js/translated/sales_order.js:1905
msgid "Build stock"
msgstr ""
@@ -9757,23 +9820,23 @@ msgid "Order stock"
msgstr ""
#: templates/js/translated/build.js:2021
-#: templates/js/translated/sales_order.js:1863
+#: templates/js/translated/sales_order.js:1899
msgid "Allocate stock"
msgstr ""
#: templates/js/translated/build.js:2059
-#: templates/js/translated/purchase_order.js:564
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/purchase_order.js:567
+#: templates/js/translated/sales_order.js:1068
msgid "Select Parts"
msgstr ""
#: templates/js/translated/build.js:2060
-#: templates/js/translated/sales_order.js:1043
+#: templates/js/translated/sales_order.js:1069
msgid "You must select at least one part to allocate"
msgstr ""
#: templates/js/translated/build.js:2108
-#: templates/js/translated/sales_order.js:991
+#: templates/js/translated/sales_order.js:1017
msgid "Specify stock allocation quantity"
msgstr ""
@@ -9786,7 +9849,7 @@ msgid "All selected parts have been fully allocated"
msgstr ""
#: templates/js/translated/build.js:2202
-#: templates/js/translated/sales_order.js:1057
+#: templates/js/translated/sales_order.js:1083
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
@@ -9795,12 +9858,12 @@ msgid "Allocate Stock Items to Build Order"
msgstr ""
#: templates/js/translated/build.js:2241
-#: templates/js/translated/sales_order.js:1154
+#: templates/js/translated/sales_order.js:1180
msgid "No matching stock locations"
msgstr ""
#: templates/js/translated/build.js:2314
-#: templates/js/translated/sales_order.js:1231
+#: templates/js/translated/sales_order.js:1257
msgid "No matching stock items"
msgstr ""
@@ -10116,7 +10179,7 @@ msgstr ""
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2010 templates/js/translated/search.js:267
+#: templates/js/translated/forms.js:2010 templates/js/translated/search.js:269
msgid "Searching"
msgstr ""
@@ -10144,7 +10207,7 @@ msgstr ""
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:460
+#: templates/js/translated/helpers.js:466
msgid "Notes updated"
msgstr ""
@@ -10271,40 +10334,40 @@ msgstr ""
msgid "Notifications will load here"
msgstr ""
-#: templates/js/translated/order.js:69
+#: templates/js/translated/order.js:72
msgid "Add Extra Line Item"
msgstr ""
-#: templates/js/translated/order.js:106
+#: templates/js/translated/order.js:109
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:219
+#: templates/js/translated/order.js:222
msgid "Duplicate Line"
msgstr ""
-#: templates/js/translated/order.js:233
+#: templates/js/translated/order.js:236
msgid "Edit Line"
msgstr ""
-#: templates/js/translated/order.js:246
+#: templates/js/translated/order.js:249
msgid "Delete Line"
msgstr ""
-#: templates/js/translated/order.js:259
-#: templates/js/translated/purchase_order.js:1828
+#: templates/js/translated/order.js:262
+#: templates/js/translated/purchase_order.js:1895
msgid "No line items found"
msgstr ""
-#: templates/js/translated/order.js:332
+#: templates/js/translated/order.js:344
msgid "Duplicate line"
msgstr ""
-#: templates/js/translated/order.js:333
+#: templates/js/translated/order.js:345
msgid "Edit line"
msgstr ""
-#: templates/js/translated/order.js:337
+#: templates/js/translated/order.js:349
msgid "Delete line"
msgstr ""
@@ -10506,19 +10569,19 @@ msgid "No variants found"
msgstr ""
#: templates/js/translated/part.js:1351
-#: templates/js/translated/purchase_order.js:1500
+#: templates/js/translated/purchase_order.js:1567
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1495
-#: templates/js/translated/purchase_order.js:1991
-#: templates/js/translated/return_order.js:695
-#: templates/js/translated/sales_order.js:1739
+#: templates/js/translated/purchase_order.js:2058
+#: templates/js/translated/return_order.js:698
+#: templates/js/translated/sales_order.js:1767
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1541
-#: templates/js/translated/purchase_order.js:2049
+#: templates/js/translated/purchase_order.js:2125
msgid "Receive line item"
msgstr ""
@@ -10652,16 +10715,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
@@ -10714,184 +10767,206 @@ msgstr ""
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:384
+#: templates/js/translated/purchase_order.js:387
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:401
+#: templates/js/translated/purchase_order.js:404
#: templates/js/translated/return_order.js:165
-#: templates/js/translated/sales_order.js:431
+#: templates/js/translated/sales_order.js:435
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:407
+#: templates/js/translated/purchase_order.js:410
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:412
+#: templates/js/translated/purchase_order.js:415
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:413
-#: templates/js/translated/sales_order.js:445
+#: templates/js/translated/purchase_order.js:416
+#: templates/js/translated/sales_order.js:449
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:436
+#: templates/js/translated/purchase_order.js:439
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:441
+#: templates/js/translated/purchase_order.js:444
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:447
+#: templates/js/translated/purchase_order.js:450
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:468
+#: templates/js/translated/purchase_order.js:471
#: templates/js/translated/return_order.js:119
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:473
+#: templates/js/translated/purchase_order.js:476
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:565
+#: templates/js/translated/purchase_order.js:568
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:590
+#: templates/js/translated/purchase_order.js:593
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:599
+#: templates/js/translated/purchase_order.js:602
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:617
+#: templates/js/translated/purchase_order.js:620
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:649
+#: templates/js/translated/purchase_order.js:652
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:793
+#: templates/js/translated/purchase_order.js:796
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:812
+#: templates/js/translated/purchase_order.js:815
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:991
+#: templates/js/translated/purchase_order.js:994
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:992
-#: templates/js/translated/return_order.js:435
+#: templates/js/translated/purchase_order.js:995
+#: templates/js/translated/return_order.js:438
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1012
-#: templates/js/translated/purchase_order.js:1125
-msgid "Add batch code"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:1018
-#: templates/js/translated/purchase_order.js:1136
-msgid "Add serial numbers"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:1033
+#: templates/js/translated/purchase_order.js:1023
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1044
+#: templates/js/translated/purchase_order.js:1034
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1108
+#: templates/js/translated/purchase_order.js:1110
#: templates/js/translated/stock.js:2273
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1196
-msgid "Order Code"
+#: templates/js/translated/purchase_order.js:1124
+msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1197
-msgid "Ordered"
+#: templates/js/translated/purchase_order.js:1125
+msgid "Remove barcode"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1128
+msgid "Specify location"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1136
+msgid "Add batch code"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1147
+msgid "Add serial numbers"
msgstr ""
#: templates/js/translated/purchase_order.js:1199
+msgid "Serials"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1224
+msgid "Order Code"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1226
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1222
-#: templates/js/translated/return_order.js:500
+#: templates/js/translated/purchase_order.js:1248
+#: templates/js/translated/return_order.js:503
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1249
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1527
+#: templates/js/translated/purchase_order.js:1317
+msgid "Scan Item Barcode"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1318
+msgid "Scan barcode on incoming item (must not match any existing stock items)"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1332
+msgid "Invalid barcode data"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1594
#: templates/js/translated/return_order.js:244
-#: templates/js/translated/sales_order.js:686
+#: templates/js/translated/sales_order.js:712
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1577
+#: templates/js/translated/purchase_order.js:1644
#: templates/js/translated/return_order.js:300
-#: templates/js/translated/sales_order.js:751
-#: templates/js/translated/sales_order.js:893
+#: templates/js/translated/sales_order.js:777
+#: templates/js/translated/sales_order.js:919
msgid "Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1676
+#: templates/js/translated/purchase_order.js:1743
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1694
+#: templates/js/translated/purchase_order.js:1761
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1754
-#: templates/js/translated/sales_order.js:1920
+#: templates/js/translated/purchase_order.js:1821
+#: templates/js/translated/sales_order.js:1959
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:1769
-#: templates/js/translated/return_order.js:419
-#: templates/js/translated/return_order.js:608
-#: templates/js/translated/sales_order.js:1933
+#: templates/js/translated/purchase_order.js:1836
+#: templates/js/translated/return_order.js:422
+#: templates/js/translated/return_order.js:611
+#: templates/js/translated/sales_order.js:1972
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:1780
-#: templates/js/translated/return_order.js:621
-#: templates/js/translated/sales_order.js:1944
+#: templates/js/translated/purchase_order.js:1847
+#: templates/js/translated/return_order.js:624
+#: templates/js/translated/sales_order.js:1983
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2053
-#: templates/js/translated/sales_order.js:1876
+#: templates/js/translated/purchase_order.js:2129
+#: templates/js/translated/sales_order.js:1913
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2054
-#: templates/js/translated/return_order.js:731
-#: templates/js/translated/sales_order.js:1877
+#: templates/js/translated/purchase_order.js:2130
+#: templates/js/translated/return_order.js:743
+#: templates/js/translated/sales_order.js:1914
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2055
-#: templates/js/translated/return_order.js:735
-#: templates/js/translated/sales_order.js:1881
+#: templates/js/translated/purchase_order.js:2131
+#: templates/js/translated/return_order.js:747
+#: templates/js/translated/sales_order.js:1920
msgid "Delete line item"
msgstr ""
@@ -10916,7 +10991,7 @@ msgid "No report templates found which match the selected items"
msgstr ""
#: templates/js/translated/return_order.js:40
-#: templates/js/translated/sales_order.js:52
+#: templates/js/translated/sales_order.js:53
msgid "Add Customer"
msgstr ""
@@ -10949,208 +11024,221 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:258
-#: templates/js/translated/sales_order.js:700
+#: templates/js/translated/sales_order.js:726
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/return_order.js:501
+#: templates/js/translated/return_order.js:504
msgid "Receive Return Order Items"
msgstr ""
-#: templates/js/translated/return_order.js:632
-#: templates/js/translated/sales_order.js:2080
+#: templates/js/translated/return_order.js:635
+#: templates/js/translated/sales_order.js:2119
msgid "No matching line items"
msgstr ""
-#: templates/js/translated/return_order.js:728
+#: templates/js/translated/return_order.js:740
msgid "Mark item as received"
msgstr ""
-#: templates/js/translated/sales_order.js:102
+#: templates/js/translated/sales_order.js:103
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:117
+#: templates/js/translated/sales_order.js:118
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:226
+#: templates/js/translated/sales_order.js:230
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:231
+#: templates/js/translated/sales_order.js:235
msgid "The following stock items will be shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:271
+#: templates/js/translated/sales_order.js:275
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:295
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:347
+#: templates/js/translated/sales_order.js:351
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:351
+#: templates/js/translated/sales_order.js:355
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:383
+#: templates/js/translated/sales_order.js:365
+msgid "Complete Shipments"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:387
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:444
+#: templates/js/translated/sales_order.js:448
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:468
+#: templates/js/translated/sales_order.js:470
+msgid "Issue this Sales Order?"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:475
+msgid "Issue Sales Order"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:494
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:473
+#: templates/js/translated/sales_order.js:499
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:527
+#: templates/js/translated/sales_order.js:553
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:637
+#: templates/js/translated/sales_order.js:663
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:805
+#: templates/js/translated/sales_order.js:831
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:808
+#: templates/js/translated/sales_order.js:834
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:813
+#: templates/js/translated/sales_order.js:839
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:856
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:845
+#: templates/js/translated/sales_order.js:871
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:878
+#: templates/js/translated/sales_order.js:904
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:888
+#: templates/js/translated/sales_order.js:914
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:912
+#: templates/js/translated/sales_order.js:938
+#: templates/js/translated/sales_order.js:1424
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:918
+#: templates/js/translated/sales_order.js:944
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:922
+#: templates/js/translated/sales_order.js:948
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1090
+#: templates/js/translated/sales_order.js:1116
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1141
+#: templates/js/translated/sales_order.js:1167
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1142
+#: templates/js/translated/sales_order.js:1168
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1346
+#: templates/js/translated/sales_order.js:1372
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1425
+#: templates/js/translated/sales_order.js:1464
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1439
+#: templates/js/translated/sales_order.js:1478
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1440
+#: templates/js/translated/sales_order.js:1479
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1482
-#: templates/js/translated/sales_order.js:1569
+#: templates/js/translated/sales_order.js:1521
+#: templates/js/translated/sales_order.js:1608
#: templates/js/translated/stock.js:1664
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1490
-#: templates/js/translated/sales_order.js:1578
+#: templates/js/translated/sales_order.js:1529
+#: templates/js/translated/sales_order.js:1617
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/sales_order.js:1897
msgid "Allocate serial numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:1866
+#: templates/js/translated/sales_order.js:1901
msgid "Purchase stock"
msgstr ""
-#: templates/js/translated/sales_order.js:1873
-#: templates/js/translated/sales_order.js:2058
+#: templates/js/translated/sales_order.js:1910
+#: templates/js/translated/sales_order.js:2097
msgid "Calculate price"
msgstr ""
-#: templates/js/translated/sales_order.js:1885
+#: templates/js/translated/sales_order.js:1924
msgid "Cannot be deleted as items have been shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1888
+#: templates/js/translated/sales_order.js:1927
msgid "Cannot be deleted as items have been allocated"
msgstr ""
-#: templates/js/translated/sales_order.js:1959
+#: templates/js/translated/sales_order.js:1998
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2066
+#: templates/js/translated/sales_order.js:2105
msgid "Update Unit Price"
msgstr ""
-#: templates/js/translated/search.js:298
+#: templates/js/translated/search.js:300
msgid "No results"
msgstr ""
-#: templates/js/translated/search.js:320 templates/search.html:25
+#: templates/js/translated/search.js:322 templates/search.html:25
msgid "Enter search query"
msgstr ""
-#: templates/js/translated/search.js:370
+#: templates/js/translated/search.js:372
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:370
+#: templates/js/translated/search.js:372
msgid "results"
msgstr ""
-#: templates/js/translated/search.js:380
+#: templates/js/translated/search.js:382
msgid "Minimize results"
msgstr ""
-#: templates/js/translated/search.js:383
+#: templates/js/translated/search.js:385
msgid "Remove results"
msgstr ""
@@ -11832,51 +11920,51 @@ msgstr ""
msgid "Select File Format"
msgstr ""
-#: templates/js/translated/tables.js:539
+#: templates/js/translated/tables.js:549
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:542
+#: templates/js/translated/tables.js:552
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:547
+#: templates/js/translated/tables.js:557
msgid "Showing all rows"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:556
+#: templates/js/translated/tables.js:566
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:559
+#: templates/js/translated/tables.js:569
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:565
+#: templates/js/translated/tables.js:575
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:568
+#: templates/js/translated/tables.js:578
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:571
+#: templates/js/translated/tables.js:581
msgid "All"
msgstr ""
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index c973fa0687..9d60c55e24 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -41,7 +41,7 @@ msgstr "Seleccionar una fecha"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Archivo no encontrado"
msgid "Missing external link"
msgstr "Falta enlace externo"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr "Nombre del parámetro"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr "Eliminar piezas del proveedor"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr "Artículo de stock ha sido asignado a un pedido de entrega"
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr "El artículo de stock ha sido asignado a un cliente"
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr "Los números de serie no se pueden asignar a esta pieza"
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr "Editar"
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po
index 3d85e8378e..1c59910bfa 100644
--- a/InvenTree/locale/es_MX/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es_MX/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-03-29 08:09+0000\n"
+"POT-Creation-Date: 2023-04-17 14:52+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,15 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: InvenTree/api.py:63
+#: InvenTree/api.py:65
msgid "API endpoint not found"
msgstr ""
-#: InvenTree/api.py:308
+#: InvenTree/api.py:299
msgid "User does not have permission to view this model"
msgstr ""
-#: InvenTree/exceptions.py:79
+#: InvenTree/exceptions.py:94
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -34,25 +34,25 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/fields.py:204 build/serializers.py:389
+#: InvenTree/fields.py:204 build/serializers.py:392
#: build/templates/build/sidebar.html:21 company/models.py:554
-#: company/templates/company/sidebar.html:35 order/models.py:1029
+#: company/templates/company/sidebar.html:35 order/models.py:1058
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2100 stock/models.py:2208
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:130 templates/js/translated/bom.js:1220
-#: templates/js/translated/company.js:1272 templates/js/translated/order.js:319
+#: templates/js/translated/company.js:1272 templates/js/translated/order.js:322
#: templates/js/translated/part.js:997
-#: templates/js/translated/purchase_order.js:2038
-#: templates/js/translated/return_order.js:715
-#: templates/js/translated/sales_order.js:937
-#: templates/js/translated/sales_order.js:1843
+#: templates/js/translated/purchase_order.js:2105
+#: templates/js/translated/return_order.js:718
+#: templates/js/translated/sales_order.js:963
+#: templates/js/translated/sales_order.js:1871
#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:2134
msgid "Notes"
msgstr ""
@@ -138,7 +138,7 @@ msgstr ""
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/helpers.py:602 order/models.py:409 order/models.py:565
+#: InvenTree/helpers.py:602 order/models.py:410 order/models.py:571
msgid "Invalid quantity provided"
msgstr ""
@@ -210,7 +210,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:409 stock/models.py:2202
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -220,20 +220,24 @@ msgstr ""
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:416 common/models.py:2607 company/models.py:129
-#: company/models.py:305 company/models.py:541 order/models.py:201
-#: order/models.py:1377 order/models.py:1856 part/admin.py:39
+#: InvenTree/models.py:416 common/models.py:2621 company/models.py:129
+#: company/models.py:305 company/models.py:541 order/models.py:202
+#: order/models.py:1062 order/models.py:1412 part/admin.py:39
#: part/models.py:892 part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_base.html:164
#: stock/admin.py:120 templates/js/translated/company.js:962
-#: templates/js/translated/company.js:1261 templates/js/translated/part.js:1932
-#: templates/js/translated/purchase_order.js:1878
-#: templates/js/translated/sales_order.js:926
+#: templates/js/translated/company.js:1261 templates/js/translated/order.js:326
+#: templates/js/translated/part.js:1932
+#: templates/js/translated/purchase_order.js:1945
+#: templates/js/translated/purchase_order.js:2109
+#: templates/js/translated/return_order.js:722
+#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:1876
msgid "Link"
msgstr ""
#: InvenTree/models.py:417 build/models.py:293 part/models.py:893
-#: stock/models.py:727
+#: stock/models.py:728
msgid "Link to external URL"
msgstr ""
@@ -246,9 +250,9 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:426 InvenTree/models.py:427 common/models.py:2056
-#: common/models.py:2057 common/models.py:2280 common/models.py:2281
-#: common/models.py:2537 common/models.py:2538 part/models.py:2997
+#: InvenTree/models.py:426 InvenTree/models.py:427 common/models.py:2070
+#: common/models.py:2071 common/models.py:2294 common/models.py:2295
+#: common/models.py:2551 common/models.py:2552 part/models.py:2997
#: part/models.py:3085 part/models.py:3164 part/models.py:3184
#: plugin/models.py:270 plugin/models.py:271
#: report/templates/report/inventree_test_report_base.html:105
@@ -293,7 +297,7 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:571 InvenTree/models.py:572 common/models.py:2266
+#: InvenTree/models.py:571 InvenTree/models.py:572 common/models.py:2280
#: company/models.py:387 label/models.py:102 part/models.py:838
#: part/models.py:3332 plugin/models.py:94 report/models.py:158
#: templates/InvenTree/settings/mixins/urls.html:13
@@ -316,7 +320,7 @@ msgstr ""
#: company/models.py:547 company/templates/company/company_base.html:72
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:108 label/models.py:109
-#: order/models.py:199 part/admin.py:194 part/admin.py:276 part/models.py:860
+#: order/models.py:200 part/admin.py:194 part/admin.py:276 part/models.py:860
#: part/models.py:3341 part/templates/part/category.html:81
#: part/templates/part/part_base.html:172
#: part/templates/part/part_scheduling.html:12 report/models.py:171
@@ -332,11 +336,11 @@ msgstr ""
#: templates/js/translated/company.js:1236 templates/js/translated/part.js:1155
#: templates/js/translated/part.js:1597 templates/js/translated/part.js:1869
#: templates/js/translated/part.js:2348 templates/js/translated/part.js:2439
-#: templates/js/translated/purchase_order.js:1548
-#: templates/js/translated/purchase_order.js:1682
-#: templates/js/translated/purchase_order.js:1860
+#: templates/js/translated/purchase_order.js:1615
+#: templates/js/translated/purchase_order.js:1749
+#: templates/js/translated/purchase_order.js:1927
#: templates/js/translated/return_order.js:272
-#: templates/js/translated/sales_order.js:714
+#: templates/js/translated/sales_order.js:740
#: templates/js/translated/stock.js:1418 templates/js/translated/stock.js:1791
#: templates/js/translated/stock.js:2551 templates/js/translated/stock.js:2623
msgid "Description"
@@ -363,7 +367,7 @@ msgstr ""
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:702 order/serializers.py:503
+#: InvenTree/models.py:702
msgid "Barcode Hash"
msgstr ""
@@ -375,11 +379,11 @@ msgstr ""
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:801
+#: InvenTree/models.py:802
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:802
+#: InvenTree/models.py:803
msgid "An error has been logged by the server."
msgstr ""
@@ -460,107 +464,107 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:708
msgid "Czech"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:709
msgid "Danish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:710
msgid "German"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:711
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:709
+#: InvenTree/settings.py:712
msgid "English"
msgstr ""
-#: InvenTree/settings.py:710
+#: InvenTree/settings.py:713
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:711
+#: InvenTree/settings.py:714
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:712
+#: InvenTree/settings.py:715
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/settings.py:713
+#: InvenTree/settings.py:716
msgid "French"
msgstr ""
-#: InvenTree/settings.py:714
+#: InvenTree/settings.py:717
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:715
+#: InvenTree/settings.py:718
msgid "Hungarian"
msgstr ""
-#: InvenTree/settings.py:716
+#: InvenTree/settings.py:719
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:717
+#: InvenTree/settings.py:720
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:718
+#: InvenTree/settings.py:721
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:719
+#: InvenTree/settings.py:722
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:720
+#: InvenTree/settings.py:723
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:721
+#: InvenTree/settings.py:724
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:722
+#: InvenTree/settings.py:725
msgid "Portuguese"
msgstr ""
-#: InvenTree/settings.py:723
+#: InvenTree/settings.py:726
msgid "Portuguese (Brazilian)"
msgstr ""
-#: InvenTree/settings.py:724
+#: InvenTree/settings.py:727
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:725
+#: InvenTree/settings.py:728
msgid "Slovenian"
msgstr ""
-#: InvenTree/settings.py:726
+#: InvenTree/settings.py:729
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:727
+#: InvenTree/settings.py:730
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:728
+#: InvenTree/settings.py:731
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:729
+#: InvenTree/settings.py:732
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:730
+#: InvenTree/settings.py:733
msgid "Chinese"
msgstr ""
@@ -576,188 +580,189 @@ msgstr ""
msgid "InvenTree system health checks failed"
msgstr ""
-#: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:313 InvenTree/status_codes.py:350
-#: InvenTree/status_codes.py:385 templates/js/translated/table_filters.js:417
+#: InvenTree/status_codes.py:139 InvenTree/status_codes.py:181
+#: InvenTree/status_codes.py:357 InvenTree/status_codes.py:394
+#: InvenTree/status_codes.py:429 templates/js/translated/table_filters.js:417
msgid "Pending"
msgstr ""
-#: InvenTree/status_codes.py:100
+#: InvenTree/status_codes.py:140
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:316
-#: InvenTree/status_codes.py:352 order/templates/order/order_base.html:142
-#: order/templates/order/sales_order_base.html:133
+#: InvenTree/status_codes.py:141 InvenTree/status_codes.py:360
+#: InvenTree/status_codes.py:396 order/templates/order/order_base.html:161
+#: order/templates/order/sales_order_base.html:161
msgid "Complete"
msgstr ""
-#: InvenTree/status_codes.py:102 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:315 InvenTree/status_codes.py:353
+#: InvenTree/status_codes.py:142 InvenTree/status_codes.py:184
+#: InvenTree/status_codes.py:359 InvenTree/status_codes.py:397
msgid "Cancelled"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:143
-#: InvenTree/status_codes.py:183
+#: InvenTree/status_codes.py:143 InvenTree/status_codes.py:185
+#: InvenTree/status_codes.py:227
msgid "Lost"
msgstr ""
-#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:186
+#: InvenTree/status_codes.py:144 InvenTree/status_codes.py:186
+#: InvenTree/status_codes.py:230
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1260
-#: templates/js/translated/sales_order.js:1503
-#: templates/js/translated/sales_order.js:1818
-msgid "Shipped"
-msgstr ""
-
-#: InvenTree/status_codes.py:179
-msgid "OK"
-msgstr ""
-
-#: InvenTree/status_codes.py:180
-msgid "Attention needed"
-msgstr ""
-
-#: InvenTree/status_codes.py:181
-msgid "Damaged"
-msgstr ""
-
-#: InvenTree/status_codes.py:182
-msgid "Destroyed"
-msgstr ""
-
-#: InvenTree/status_codes.py:184
-msgid "Rejected"
-msgstr ""
-
-#: InvenTree/status_codes.py:185
-msgid "Quarantined"
-msgstr ""
-
-#: InvenTree/status_codes.py:263
-msgid "Legacy stock tracking entry"
-msgstr ""
-
-#: InvenTree/status_codes.py:265
-msgid "Stock item created"
-msgstr ""
-
-#: InvenTree/status_codes.py:267
-msgid "Edited stock item"
-msgstr ""
-
-#: InvenTree/status_codes.py:268
-msgid "Assigned serial number"
-msgstr ""
-
-#: InvenTree/status_codes.py:270
-msgid "Stock counted"
-msgstr ""
-
-#: InvenTree/status_codes.py:271
-msgid "Stock manually added"
-msgstr ""
-
-#: InvenTree/status_codes.py:272
-msgid "Stock manually removed"
-msgstr ""
-
-#: InvenTree/status_codes.py:274
-msgid "Location changed"
-msgstr ""
-
-#: InvenTree/status_codes.py:276
-msgid "Installed into assembly"
-msgstr ""
-
-#: InvenTree/status_codes.py:277
-msgid "Removed from assembly"
-msgstr ""
-
-#: InvenTree/status_codes.py:279
-msgid "Installed component item"
-msgstr ""
-
-#: InvenTree/status_codes.py:280
-msgid "Removed component item"
-msgstr ""
-
-#: InvenTree/status_codes.py:282
-msgid "Split from parent item"
-msgstr ""
-
-#: InvenTree/status_codes.py:283
-msgid "Split child item"
-msgstr ""
-
-#: InvenTree/status_codes.py:285 templates/js/translated/stock.js:2213
-msgid "Merged stock items"
-msgstr ""
-
-#: InvenTree/status_codes.py:287
-msgid "Converted to variant"
-msgstr ""
-
-#: InvenTree/status_codes.py:289 templates/js/translated/table_filters.js:273
-msgid "Sent to customer"
-msgstr ""
-
-#: InvenTree/status_codes.py:290
-msgid "Returned from customer"
-msgstr ""
-
-#: InvenTree/status_codes.py:292
-msgid "Build order output created"
-msgstr ""
-
-#: InvenTree/status_codes.py:293
-msgid "Build order output completed"
-msgstr ""
-
-#: InvenTree/status_codes.py:294
-msgid "Consumed by build order"
-msgstr ""
-
-#: InvenTree/status_codes.py:296
-msgid "Shipped against Sales Order"
-msgstr ""
-
-#: InvenTree/status_codes.py:298
-msgid "Received against Purchase Order"
-msgstr ""
-
-#: InvenTree/status_codes.py:300
-msgid "Returned against Return Order"
-msgstr ""
-
-#: InvenTree/status_codes.py:314
-msgid "Production"
-msgstr ""
-
-#: InvenTree/status_codes.py:351
+#: InvenTree/status_codes.py:182 InvenTree/status_codes.py:395
msgid "In Progress"
msgstr ""
-#: InvenTree/status_codes.py:386
+#: InvenTree/status_codes.py:183 order/models.py:1295
+#: templates/js/translated/sales_order.js:1418
+#: templates/js/translated/sales_order.js:1542
+#: templates/js/translated/sales_order.js:1846
+msgid "Shipped"
+msgstr ""
+
+#: InvenTree/status_codes.py:223
+msgid "OK"
+msgstr ""
+
+#: InvenTree/status_codes.py:224
+msgid "Attention needed"
+msgstr ""
+
+#: InvenTree/status_codes.py:225
+msgid "Damaged"
+msgstr ""
+
+#: InvenTree/status_codes.py:226
+msgid "Destroyed"
+msgstr ""
+
+#: InvenTree/status_codes.py:228
+msgid "Rejected"
+msgstr ""
+
+#: InvenTree/status_codes.py:229
+msgid "Quarantined"
+msgstr ""
+
+#: InvenTree/status_codes.py:307
+msgid "Legacy stock tracking entry"
+msgstr ""
+
+#: InvenTree/status_codes.py:309
+msgid "Stock item created"
+msgstr ""
+
+#: InvenTree/status_codes.py:311
+msgid "Edited stock item"
+msgstr ""
+
+#: InvenTree/status_codes.py:312
+msgid "Assigned serial number"
+msgstr ""
+
+#: InvenTree/status_codes.py:314
+msgid "Stock counted"
+msgstr ""
+
+#: InvenTree/status_codes.py:315
+msgid "Stock manually added"
+msgstr ""
+
+#: InvenTree/status_codes.py:316
+msgid "Stock manually removed"
+msgstr ""
+
+#: InvenTree/status_codes.py:318
+msgid "Location changed"
+msgstr ""
+
+#: InvenTree/status_codes.py:320
+msgid "Installed into assembly"
+msgstr ""
+
+#: InvenTree/status_codes.py:321
+msgid "Removed from assembly"
+msgstr ""
+
+#: InvenTree/status_codes.py:323
+msgid "Installed component item"
+msgstr ""
+
+#: InvenTree/status_codes.py:324
+msgid "Removed component item"
+msgstr ""
+
+#: InvenTree/status_codes.py:326
+msgid "Split from parent item"
+msgstr ""
+
+#: InvenTree/status_codes.py:327
+msgid "Split child item"
+msgstr ""
+
+#: InvenTree/status_codes.py:329 templates/js/translated/stock.js:2213
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:331
+msgid "Converted to variant"
+msgstr ""
+
+#: InvenTree/status_codes.py:333 templates/js/translated/table_filters.js:273
+msgid "Sent to customer"
+msgstr ""
+
+#: InvenTree/status_codes.py:334
+msgid "Returned from customer"
+msgstr ""
+
+#: InvenTree/status_codes.py:336
+msgid "Build order output created"
+msgstr ""
+
+#: InvenTree/status_codes.py:337
+msgid "Build order output completed"
+msgstr ""
+
+#: InvenTree/status_codes.py:338
+msgid "Consumed by build order"
+msgstr ""
+
+#: InvenTree/status_codes.py:340
+msgid "Shipped against Sales Order"
+msgstr ""
+
+#: InvenTree/status_codes.py:342
+msgid "Received against Purchase Order"
+msgstr ""
+
+#: InvenTree/status_codes.py:344
+msgid "Returned against Return Order"
+msgstr ""
+
+#: InvenTree/status_codes.py:358
+msgid "Production"
+msgstr ""
+
+#: InvenTree/status_codes.py:430
msgid "Return"
msgstr ""
-#: InvenTree/status_codes.py:387
+#: InvenTree/status_codes.py:431
msgid "Repair"
msgstr ""
-#: InvenTree/status_codes.py:388
+#: InvenTree/status_codes.py:432
msgid "Refund"
msgstr ""
-#: InvenTree/status_codes.py:389
+#: InvenTree/status_codes.py:433
msgid "Replace"
msgstr ""
-#: InvenTree/status_codes.py:390
+#: InvenTree/status_codes.py:434
msgid "Reject"
msgstr ""
@@ -801,7 +806,7 @@ msgstr ""
msgid "About InvenTree"
msgstr ""
-#: build/api.py:245
+#: build/api.py:221
msgid "Build must be cancelled before it can be deleted"
msgstr ""
@@ -821,7 +826,7 @@ msgstr ""
#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:141
#: templates/InvenTree/settings/sidebar.html:49
-#: templates/js/translated/search.js:214 users/models.py:42
+#: templates/js/translated/search.js:216 users/models.py:42
msgid "Build Orders"
msgstr ""
@@ -833,27 +838,27 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:158 order/models.py:326 order/models.py:722
-#: order/models.py:1027 order/models.py:1638 part/admin.py:278
+#: build/models.py:158 order/models.py:327 order/models.py:734
+#: order/models.py:1056 order/models.py:1673 part/admin.py:278
#: part/models.py:3602 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
#: report/templates/report/inventree_so_report_base.html:28
#: templates/js/translated/bom.js:739 templates/js/translated/bom.js:913
-#: templates/js/translated/build.js:1847 templates/js/translated/order.js:269
+#: templates/js/translated/build.js:1847 templates/js/translated/order.js:272
#: templates/js/translated/pricing.js:368
-#: templates/js/translated/purchase_order.js:1903
-#: templates/js/translated/return_order.js:668
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/return_order.js:671
+#: templates/js/translated/sales_order.js:1710
msgid "Reference"
msgstr ""
#: build/models.py:169
-msgid "Brief description of the build"
+msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:177 build/templates/build/build_base.html:172
+#: build/models.py:177 build/templates/build/build_base.html:189
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
@@ -862,9 +867,9 @@ msgstr ""
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:183 build/templates/build/build_base.html:80
+#: build/models.py:183 build/templates/build/build_base.html:98
#: build/templates/build/detail.html:29 company/models.py:720
-#: order/models.py:1123 order/models.py:1239 order/models.py:1240
+#: order/models.py:1158 order/models.py:1274 order/models.py:1275
#: part/models.py:382 part/models.py:2849 part/models.py:2963
#: part/models.py:3103 part/models.py:3122 part/models.py:3141
#: part/models.py:3162 part/models.py:3254 part/models.py:3375
@@ -885,7 +890,7 @@ msgstr ""
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
#: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:502 templates/js/translated/bom.js:601
+#: templates/js/translated/barcode.js:516 templates/js/translated/bom.js:601
#: templates/js/translated/bom.js:738 templates/js/translated/bom.js:857
#: templates/js/translated/build.js:1230 templates/js/translated/build.js:1714
#: templates/js/translated/build.js:2213 templates/js/translated/build.js:2615
@@ -895,16 +900,16 @@ msgstr ""
#: templates/js/translated/company.js:1154 templates/js/translated/part.js:1582
#: templates/js/translated/part.js:1648 templates/js/translated/part.js:1838
#: templates/js/translated/pricing.js:351
-#: templates/js/translated/purchase_order.js:694
-#: templates/js/translated/purchase_order.js:1195
-#: templates/js/translated/purchase_order.js:1681
-#: templates/js/translated/purchase_order.js:1845
-#: templates/js/translated/return_order.js:482
-#: templates/js/translated/return_order.js:649
-#: templates/js/translated/sales_order.js:235
-#: templates/js/translated/sales_order.js:1068
-#: templates/js/translated/sales_order.js:1454
-#: templates/js/translated/sales_order.js:1666
+#: templates/js/translated/purchase_order.js:697
+#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1748
+#: templates/js/translated/purchase_order.js:1912
+#: templates/js/translated/return_order.js:485
+#: templates/js/translated/return_order.js:652
+#: templates/js/translated/sales_order.js:239
+#: templates/js/translated/sales_order.js:1094
+#: templates/js/translated/sales_order.js:1493
+#: templates/js/translated/sales_order.js:1694
#: templates/js/translated/stock.js:622 templates/js/translated/stock.js:788
#: templates/js/translated/stock.js:1000 templates/js/translated/stock.js:1747
#: templates/js/translated/stock.js:2649 templates/js/translated/stock.js:2873
@@ -924,9 +929,9 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:205 build/serializers.py:825
+#: build/models.py:205 build/serializers.py:828
#: templates/js/translated/build.js:2201
-#: templates/js/translated/sales_order.js:1056
+#: templates/js/translated/sales_order.js:1082
msgid "Source Location"
msgstr ""
@@ -966,19 +971,19 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:248 build/serializers.py:226 order/serializers.py:481
-#: stock/models.py:731 templates/js/translated/purchase_order.js:1058
+#: build/models.py:248 build/serializers.py:229 order/serializers.py:487
+#: stock/models.py:732 templates/js/translated/purchase_order.js:1048
msgid "Batch Code"
msgstr ""
-#: build/models.py:252 build/serializers.py:227
+#: build/models.py:252 build/serializers.py:230
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:255 order/models.py:209 part/models.py:1028
-#: part/templates/part/part_base.html:319
+#: build/models.py:255 order/models.py:210 part/models.py:1028
+#: part/templates/part/part_base.html:312
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:727
+#: templates/js/translated/sales_order.js:753
msgid "Creation Date"
msgstr ""
@@ -990,7 +995,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:263 order/models.py:376 order/models.py:1681
+#: build/models.py:263 order/models.py:377 order/models.py:1716
#: templates/js/translated/build.js:2700
msgid "Completion Date"
msgstr ""
@@ -1007,15 +1012,15 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:286 build/templates/build/build_base.html:193
-#: build/templates/build/detail.html:122 order/models.py:223
-#: order/templates/order/order_base.html:194
-#: order/templates/order/return_order_base.html:162
-#: order/templates/order/sales_order_base.html:193 part/models.py:1032
-#: part/templates/part/part_base.html:399
+#: build/models.py:286 build/templates/build/build_base.html:210
+#: build/templates/build/detail.html:122 order/models.py:224
+#: order/templates/order/order_base.html:213
+#: order/templates/order/return_order_base.html:183
+#: order/templates/order/sales_order_base.html:221 part/models.py:1032
+#: part/templates/part/part_base.html:392
#: report/templates/report/inventree_build_order_base.html:158
#: templates/js/translated/build.js:2672
-#: templates/js/translated/purchase_order.js:1593
+#: templates/js/translated/purchase_order.js:1660
#: templates/js/translated/return_order.js:305
#: templates/js/translated/table_filters.js:391
msgid "Responsible"
@@ -1027,9 +1032,9 @@ msgstr ""
#: build/models.py:292 build/templates/build/detail.html:108
#: company/templates/company/manufacturer_part.html:107
-#: company/templates/company/supplier_part.html:188
-#: part/templates/part/part_base.html:392 stock/models.py:725
-#: stock/templates/stock/item_base.html:206
+#: company/templates/company/supplier_part.html:182
+#: part/templates/part/part_base.html:385 stock/models.py:726
+#: stock/templates/stock/item_base.html:201
msgid "External Link"
msgstr ""
@@ -1075,11 +1080,11 @@ msgstr ""
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1209 order/models.py:1515
+#: build/models.py:1209 order/models.py:1550
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1215 order/models.py:1518
+#: build/models.py:1215 order/models.py:1553
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -1091,7 +1096,7 @@ msgstr ""
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1347 stock/templates/stock/item_base.html:175
+#: build/models.py:1347 stock/templates/stock/item_base.html:170
#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2588
#: templates/navbar.html:38
msgid "Build"
@@ -1101,19 +1106,19 @@ msgstr ""
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1364 build/serializers.py:674 order/serializers.py:1013
-#: order/serializers.py:1034 stock/serializers.py:388 stock/serializers.py:741
+#: build/models.py:1364 build/serializers.py:677 order/serializers.py:1035
+#: order/serializers.py:1056 stock/serializers.py:388 stock/serializers.py:741
#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:200
+#: stock/templates/stock/item_base.html:195
#: templates/js/translated/build.js:801 templates/js/translated/build.js:806
#: templates/js/translated/build.js:2215 templates/js/translated/build.js:2785
-#: templates/js/translated/sales_order.js:236
-#: templates/js/translated/sales_order.js:1069
-#: templates/js/translated/sales_order.js:1367
-#: templates/js/translated/sales_order.js:1372
-#: templates/js/translated/sales_order.js:1461
-#: templates/js/translated/sales_order.js:1551
+#: templates/js/translated/sales_order.js:240
+#: templates/js/translated/sales_order.js:1095
+#: templates/js/translated/sales_order.js:1394
+#: templates/js/translated/sales_order.js:1399
+#: templates/js/translated/sales_order.js:1500
+#: templates/js/translated/sales_order.js:1590
#: templates/js/translated/stock.js:623 templates/js/translated/stock.js:789
#: templates/js/translated/stock.js:2756
msgid "Stock Item"
@@ -1123,10 +1128,10 @@ msgstr ""
msgid "Source stock item"
msgstr ""
-#: build/models.py:1377 build/serializers.py:194
-#: build/templates/build/build_base.html:85
-#: build/templates/build/detail.html:34 common/models.py:2088
-#: order/models.py:1013 order/models.py:1559 order/serializers.py:1187
+#: build/models.py:1377 build/serializers.py:197
+#: build/templates/build/build_base.html:103
+#: build/templates/build/detail.html:34 common/models.py:2102
+#: order/models.py:1042 order/models.py:1594 order/serializers.py:1209
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277
#: part/forms.py:47 part/models.py:2976 part/models.py:3583
#: part/templates/part/part_pricing.html:16
@@ -1138,31 +1143,32 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
#: stock/admin.py:103 stock/serializers.py:281
-#: stock/templates/stock/item_base.html:293
-#: stock/templates/stock/item_base.html:301
+#: stock/templates/stock/item_base.html:288
+#: stock/templates/stock/item_base.html:296
+#: stock/templates/stock/item_base.html:343
#: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:504 templates/js/translated/bom.js:740
+#: templates/js/translated/barcode.js:518 templates/js/translated/bom.js:740
#: templates/js/translated/bom.js:921 templates/js/translated/build.js:477
#: templates/js/translated/build.js:638 templates/js/translated/build.js:828
#: templates/js/translated/build.js:1252 templates/js/translated/build.js:1740
#: templates/js/translated/build.js:2216
#: templates/js/translated/company.js:1406
#: templates/js/translated/model_renderers.js:201
-#: templates/js/translated/order.js:276 templates/js/translated/part.js:878
+#: templates/js/translated/order.js:279 templates/js/translated/part.js:878
#: templates/js/translated/part.js:1446 templates/js/translated/part.js:2876
#: templates/js/translated/pricing.js:363
#: templates/js/translated/pricing.js:456
#: templates/js/translated/pricing.js:504
#: templates/js/translated/pricing.js:598
-#: templates/js/translated/purchase_order.js:697
-#: templates/js/translated/purchase_order.js:1685
-#: templates/js/translated/purchase_order.js:1909
-#: templates/js/translated/sales_order.js:252
-#: templates/js/translated/sales_order.js:1070
-#: templates/js/translated/sales_order.js:1386
-#: templates/js/translated/sales_order.js:1467
-#: templates/js/translated/sales_order.js:1557
-#: templates/js/translated/sales_order.js:1688
+#: templates/js/translated/purchase_order.js:700
+#: templates/js/translated/purchase_order.js:1752
+#: templates/js/translated/purchase_order.js:1976
+#: templates/js/translated/sales_order.js:256
+#: templates/js/translated/sales_order.js:1096
+#: templates/js/translated/sales_order.js:1413
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1596
+#: templates/js/translated/sales_order.js:1716
#: templates/js/translated/stock.js:494 templates/js/translated/stock.js:648
#: templates/js/translated/stock.js:819 templates/js/translated/stock.js:2800
#: templates/js/translated/stock.js:2885
@@ -1181,255 +1187,256 @@ msgstr ""
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:145 build/serializers.py:703
+#: build/serializers.py:148 build/serializers.py:706
#: templates/js/translated/build.js:1240
msgid "Build Output"
msgstr ""
-#: build/serializers.py:157
+#: build/serializers.py:160
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:161
+#: build/serializers.py:164
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:165
+#: build/serializers.py:168
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:176
+#: build/serializers.py:179
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:195
+#: build/serializers.py:198
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:209 build/serializers.py:694 order/models.py:407
-#: order/serializers.py:354 order/serializers.py:476 part/serializers.py:1088
-#: part/serializers.py:1409 stock/models.py:585 stock/models.py:1344
+#: build/serializers.py:212 build/serializers.py:697 order/models.py:408
+#: order/serializers.py:360 order/serializers.py:482 part/serializers.py:1088
+#: part/serializers.py:1409 stock/models.py:586 stock/models.py:1370
#: stock/serializers.py:290
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:216
+#: build/serializers.py:219
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:219
+#: build/serializers.py:222
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:233 order/serializers.py:489 order/serializers.py:1191
-#: stock/serializers.py:299 templates/js/translated/purchase_order.js:1069
+#: build/serializers.py:236 order/serializers.py:495 order/serializers.py:1213
+#: stock/serializers.py:299 templates/js/translated/purchase_order.js:1072
#: templates/js/translated/stock.js:301 templates/js/translated/stock.js:495
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:234
+#: build/serializers.py:237
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:247
+#: build/serializers.py:250
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:248
+#: build/serializers.py:251
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:283 stock/api.py:647
+#: build/serializers.py:286 stock/api.py:630
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:332 build/serializers.py:401
+#: build/serializers.py:335 build/serializers.py:404
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:371 order/serializers.py:462 order/serializers.py:581
-#: order/serializers.py:1540 part/serializers.py:855 stock/serializers.py:310
+#: build/serializers.py:374 order/serializers.py:468 order/serializers.py:589
+#: order/serializers.py:1562 part/serializers.py:855 stock/serializers.py:310
#: stock/serializers.py:445 stock/serializers.py:526 stock/serializers.py:902
-#: stock/serializers.py:1144 stock/templates/stock/item_base.html:391
-#: templates/js/translated/barcode.js:503
-#: templates/js/translated/barcode.js:747 templates/js/translated/build.js:813
+#: stock/serializers.py:1144 stock/templates/stock/item_base.html:384
+#: templates/js/translated/barcode.js:517
+#: templates/js/translated/barcode.js:764 templates/js/translated/build.js:813
#: templates/js/translated/build.js:1755
-#: templates/js/translated/purchase_order.js:1096
-#: templates/js/translated/sales_order.js:1379
-#: templates/js/translated/sales_order.js:1478
-#: templates/js/translated/sales_order.js:1486
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/purchase_order.js:1097
+#: templates/js/translated/purchase_order.js:1187
+#: templates/js/translated/sales_order.js:1406
+#: templates/js/translated/sales_order.js:1517
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1604
#: templates/js/translated/stock.js:624 templates/js/translated/stock.js:790
#: templates/js/translated/stock.js:1002 templates/js/translated/stock.js:1911
#: templates/js/translated/stock.js:2663
msgid "Location"
msgstr ""
-#: build/serializers.py:372
+#: build/serializers.py:375
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:378 build/templates/build/build_base.html:145
-#: build/templates/build/detail.html:62 order/models.py:748
-#: order/models.py:1664 order/serializers.py:499 stock/admin.py:106
-#: stock/templates/stock/item_base.html:424
-#: templates/js/translated/barcode.js:236 templates/js/translated/build.js:2644
-#: templates/js/translated/purchase_order.js:1200
-#: templates/js/translated/purchase_order.js:1552
+#: build/serializers.py:381 build/templates/build/build_base.html:157
+#: build/templates/build/detail.html:62 order/models.py:760
+#: order/models.py:1699 order/serializers.py:505 stock/admin.py:106
+#: stock/templates/stock/item_base.html:417
+#: templates/js/translated/barcode.js:239 templates/js/translated/build.js:2644
+#: templates/js/translated/purchase_order.js:1227
+#: templates/js/translated/purchase_order.js:1619
#: templates/js/translated/return_order.js:277
-#: templates/js/translated/sales_order.js:719
+#: templates/js/translated/sales_order.js:745
#: templates/js/translated/stock.js:1886 templates/js/translated/stock.js:2774
#: templates/js/translated/stock.js:2901
msgid "Status"
msgstr ""
-#: build/serializers.py:384
+#: build/serializers.py:387
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:385
+#: build/serializers.py:388
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:454
+#: build/serializers.py:457
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:455
+#: build/serializers.py:458
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:461
+#: build/serializers.py:464
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:462
+#: build/serializers.py:465
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:490
+#: build/serializers.py:493
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:491
+#: build/serializers.py:494
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:514
+#: build/serializers.py:517
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:516
+#: build/serializers.py:519
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:526
+#: build/serializers.py:529
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:531
+#: build/serializers.py:534
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:532
+#: build/serializers.py:535
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:542 templates/js/translated/build.js:265
+#: build/serializers.py:545 templates/js/translated/build.js:265
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:547 order/serializers.py:237 order/serializers.py:1081
+#: build/serializers.py:550 order/serializers.py:242 order/serializers.py:1103
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:548
+#: build/serializers.py:551
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:558 templates/js/translated/build.js:269
+#: build/serializers.py:561 templates/js/translated/build.js:269
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:567 templates/js/translated/build.js:253
+#: build/serializers.py:570 templates/js/translated/build.js:253
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:597 build/serializers.py:651 part/models.py:3490
+#: build/serializers.py:600 build/serializers.py:654 part/models.py:3490
#: part/models.py:3873
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:607
+#: build/serializers.py:610
msgid "Build output"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:618
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:665
+#: build/serializers.py:668
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:680 stock/serializers.py:754
+#: build/serializers.py:683 stock/serializers.py:754
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:729 order/serializers.py:1071
+#: build/serializers.py:732 order/serializers.py:1093
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:735
+#: build/serializers.py:738
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:742
+#: build/serializers.py:745
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:747
+#: build/serializers.py:750
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:770 order/serializers.py:1355
+#: build/serializers.py:773 order/serializers.py:1377
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:826
+#: build/serializers.py:829
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:834
+#: build/serializers.py:837
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:835
+#: build/serializers.py:838
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:840
+#: build/serializers.py:843
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:841
+#: build/serializers.py:844
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:846
+#: build/serializers.py:849
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:847
+#: build/serializers.py:850
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:852
+#: build/serializers.py:855
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:853
+#: build/serializers.py:856
msgid "Allocate optional BOM items to build order"
msgstr ""
@@ -1447,101 +1454,141 @@ msgid "Build order {bo} is now overdue"
msgstr ""
#: build/templates/build/build_base.html:39
-#: order/templates/order/order_base.html:28
-#: order/templates/order/return_order_base.html:38
-#: order/templates/order/sales_order_base.html:38
-msgid "Print actions"
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:29
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:43
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:54
+msgid "Barcode actions"
msgstr ""
#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:33
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:46
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:56 templates/qr_button.html:1
+msgid "Show QR Code"
+msgstr ""
+
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:36
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:58
+#: templates/js/translated/barcode.js:466
+#: templates/js/translated/barcode.js:471
+msgid "Unlink Barcode"
+msgstr ""
+
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:38
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:51
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:60
+msgid "Link Barcode"
+msgstr ""
+
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:46
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
+msgid "Print actions"
+msgstr ""
+
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:50
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:54
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:56
+#: build/templates/build/build_base.html:74
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:59
+#: build/templates/build/build_base.html:77
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:62
+#: build/templates/build/build_base.html:80
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:67
-#: build/templates/build/build_base.html:68
+#: build/templates/build/build_base.html:85
+#: build/templates/build/build_base.html:86
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:90
+#: build/templates/build/build_base.html:108
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:117
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:104
-#, python-format
-msgid "This Build Order is allocated to Sales Order %(link)s"
-msgstr ""
-
-#: build/templates/build/build_base.html:111
+#: build/templates/build/build_base.html:123
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:118
+#: build/templates/build/build_base.html:130
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:123
+#: build/templates/build/build_base.html:135
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:128
+#: build/templates/build/build_base.html:140
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:133
+#: build/templates/build/build_base.html:145
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:154
-#: build/templates/build/detail.html:138 order/models.py:205
-#: order/models.py:1033 order/templates/order/order_base.html:170
-#: order/templates/order/return_order_base.html:145
-#: order/templates/order/sales_order_base.html:164
+#: build/templates/build/build_base.html:166
+#: build/templates/build/detail.html:138 order/models.py:206
+#: order/models.py:1068 order/templates/order/order_base.html:189
+#: order/templates/order/return_order_base.html:166
+#: order/templates/order/sales_order_base.html:192
#: report/templates/report/inventree_build_order_base.html:125
#: templates/js/translated/build.js:2692 templates/js/translated/part.js:1465
-#: templates/js/translated/purchase_order.js:1569
-#: templates/js/translated/purchase_order.js:1985
+#: templates/js/translated/purchase_order.js:1636
+#: templates/js/translated/purchase_order.js:2052
#: templates/js/translated/return_order.js:293
-#: templates/js/translated/return_order.js:690
-#: templates/js/translated/sales_order.js:735
-#: templates/js/translated/sales_order.js:1731
+#: templates/js/translated/return_order.js:693
+#: templates/js/translated/sales_order.js:761
+#: templates/js/translated/sales_order.js:1759
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:159
+#: build/templates/build/build_base.html:171
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:159
-#: build/templates/build/build_base.html:211
-#: order/templates/order/order_base.html:106
-#: order/templates/order/return_order_base.html:98
-#: order/templates/order/sales_order_base.html:94
+#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:228
+#: order/templates/order/order_base.html:125
+#: order/templates/order/return_order_base.html:119
+#: order/templates/order/sales_order_base.html:122
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:384
#: templates/js/translated/table_filters.js:444
@@ -1549,43 +1596,51 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:166
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:67 build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:174
+#: order/templates/order/sales_order_base.html:202
#: templates/js/translated/table_filters.js:487
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:179
-#: build/templates/build/detail.html:101 order/api.py:1516 order/models.py:1232
-#: order/models.py:1331 order/models.py:1465
+#: build/templates/build/build_base.html:196
+#: build/templates/build/detail.html:101 order/api.py:1422 order/models.py:1267
+#: order/models.py:1366 order/models.py:1500
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:135
#: report/templates/report/inventree_so_report_base.html:14
-#: stock/templates/stock/item_base.html:371
+#: stock/templates/stock/item_base.html:364
#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/pricing.js:894
-#: templates/js/translated/sales_order.js:681
+#: templates/js/translated/sales_order.js:707
#: templates/js/translated/stock.js:2703
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:186
+#: build/templates/build/build_base.html:203
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_base.html:152
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:200
+#: build/templates/build/build_base.html:217
#: build/templates/build/detail.html:94 templates/js/translated/build.js:2609
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:263
+#: build/templates/build/build_base.html:280
msgid "Delete Build Order"
msgstr ""
+#: build/templates/build/build_base.html:290
+msgid "Build Order QR Code"
+msgstr ""
+
+#: build/templates/build/build_base.html:302
+msgid "Link Barcode to Build Order"
+msgstr ""
+
#: build/templates/build/detail.html:15
msgid "Build Details"
msgstr ""
@@ -1598,9 +1653,8 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1150
-#: templates/js/translated/purchase_order.js:1201
-#: templates/js/translated/purchase_order.js:2027
+#: build/templates/build/detail.html:49 order/models.py:1185
+#: templates/js/translated/purchase_order.js:2094
msgid "Destination"
msgstr ""
@@ -1613,9 +1667,10 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:105
-#: stock/templates/stock/item_base.html:168
+#: stock/templates/stock/item_base.html:163
#: templates/js/translated/build.js:1259
#: templates/js/translated/model_renderers.js:206
+#: templates/js/translated/purchase_order.js:1193
#: templates/js/translated/stock.js:1072 templates/js/translated/stock.js:1900
#: templates/js/translated/stock.js:2908
#: templates/js/translated/table_filters.js:211
@@ -1624,9 +1679,9 @@ msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:157
-#: order/templates/order/return_order_base.html:132
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/order_base.html:176
+#: order/templates/order/return_order_base.html:153
+#: order/templates/order/sales_order_base.html:186
#: templates/js/translated/build.js:2652
msgid "Created"
msgstr ""
@@ -1679,7 +1734,7 @@ msgstr ""
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:86
#: part/templates/part/category.html:184
-#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:740
msgid "Order Parts"
msgstr ""
@@ -1779,23 +1834,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -2680,7 +2736,7 @@ msgstr ""
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1670 common/models.py:2049
+#: common/models.py:1670 common/models.py:2063
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -3001,89 +3057,105 @@ msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:1983
-msgid "Show Quantity in Forms"
+msgid "Regex Search"
msgstr ""
#: common/models.py:1984
-msgid "Display available part quantity in some forms"
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:1990
-msgid "Escape Key Closes Forms"
+msgid "Whole Word Search"
msgstr ""
#: common/models.py:1991
-msgid "Use the escape key to close modal forms"
+msgid "Search queries return results for whole word matches"
msgstr ""
#: common/models.py:1997
-msgid "Fixed Navbar"
+msgid "Show Quantity in Forms"
msgstr ""
#: common/models.py:1998
-msgid "The navbar position is fixed to the top of the screen"
+msgid "Display available part quantity in some forms"
msgstr ""
#: common/models.py:2004
-msgid "Date Format"
+msgid "Escape Key Closes Forms"
msgstr ""
#: common/models.py:2005
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2011
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2012
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2018
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2019
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2019 part/templates/part/detail.html:41
+#: common/models.py:2033 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2020
+#: common/models.py:2034
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2026 part/templates/part/detail.html:62
+#: common/models.py:2040 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2027
+#: common/models.py:2041
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2033
+#: common/models.py:2047
msgid "Table String Length"
msgstr ""
-#: common/models.py:2034
+#: common/models.py:2048
msgid "Maximimum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2103
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2096 company/serializers.py:424 order/models.py:1060
-#: order/models.py:1852 templates/js/translated/company.js:1411
+#: common/models.py:2110 company/serializers.py:424 order/models.py:1095
+#: order/models.py:1888 templates/js/translated/company.js:1411
#: templates/js/translated/part.js:1520 templates/js/translated/pricing.js:603
-#: templates/js/translated/return_order.js:680
+#: templates/js/translated/return_order.js:683
msgid "Price"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2111
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2257 common/models.py:2435
+#: common/models.py:2271 common/models.py:2449
msgid "Endpoint"
msgstr ""
-#: common/models.py:2258
+#: common/models.py:2272
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2281
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2272 part/admin.py:50 part/models.py:1011
+#: common/models.py:2286 part/admin.py:50 part/models.py:1011
#: plugin/models.py:100 templates/js/translated/table_filters.js:62
#: templates/js/translated/table_filters.js:144
#: templates/js/translated/table_filters.js:380
@@ -3091,97 +3163,97 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2287
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2287
+#: common/models.py:2301
msgid "Token"
msgstr ""
-#: common/models.py:2288
+#: common/models.py:2302
msgid "Token for access"
msgstr ""
-#: common/models.py:2295
+#: common/models.py:2309
msgid "Secret"
msgstr ""
-#: common/models.py:2296
+#: common/models.py:2310
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2402
+#: common/models.py:2416
msgid "Message ID"
msgstr ""
-#: common/models.py:2403
+#: common/models.py:2417
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2425
msgid "Host"
msgstr ""
-#: common/models.py:2412
+#: common/models.py:2426
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2433
msgid "Header"
msgstr ""
-#: common/models.py:2420
+#: common/models.py:2434
msgid "Header of this message"
msgstr ""
-#: common/models.py:2426
+#: common/models.py:2440
msgid "Body"
msgstr ""
-#: common/models.py:2427
+#: common/models.py:2441
msgid "Body of this message"
msgstr ""
-#: common/models.py:2436
+#: common/models.py:2450
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2441
+#: common/models.py:2455
msgid "Worked on"
msgstr ""
-#: common/models.py:2442
+#: common/models.py:2456
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2596
+#: common/models.py:2610
msgid "Id"
msgstr ""
-#: common/models.py:2602 templates/js/translated/news.js:35
+#: common/models.py:2616 templates/js/translated/news.js:35
msgid "Title"
msgstr ""
-#: common/models.py:2612 templates/js/translated/news.js:51
+#: common/models.py:2626 templates/js/translated/news.js:51
msgid "Published"
msgstr ""
-#: common/models.py:2617 templates/InvenTree/settings/plugin.html:62
+#: common/models.py:2631 templates/InvenTree/settings/plugin.html:62
#: templates/InvenTree/settings/plugin_settings.html:33
#: templates/js/translated/news.js:47
msgid "Author"
msgstr ""
-#: common/models.py:2622 templates/js/translated/news.js:43
+#: common/models.py:2636 templates/js/translated/news.js:43
msgid "Summary"
msgstr ""
-#: common/models.py:2627
+#: common/models.py:2641
msgid "Read"
msgstr ""
-#: common/models.py:2628
+#: common/models.py:2642
msgid "Was this news item read?"
msgstr ""
@@ -3293,9 +3365,9 @@ msgid "Contact email address"
msgstr ""
#: company/models.py:126 company/templates/company/company_base.html:140
-#: order/models.py:231 order/templates/order/order_base.html:187
-#: order/templates/order/return_order_base.html:155
-#: order/templates/order/sales_order_base.html:186
+#: order/models.py:232 order/templates/order/order_base.html:206
+#: order/templates/order/return_order_base.html:176
+#: order/templates/order/sales_order_base.html:214
msgid "Contact"
msgstr ""
@@ -3349,7 +3421,7 @@ msgstr ""
msgid "Company"
msgstr ""
-#: company/models.py:277 company/models.py:512 stock/models.py:667
+#: company/models.py:277 company/models.py:512 stock/models.py:668
#: stock/serializers.py:143 stock/templates/stock/item_base.html:143
#: templates/js/translated/bom.js:591
msgid "Base Part"
@@ -3361,8 +3433,8 @@ msgstr ""
#: company/models.py:292 company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:152 part/serializers.py:359
-#: stock/templates/stock/item_base.html:213
+#: company/templates/company/supplier_part.html:146 part/serializers.py:359
+#: stock/templates/stock/item_base.html:208
#: templates/js/translated/company.js:484
#: templates/js/translated/company.js:809
#: templates/js/translated/company.js:939
@@ -3376,13 +3448,13 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:299 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:160 part/serializers.py:365
+#: company/templates/company/supplier_part.html:154 part/serializers.py:365
#: templates/js/translated/company.js:325
#: templates/js/translated/company.js:808
#: templates/js/translated/company.js:955
#: templates/js/translated/company.js:1225 templates/js/translated/part.js:1435
-#: templates/js/translated/purchase_order.js:1684
-#: templates/js/translated/purchase_order.js:1891
+#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1958
msgid "MPN"
msgstr ""
@@ -3401,7 +3473,7 @@ msgstr ""
#: company/models.py:357 company/models.py:381 company/models.py:535
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:223
+#: stock/templates/stock/item_base.html:218
msgid "Manufacturer Part"
msgstr ""
@@ -3411,7 +3483,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2195 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3422,7 +3494,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:401 part/admin.py:40 part/models.py:978
-#: part/models.py:3337 part/templates/part/part_base.html:287
+#: part/models.py:3337 part/templates/part/part_base.html:286
#: templates/InvenTree/settings/settings_staff_js.html:255
#: templates/js/translated/company.js:1068 templates/js/translated/part.js:1274
msgid "Units"
@@ -3437,15 +3509,15 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:522 company/templates/company/company_base.html:82
-#: company/templates/company/supplier_part.html:136 order/models.py:349
-#: order/templates/order/order_base.html:120 part/bom.py:285 part/bom.py:313
-#: part/serializers.py:348 stock/templates/stock/item_base.html:230
+#: company/templates/company/supplier_part.html:130 order/models.py:350
+#: order/templates/order/order_base.html:139 part/bom.py:285 part/bom.py:313
+#: part/serializers.py:348 stock/templates/stock/item_base.html:225
#: templates/email/overdue_purchase_order.html:16
#: templates/js/translated/company.js:324
#: templates/js/translated/company.js:488
#: templates/js/translated/company.js:1179 templates/js/translated/part.js:1403
#: templates/js/translated/pricing.js:480
-#: templates/js/translated/purchase_order.js:1535
+#: templates/js/translated/purchase_order.js:1602
#: templates/js/translated/table_filters.js:510
msgid "Supplier"
msgstr ""
@@ -3454,12 +3526,12 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:528 company/templates/company/supplier_part.html:146
+#: company/models.py:528 company/templates/company/supplier_part.html:140
#: part/bom.py:286 part/bom.py:314 part/serializers.py:354
#: templates/js/translated/company.js:323 templates/js/translated/part.js:1421
#: templates/js/translated/pricing.js:492
-#: templates/js/translated/purchase_order.js:1683
-#: templates/js/translated/purchase_order.js:1866
+#: templates/js/translated/purchase_order.js:1750
+#: templates/js/translated/purchase_order.js:1933
msgid "SKU"
msgstr ""
@@ -3479,7 +3551,7 @@ msgstr ""
msgid "Supplier part description"
msgstr ""
-#: company/models.py:553 company/templates/company/supplier_part.html:181
+#: company/models.py:553 company/templates/company/supplier_part.html:175
#: part/admin.py:279 part/models.py:3605 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
@@ -3497,9 +3569,9 @@ msgstr ""
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:559 company/templates/company/supplier_part.html:167
-#: stock/admin.py:119 stock/models.py:693
-#: stock/templates/stock/item_base.html:246
+#: company/models.py:559 company/templates/company/supplier_part.html:161
+#: stock/admin.py:119 stock/models.py:694
+#: stock/templates/stock/item_base.html:241
#: templates/js/translated/company.js:1241
#: templates/js/translated/stock.js:2130
msgid "Packaging"
@@ -3510,14 +3582,14 @@ msgid "Part packaging"
msgstr ""
#: company/models.py:562 company/serializers.py:319
-#: company/templates/company/supplier_part.html:174
+#: company/templates/company/supplier_part.html:168
#: templates/js/translated/company.js:1246 templates/js/translated/part.js:1456
#: templates/js/translated/part.js:1512
#: templates/js/translated/purchase_order.js:250
-#: templates/js/translated/purchase_order.js:775
-#: templates/js/translated/purchase_order.js:1032
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:1939
+#: templates/js/translated/purchase_order.js:778
+#: templates/js/translated/purchase_order.js:1022
+#: templates/js/translated/purchase_order.js:1989
+#: templates/js/translated/purchase_order.js:2006
msgid "Pack Quantity"
msgstr ""
@@ -3603,15 +3675,15 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:87 order/models.py:736
-#: order/models.py:1652 order/templates/order/return_order_base.html:112
-#: order/templates/order/sales_order_base.html:116 stock/models.py:712
-#: stock/models.py:713 stock/serializers.py:796
-#: stock/templates/stock/item_base.html:402
+#: company/templates/company/company_base.html:87 order/models.py:748
+#: order/models.py:1687 order/templates/order/return_order_base.html:133
+#: order/templates/order/sales_order_base.html:144 stock/models.py:713
+#: stock/models.py:714 stock/serializers.py:796
+#: stock/templates/stock/item_base.html:395
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:480
#: templates/js/translated/return_order.js:254
-#: templates/js/translated/sales_order.js:696
+#: templates/js/translated/sales_order.js:722
#: templates/js/translated/stock.js:2738
#: templates/js/translated/table_filters.js:514
msgid "Customer"
@@ -3626,7 +3698,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:206
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:529
msgid "Remove Image"
msgstr ""
@@ -3635,25 +3707,25 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:209
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:532
#: templates/InvenTree/settings/user.html:87
#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:238
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:561
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:253
-#: part/templates/part/part_base.html:623
+#: part/templates/part/part_base.html:616
msgid "Download Image"
msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:120 templates/js/translated/search.js:175
+#: templates/InvenTree/search.html:120 templates/js/translated/search.js:177
msgid "Supplier Parts"
msgstr ""
@@ -3684,7 +3756,7 @@ msgid "Delete Parts"
msgstr ""
#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105
-#: templates/js/translated/search.js:179
+#: templates/js/translated/search.js:181
msgid "Manufacturer Parts"
msgstr ""
@@ -3709,7 +3781,7 @@ msgstr ""
#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:200
#: templates/InvenTree/settings/sidebar.html:51
-#: templates/js/translated/search.js:233 templates/navbar.html:50
+#: templates/js/translated/search.js:235 templates/navbar.html:50
#: users/models.py:43
msgid "Purchase Orders"
msgstr ""
@@ -3732,7 +3804,7 @@ msgstr ""
#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:220
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/search.js:247 templates/navbar.html:62
+#: templates/js/translated/search.js:249 templates/navbar.html:62
#: users/models.py:44
msgid "Sales Orders"
msgstr ""
@@ -3758,7 +3830,7 @@ msgstr ""
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:260 templates/navbar.html:65
+#: templates/js/translated/search.js:262 templates/navbar.html:65
#: users/models.py:45
msgid "Return Orders"
msgstr ""
@@ -3792,7 +3864,7 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:221
+#: company/templates/company/supplier_part.html:215
#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85
msgid "Order part"
msgstr ""
@@ -3832,8 +3904,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -3881,50 +3953,21 @@ msgid "Contacts"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:676
-#: stock/templates/stock/item_base.html:239
+#: company/templates/company/supplier_part.html:24 stock/models.py:677
+#: stock/templates/stock/item_base.html:234
#: templates/js/translated/company.js:1195
-#: templates/js/translated/purchase_order.js:695
+#: templates/js/translated/purchase_order.js:698
#: templates/js/translated/stock.js:1990
msgid "Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:36
-#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:41
-#: stock/templates/stock/location.html:54
-msgid "Barcode actions"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:40
-#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:45
-#: stock/templates/stock/location.html:56 templates/qr_button.html:1
-msgid "Show QR Code"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:42
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:58
-#: templates/js/translated/barcode.js:453
-#: templates/js/translated/barcode.js:458
-msgid "Unlink Barcode"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:44
-#: part/templates/part/part_base.html:51
-#: stock/templates/stock/item_base.html:50
-#: stock/templates/stock/location.html:60
-msgid "Link Barcode"
-msgstr ""
-
#: company/templates/company/supplier_part.html:51
msgid "Supplier part actions"
msgstr ""
#: company/templates/company/supplier_part.html:56
#: company/templates/company/supplier_part.html:57
-#: company/templates/company/supplier_part.html:222
+#: company/templates/company/supplier_part.html:216
#: part/templates/part/detail.html:112
msgid "Order Part"
msgstr ""
@@ -3954,67 +3997,60 @@ msgstr ""
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:122
-#: part/templates/part/part_base.html:308
-#: stock/templates/stock/item_base.html:161
-#: stock/templates/stock/location.html:156
-msgid "Barcode Identifier"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:140
+#: company/templates/company/supplier_part.html:134
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:200
+#: company/templates/company/supplier_part.html:194
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:203
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:203
+#: company/templates/company/supplier_part.html:197
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:204
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:198
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198
#: templates/js/translated/stock.js:471
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:217
+#: company/templates/company/supplier_part.html:211
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:242
+#: company/templates/company/supplier_part.html:236
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:247
+#: company/templates/company/supplier_part.html:241
#: templates/js/translated/company.js:373
#: templates/js/translated/pricing.js:666
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:274
+#: company/templates/company/supplier_part.html:268
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:285
+#: company/templates/company/supplier_part.html:279
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:360
+#: company/templates/company/supplier_part.html:354
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:288
#: part/templates/part/category.html:199
#: part/templates/part/category_sidebar.html:17 stock/admin.py:47
-#: stock/templates/stock/location.html:174
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:182
+#: stock/templates/stock/location.html:194
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:977
-#: templates/js/translated/search.js:200 templates/js/translated/stock.js:2569
+#: templates/js/translated/search.js:202 templates/js/translated/stock.js:2569
#: users/models.py:41
msgid "Stock Items"
msgstr ""
@@ -4040,7 +4076,7 @@ msgstr ""
msgid "New Customer"
msgstr ""
-#: company/views.py:52 templates/js/translated/search.js:220
+#: company/views.py:52 templates/js/translated/search.js:222
msgid "Companies"
msgstr ""
@@ -4114,365 +4150,365 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/api.py:229
+#: order/api.py:225
msgid "No matching purchase order found"
msgstr ""
-#: order/api.py:1514 order/models.py:1106 order/models.py:1190
+#: order/api.py:1420 order/models.py:1141 order/models.py:1225
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report_base.html:14
-#: stock/templates/stock/item_base.html:182
+#: stock/templates/stock/item_base.html:177
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1380 templates/js/translated/pricing.js:772
#: templates/js/translated/purchase_order.js:108
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1519
+#: templates/js/translated/purchase_order.js:699
+#: templates/js/translated/purchase_order.js:1586
#: templates/js/translated/stock.js:1970 templates/js/translated/stock.js:2685
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1518
+#: order/api.py:1424
msgid "Unknown"
msgstr ""
-#: order/models.py:66 report/templates/report/inventree_po_report_base.html:31
+#: order/models.py:67 report/templates/report/inventree_po_report_base.html:31
#: report/templates/report/inventree_so_report_base.html:31
-#: templates/js/translated/order.js:299
-#: templates/js/translated/purchase_order.js:1963
-#: templates/js/translated/sales_order.js:1711
+#: templates/js/translated/order.js:302
+#: templates/js/translated/purchase_order.js:2030
+#: templates/js/translated/sales_order.js:1739
msgid "Total Price"
msgstr ""
-#: order/models.py:67
+#: order/models.py:68
msgid "Total price for this order"
msgstr ""
-#: order/models.py:177
+#: order/models.py:178
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:199
-msgid "Order description"
+#: order/models.py:200
+msgid "Order description (optional)"
msgstr ""
-#: order/models.py:201 order/models.py:1378 order/models.py:1856
+#: order/models.py:202 order/models.py:1063 order/models.py:1413
msgid "Link to external page"
msgstr ""
-#: order/models.py:206
+#: order/models.py:207
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:215
+#: order/models.py:216
msgid "Created By"
msgstr ""
-#: order/models.py:222
+#: order/models.py:223
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:232
+#: order/models.py:233
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:236
+#: order/models.py:237
msgid "Order notes"
msgstr ""
-#: order/models.py:327 order/models.py:723
+#: order/models.py:328 order/models.py:735
msgid "Order reference"
msgstr ""
-#: order/models.py:335 order/models.py:748
+#: order/models.py:336 order/models.py:760
msgid "Purchase order status"
msgstr ""
-#: order/models.py:350
+#: order/models.py:351
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:358 order/templates/order/order_base.html:132
-#: templates/js/translated/purchase_order.js:1544
+#: order/models.py:359 order/templates/order/order_base.html:151
+#: templates/js/translated/purchase_order.js:1611
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:358
+#: order/models.py:359
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:365
+#: order/models.py:366
msgid "received by"
msgstr ""
-#: order/models.py:370 order/models.py:1675
+#: order/models.py:371 order/models.py:1710
msgid "Issue Date"
msgstr ""
-#: order/models.py:371 order/models.py:1676
+#: order/models.py:372 order/models.py:1711
msgid "Date order was issued"
msgstr ""
-#: order/models.py:377 order/models.py:1682
+#: order/models.py:378 order/models.py:1717
msgid "Date order was completed"
msgstr ""
-#: order/models.py:412
+#: order/models.py:413
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:560
+#: order/models.py:566
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:737
+#: order/models.py:749
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:756 order/models.py:1669
+#: order/models.py:768 order/models.py:1704
msgid "Customer Reference "
msgstr ""
-#: order/models.py:756 order/models.py:1670
+#: order/models.py:768 order/models.py:1705
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:758 order/models.py:1336
-#: templates/js/translated/sales_order.js:743
-#: templates/js/translated/sales_order.js:906
+#: order/models.py:770 order/models.py:1371
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:932
msgid "Shipment Date"
msgstr ""
-#: order/models.py:765
+#: order/models.py:777
msgid "shipped by"
msgstr ""
-#: order/models.py:809
+#: order/models.py:826
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:813
-msgid "Only a pending order can be marked as complete"
+#: order/models.py:830
+msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:816 templates/js/translated/sales_order.js:437
+#: order/models.py:833 templates/js/translated/sales_order.js:441
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:819
+#: order/models.py:836
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1014
+#: order/models.py:1043
msgid "Item quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1056
msgid "Line item reference"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1058
msgid "Line item notes"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1069
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1051
+#: order/models.py:1086
msgid "Context"
msgstr ""
-#: order/models.py:1052
+#: order/models.py:1087
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1061
+#: order/models.py:1096
msgid "Unit price"
msgstr ""
-#: order/models.py:1091
+#: order/models.py:1126
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1099
+#: order/models.py:1134
msgid "deleted"
msgstr ""
-#: order/models.py:1105 order/models.py:1190 order/models.py:1231
-#: order/models.py:1330 order/models.py:1465 order/models.py:1821
-#: order/models.py:1870 templates/js/translated/sales_order.js:1357
+#: order/models.py:1140 order/models.py:1225 order/models.py:1266
+#: order/models.py:1365 order/models.py:1500 order/models.py:1857
+#: order/models.py:1904 templates/js/translated/sales_order.js:1383
msgid "Order"
msgstr ""
-#: order/models.py:1124
+#: order/models.py:1159
msgid "Supplier part"
msgstr ""
-#: order/models.py:1131 order/templates/order/order_base.html:180
+#: order/models.py:1166 order/templates/order/order_base.html:199
#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1536
-#: templates/js/translated/purchase_order.js:1198
-#: templates/js/translated/purchase_order.js:2007
-#: templates/js/translated/return_order.js:703
+#: templates/js/translated/purchase_order.js:1225
+#: templates/js/translated/purchase_order.js:2074
+#: templates/js/translated/return_order.js:706
#: templates/js/translated/table_filters.js:48
#: templates/js/translated/table_filters.js:421
msgid "Received"
msgstr ""
-#: order/models.py:1132
+#: order/models.py:1167
msgid "Number of items received"
msgstr ""
-#: order/models.py:1139 stock/models.py:809 stock/serializers.py:229
-#: stock/templates/stock/item_base.html:189
+#: order/models.py:1174 stock/models.py:810 stock/serializers.py:229
+#: stock/templates/stock/item_base.html:184
#: templates/js/translated/stock.js:2021
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1140
+#: order/models.py:1175
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1188
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1219
+#: order/models.py:1254
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1224
+#: order/models.py:1259
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1250 part/templates/part/part_pricing.html:107
+#: order/models.py:1285 part/templates/part/part_pricing.html:107
#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:922
msgid "Sale Price"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1286
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1261
+#: order/models.py:1296
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1337
+#: order/models.py:1372
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1344
+#: order/models.py:1379
msgid "Checked By"
msgstr ""
-#: order/models.py:1345
+#: order/models.py:1380
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1352 order/models.py:1541 order/serializers.py:1202
-#: order/serializers.py:1330 templates/js/translated/model_renderers.js:403
+#: order/models.py:1387 order/models.py:1576 order/serializers.py:1224
+#: order/serializers.py:1352 templates/js/translated/model_renderers.js:409
msgid "Shipment"
msgstr ""
-#: order/models.py:1353
+#: order/models.py:1388
msgid "Shipment number"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1392
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1363
+#: order/models.py:1398
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1364
+#: order/models.py:1399
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1371
+#: order/models.py:1406
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1372
+#: order/models.py:1407
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1390
+#: order/models.py:1425
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1428
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1500 order/models.py:1502
+#: order/models.py:1535 order/models.py:1537
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1506
+#: order/models.py:1541
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1508
+#: order/models.py:1543
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1511
+#: order/models.py:1546
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1521 order/serializers.py:1064
+#: order/models.py:1556 order/serializers.py:1086
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1524
+#: order/models.py:1559
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1525
+#: order/models.py:1560
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1533
+#: order/models.py:1568
msgid "Line"
msgstr ""
-#: order/models.py:1542
+#: order/models.py:1577
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1555 order/models.py:1829
-#: templates/js/translated/return_order.js:661
+#: order/models.py:1590 order/models.py:1865
+#: templates/js/translated/return_order.js:664
msgid "Item"
msgstr ""
-#: order/models.py:1556
+#: order/models.py:1591
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1559
+#: order/models.py:1594
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:1639
+#: order/models.py:1674
msgid "Return Order reference"
msgstr ""
-#: order/models.py:1653
+#: order/models.py:1688
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:1664
+#: order/models.py:1699
msgid "Return order status"
msgstr ""
-#: order/models.py:1814
+#: order/models.py:1850
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:1822 order/models.py:1870
+#: order/models.py:1858 order/models.py:1904
#: order/templates/order/return_order_base.html:9
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
@@ -4481,164 +4517,168 @@ msgstr ""
msgid "Return Order"
msgstr ""
-#: order/models.py:1830
+#: order/models.py:1866
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:1835
+#: order/models.py:1871
msgid "Received Date"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1872
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:1847 templates/js/translated/return_order.js:672
+#: order/models.py:1883 templates/js/translated/return_order.js:675
#: templates/js/translated/table_filters.js:51
msgid "Outcome"
msgstr ""
-#: order/models.py:1847
+#: order/models.py:1883
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:1853
+#: order/models.py:1889
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/serializers.py:223
+#: order/serializers.py:228
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:238 order/serializers.py:1082
+#: order/serializers.py:243 order/serializers.py:1104
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:249 order/serializers.py:1093
+#: order/serializers.py:254 order/serializers.py:1115
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:361
+#: order/serializers.py:367
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:379
+#: order/serializers.py:385
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:397
+#: order/serializers.py:403
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:402
+#: order/serializers.py:408
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:408
+#: order/serializers.py:414
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:409
+#: order/serializers.py:415
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:447 order/serializers.py:1170
+#: order/serializers.py:453 order/serializers.py:1192
msgid "Line Item"
msgstr ""
-#: order/serializers.py:453
+#: order/serializers.py:459
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:463 order/serializers.py:582 order/serializers.py:1541
+#: order/serializers.py:469 order/serializers.py:590 order/serializers.py:1563
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:482 templates/js/translated/purchase_order.js:1059
+#: order/serializers.py:488 templates/js/translated/purchase_order.js:1049
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:490 templates/js/translated/purchase_order.js:1070
+#: order/serializers.py:496 templates/js/translated/purchase_order.js:1073
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:504
-msgid "Unique identifier field"
+#: order/serializers.py:509 templates/js/translated/barcode.js:41
+msgid "Barcode"
msgstr ""
-#: order/serializers.py:518
+#: order/serializers.py:510
+msgid "Scanned barcode"
+msgstr ""
+
+#: order/serializers.py:526
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:544
+#: order/serializers.py:552
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:598 order/serializers.py:1556
+#: order/serializers.py:606 order/serializers.py:1578
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:615
+#: order/serializers.py:623
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:626
+#: order/serializers.py:634
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:907
+#: order/serializers.py:929
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:962
+#: order/serializers.py:984
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1025 order/serializers.py:1179
+#: order/serializers.py:1047 order/serializers.py:1201
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1047
+#: order/serializers.py:1069
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1192
+#: order/serializers.py:1214
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1214 order/serializers.py:1338
+#: order/serializers.py:1236 order/serializers.py:1360
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1217 order/serializers.py:1341
+#: order/serializers.py:1239 order/serializers.py:1363
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1271
+#: order/serializers.py:1293
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1281
+#: order/serializers.py:1303
msgid "The following serial numbers are already allocated"
msgstr ""
-#: order/serializers.py:1507
+#: order/serializers.py:1529
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1514
+#: order/serializers.py:1536
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1517
+#: order/serializers.py:1539
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1549
+#: order/serializers.py:1571
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1629
+#: order/serializers.py:1652
msgid "Line price currency"
msgstr ""
@@ -4660,113 +4700,123 @@ msgstr ""
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:33
+#: order/templates/order/order_base.html:51
msgid "Print purchase order report"
msgstr ""
-#: order/templates/order/order_base.html:35
-#: order/templates/order/return_order_base.html:45
-#: order/templates/order/sales_order_base.html:45
+#: order/templates/order/order_base.html:53
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
msgid "Export order to file"
msgstr ""
-#: order/templates/order/order_base.html:41
-#: order/templates/order/return_order_base.html:55
-#: order/templates/order/sales_order_base.html:54
+#: order/templates/order/order_base.html:59
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
msgid "Order actions"
msgstr ""
-#: order/templates/order/order_base.html:46
-#: order/templates/order/return_order_base.html:59
-#: order/templates/order/sales_order_base.html:58
+#: order/templates/order/order_base.html:64
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:50
-#: order/templates/order/return_order_base.html:61
-#: order/templates/order/sales_order_base.html:61
+#: order/templates/order/order_base.html:68
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:55
+#: order/templates/order/order_base.html:73
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:61
-#: order/templates/order/order_base.html:62
-#: order/templates/order/return_order_base.html:65
-#: order/templates/order/return_order_base.html:66
-msgid "Submit Order"
+#: order/templates/order/order_base.html:79
+#: order/templates/order/order_base.html:80
+#: order/templates/order/return_order_base.html:83
+#: order/templates/order/return_order_base.html:84
+#: order/templates/order/sales_order_base.html:84
+#: order/templates/order/sales_order_base.html:85
+msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:65
+#: order/templates/order/order_base.html:83
msgid "Receive items"
msgstr ""
-#: order/templates/order/order_base.html:67
+#: order/templates/order/order_base.html:85
msgid "Receive Items"
msgstr ""
-#: order/templates/order/order_base.html:69
-#: order/templates/order/return_order_base.html:69
+#: order/templates/order/order_base.html:87
+#: order/templates/order/return_order_base.html:87
msgid "Mark order as complete"
msgstr ""
-#: order/templates/order/order_base.html:70
-#: order/templates/order/return_order_base.html:70
-#: order/templates/order/sales_order_base.html:68
+#: order/templates/order/order_base.html:88
+#: order/templates/order/return_order_base.html:88
+#: order/templates/order/sales_order_base.html:94
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:92
-#: order/templates/order/return_order_base.html:84
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:110
+#: order/templates/order/return_order_base.html:102
+#: order/templates/order/sales_order_base.html:107
msgid "Order Reference"
msgstr ""
-#: order/templates/order/order_base.html:97
-#: order/templates/order/return_order_base.html:89
-#: order/templates/order/sales_order_base.html:85
+#: order/templates/order/order_base.html:115
+#: order/templates/order/return_order_base.html:107
+#: order/templates/order/sales_order_base.html:112
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:102
-#: order/templates/order/return_order_base.html:94
-#: order/templates/order/sales_order_base.html:90
+#: order/templates/order/order_base.html:121
+#: order/templates/order/return_order_base.html:115
+#: order/templates/order/sales_order_base.html:118
msgid "Order Status"
msgstr ""
-#: order/templates/order/order_base.html:125
+#: order/templates/order/order_base.html:144
msgid "No suppplier information available"
msgstr ""
-#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:129
+#: order/templates/order/order_base.html:157
+#: order/templates/order/sales_order_base.html:157
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:144
-#: order/templates/order/sales_order_base.html:135
-#: order/templates/order/sales_order_base.html:145
+#: order/templates/order/order_base.html:163
+#: order/templates/order/sales_order_base.html:163
+#: order/templates/order/sales_order_base.html:173
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:163
-#: order/templates/order/return_order_base.html:138
+#: order/templates/order/order_base.html:182
+#: order/templates/order/return_order_base.html:159
#: report/templates/report/inventree_build_order_base.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:201
+#: order/templates/order/order_base.html:220
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:205
-#: order/templates/order/return_order_base.html:173
-#: order/templates/order/sales_order_base.html:204
+#: order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:194
+#: order/templates/order/sales_order_base.html:232
msgid "Total cost could not be calculated"
msgstr ""
+#: order/templates/order/order_base.html:330
+msgid "Purchase Order QR Code"
+msgstr ""
+
+#: order/templates/order/order_base.html:342
+msgid "Link Barcode to Purchase Order"
+msgstr ""
+
#: order/templates/order/order_wizard/match_fields.html:9
#: part/templates/part/import_wizard/ajax_match_fields.html:9
#: part/templates/part/import_wizard/match_fields.html:9
@@ -4818,10 +4868,10 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/bom.js:102 templates/js/translated/build.js:485
#: templates/js/translated/build.js:646 templates/js/translated/build.js:2097
-#: templates/js/translated/purchase_order.js:640
-#: templates/js/translated/purchase_order.js:1144
-#: templates/js/translated/return_order.js:449
-#: templates/js/translated/sales_order.js:979
+#: templates/js/translated/purchase_order.js:643
+#: templates/js/translated/purchase_order.js:1155
+#: templates/js/translated/return_order.js:452
+#: templates/js/translated/sales_order.js:1005
#: templates/js/translated/stock.js:660 templates/js/translated/stock.js:829
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -4883,9 +4933,9 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:28
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:367
-#: templates/js/translated/return_order.js:402
-#: templates/js/translated/sales_order.js:175
+#: templates/js/translated/purchase_order.js:370
+#: templates/js/translated/return_order.js:405
+#: templates/js/translated/sales_order.js:179
msgid "Add Line Item"
msgstr ""
@@ -4923,63 +4973,79 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:43
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:47
-#: order/templates/order/sales_order_base.html:47
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:119
-#: order/templates/order/sales_order_base.html:123
+#: order/templates/order/return_order_base.html:140
+#: order/templates/order/sales_order_base.html:151
#: templates/js/translated/return_order.js:267
-#: templates/js/translated/sales_order.js:709
+#: templates/js/translated/sales_order.js:735
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:169
-#: order/templates/order/sales_order_base.html:200
+#: order/templates/order/return_order_base.html:190
+#: order/templates/order/sales_order_base.html:228
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
#: part/templates/part/part_pricing.html:99
#: part/templates/part/part_pricing.html:114
#: templates/js/translated/part.js:989
-#: templates/js/translated/purchase_order.js:1582
+#: templates/js/translated/purchase_order.js:1649
#: templates/js/translated/return_order.js:327
-#: templates/js/translated/sales_order.js:755
+#: templates/js/translated/sales_order.js:781
msgid "Total Cost"
msgstr ""
+#: order/templates/order/return_order_base.html:258
+msgid "Return Order QR Code"
+msgstr ""
+
+#: order/templates/order/return_order_base.html:270
+msgid "Link Barcode to Return Order"
+msgstr ""
+
#: order/templates/order/return_order_sidebar.html:5
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:43
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/sales_order.js:361
-msgid "Complete Shipments"
+#: order/templates/order/sales_order_base.html:89
+#: order/templates/order/sales_order_base.html:90
+msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:67
-#: templates/js/translated/sales_order.js:415
+#: order/templates/order/sales_order_base.html:93
+#: templates/js/translated/sales_order.js:419
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:103
+#: order/templates/order/sales_order_base.html:131
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:141
+#: order/templates/order/sales_order_base.html:169
#: order/templates/order/sales_order_detail.html:105
#: order/templates/order/so_sidebar.html:11
msgid "Completed Shipments"
msgstr ""
+#: order/templates/order/sales_order_base.html:305
+msgid "Sales Order QR Code"
+msgstr ""
+
+#: order/templates/order/sales_order_base.html:317
+msgid "Link Barcode to Sales Order"
+msgstr ""
+
#: order/templates/order/sales_order_detail.html:18
msgid "Sales Order Items"
msgstr ""
@@ -5035,20 +5101,20 @@ msgstr ""
msgid "Part Description"
msgstr ""
-#: part/admin.py:36 part/models.py:880 part/templates/part/part_base.html:272
+#: part/admin.py:36 part/models.py:880 part/templates/part/part_base.html:271
#: templates/js/translated/part.js:1143 templates/js/translated/part.js:1855
#: templates/js/translated/stock.js:1769
msgid "IPN"
msgstr ""
-#: part/admin.py:37 part/models.py:887 part/templates/part/part_base.html:280
+#: part/admin.py:37 part/models.py:887 part/templates/part/part_base.html:279
#: report/models.py:177 templates/js/translated/part.js:1148
#: templates/js/translated/part.js:1861
msgid "Revision"
msgstr ""
#: part/admin.py:38 part/admin.py:198 part/models.py:866
-#: part/templates/part/category.html:93 part/templates/part/part_base.html:301
+#: part/templates/part/category.html:93 part/templates/part/part_base.html:300
msgid "Keywords"
msgstr ""
@@ -5068,17 +5134,17 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:47 part/models.py:971 part/templates/part/part_base.html:206
+#: part/admin.py:47 part/models.py:971 part/templates/part/part_base.html:205
msgid "Minimum Stock"
msgstr ""
-#: part/admin.py:61 part/templates/part/part_base.html:200
+#: part/admin.py:61 part/templates/part/part_base.html:199
#: templates/js/translated/company.js:1277
#: templates/js/translated/table_filters.js:253
msgid "In Stock"
msgstr ""
-#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:213
+#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212
#: templates/js/translated/bom.js:1163 templates/js/translated/build.js:1940
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1749
#: templates/js/translated/table_filters.js:96
@@ -5091,11 +5157,11 @@ msgstr ""
#: part/admin.py:64 templates/js/translated/build.js:1954
#: templates/js/translated/build.js:2214 templates/js/translated/build.js:2799
-#: templates/js/translated/sales_order.js:1790
+#: templates/js/translated/sales_order.js:1818
msgid "Allocated"
msgstr ""
-#: part/admin.py:65 part/templates/part/part_base.html:244 stock/admin.py:124
+#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124
#: templates/js/translated/part.js:635 templates/js/translated/part.js:1753
msgid "Building"
msgstr ""
@@ -5127,7 +5193,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:84
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/part.js:2367 templates/js/translated/search.js:158
+#: templates/js/translated/part.js:2367 templates/js/translated/search.js:160
#: templates/navbar.html:24 users/models.py:38
msgid "Parts"
msgstr ""
@@ -5158,36 +5224,36 @@ msgstr ""
msgid "Maximum Price"
msgstr ""
-#: part/api.py:515
+#: part/api.py:495
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:535
+#: part/api.py:515
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:553
+#: part/api.py:533
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:639
+#: part/api.py:619
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:797
+#: part/api.py:767
msgid "Valid"
msgstr ""
-#: part/api.py:798
+#: part/api.py:768
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:804
+#: part/api.py:774
msgid "This option must be selected"
msgstr ""
#: part/bom.py:175 part/models.py:121 part/models.py:914
-#: part/templates/part/category.html:115 part/templates/part/part_base.html:376
+#: part/templates/part/category.html:115 part/templates/part/part_base.html:369
msgid "Default Location"
msgstr ""
@@ -5195,8 +5261,8 @@ msgstr ""
msgid "Total Stock"
msgstr ""
-#: part/bom.py:177 part/templates/part/part_base.html:195
-#: templates/js/translated/sales_order.js:1757
+#: part/bom.py:177 part/templates/part/part_base.html:194
+#: templates/js/translated/sales_order.js:1785
msgid "Available Stock"
msgstr ""
@@ -5210,7 +5276,7 @@ msgid "Part Category"
msgstr ""
#: part/models.py:72 part/templates/part/category.html:135
-#: templates/InvenTree/search.html:97 templates/js/translated/search.js:186
+#: templates/InvenTree/search.html:97 templates/js/translated/search.js:188
#: users/models.py:37
msgid "Part Categories"
msgstr ""
@@ -5219,7 +5285,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:127 stock/models.py:119 templates/js/translated/stock.js:2575
+#: part/models.py:127 stock/models.py:120 templates/js/translated/stock.js:2575
#: templates/js/translated/table_filters.js:163
#: templates/js/translated/table_filters.js:182
msgid "Structural"
@@ -5237,11 +5303,11 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:138 stock/models.py:108
+#: part/models.py:138 stock/models.py:109
msgid "Icon"
msgstr ""
-#: part/models.py:139 stock/models.py:109
+#: part/models.py:139 stock/models.py:110
msgid "Icon (optional)"
msgstr ""
@@ -5295,12 +5361,12 @@ msgstr ""
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:855
+#: part/models.py:855 part/templates/part/part_base.html:179
msgid "Variant Of"
msgstr ""
#: part/models.py:861
-msgid "Part description"
+msgid "Part description (optional)"
msgstr ""
#: part/models.py:867
@@ -5308,7 +5374,7 @@ msgid "Part keywords to improve visibility in search results"
msgstr ""
#: part/models.py:874 part/models.py:3182 part/models.py:3419
-#: part/serializers.py:849 part/templates/part/part_base.html:263
+#: part/serializers.py:849 part/templates/part/part_base.html:262
#: templates/InvenTree/settings/settings_staff_js.html:132
#: templates/js/translated/notification.js:50
#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2097
@@ -5331,7 +5397,7 @@ msgstr ""
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:957 part/templates/part/part_base.html:385
+#: part/models.py:957 part/templates/part/part_base.html:378
msgid "Default Supplier"
msgstr ""
@@ -5411,8 +5477,8 @@ msgstr ""
msgid "User responsible for this part"
msgstr ""
-#: part/models.py:1036 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:448
+#: part/models.py:1036 part/templates/part/part_base.html:341
+#: stock/templates/stock/item_base.html:441
#: templates/js/translated/part.js:1947
msgid "Last Stocktake"
msgstr ""
@@ -5569,7 +5635,7 @@ msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:368
#: templates/js/translated/part.js:1002 templates/js/translated/pricing.js:794
#: templates/js/translated/pricing.js:915
-#: templates/js/translated/purchase_order.js:1561
+#: templates/js/translated/purchase_order.js:1628
#: templates/js/translated/stock.js:2613
msgid "Date"
msgstr ""
@@ -5822,7 +5888,7 @@ msgstr ""
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:3713 stock/models.py:569
+#: part/models.py:3713 stock/models.py:570
msgid "Quantity must be integer value for trackable parts"
msgstr ""
@@ -6102,7 +6168,7 @@ msgstr ""
#: part/tasks.py:289 templates/js/translated/part.js:983
#: templates/js/translated/part.js:1456 templates/js/translated/part.js:1512
-#: templates/js/translated/purchase_order.js:1922
+#: templates/js/translated/purchase_order.js:1989
msgid "Total Quantity"
msgstr ""
@@ -6127,8 +6193,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6264,7 +6329,7 @@ msgid "Refresh scheduling data"
msgstr ""
#: part/templates/part/detail.html:45 part/templates/part/prices.html:15
-#: templates/js/translated/tables.js:562
+#: templates/js/translated/tables.js:572
msgid "Refresh"
msgstr ""
@@ -6416,13 +6481,13 @@ msgstr ""
#: part/templates/part/import_wizard/part_upload.html:92
#: templates/js/translated/bom.js:278 templates/js/translated/bom.js:312
-#: templates/js/translated/order.js:109 templates/js/translated/tables.js:183
+#: templates/js/translated/order.js:112 templates/js/translated/tables.js:183
msgid "Format"
msgstr ""
#: part/templates/part/import_wizard/part_upload.html:93
#: templates/js/translated/bom.js:279 templates/js/translated/bom.js:313
-#: templates/js/translated/order.js:110
+#: templates/js/translated/order.js:113
msgid "Select file format"
msgstr ""
@@ -6507,8 +6572,7 @@ msgid "Part can be sold to customers"
msgstr ""
#: part/templates/part/part_base.html:147
-#: part/templates/part/part_base.html:155
-msgid "Part is virtual (not a physical part)"
+msgid "Part is not active"
msgstr ""
#: part/templates/part/part_base.html:148
@@ -6519,71 +6583,70 @@ msgstr ""
msgid "Inactive"
msgstr ""
+#: part/templates/part/part_base.html:155
+msgid "Part is virtual (not a physical part)"
+msgstr ""
+
#: part/templates/part/part_base.html:165
-#: part/templates/part/part_base.html:691
+#: part/templates/part/part_base.html:684
msgid "Show Part Details"
msgstr ""
-#: part/templates/part/part_base.html:183
-#, python-format
-msgid "This part is a variant of %(link)s"
-msgstr ""
-
-#: part/templates/part/part_base.html:221
-#: stock/templates/stock/item_base.html:385
+#: part/templates/part/part_base.html:220
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:230
-#: stock/templates/stock/item_base.html:378
+#: part/templates/part/part_base.html:229
+#: stock/templates/stock/item_base.html:371
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/bom.js:1174
+#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1174
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:294
+#: part/templates/part/part_base.html:293
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1037
+#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1037
#: templates/js/translated/part.js:1181 templates/js/translated/part.js:1920
#: templates/js/translated/pricing.js:373
#: templates/js/translated/pricing.js:1019
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:354
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:334
+#: part/templates/part/part_base.html:358
+#: stock/templates/stock/item_base.html:323
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:446
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:463
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:513
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:530
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:589
+#: part/templates/part/part_base.html:582
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:685
+#: part/templates/part/part_base.html:678
msgid "Hide Part Details"
msgstr ""
@@ -6673,7 +6736,7 @@ msgid "Refresh Part Pricing"
msgstr ""
#: part/templates/part/prices.html:25 stock/admin.py:129
-#: stock/templates/stock/item_base.html:443
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/company.js:1291
#: templates/js/translated/company.js:1301
#: templates/js/translated/stock.js:1956
@@ -6790,8 +6853,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -6853,6 +6915,7 @@ msgid "Match found for barcode data"
msgstr ""
#: plugin/base/barcodes/api.py:120
+#: templates/js/translated/purchase_order.js:1321
msgid "Barcode matches existing item"
msgstr ""
@@ -6864,15 +6927,15 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:26
+#: plugin/builtin/barcodes/inventree_barcode.py:28
msgid "InvenTree Barcodes"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:27
+#: plugin/builtin/barcodes/inventree_barcode.py:29
msgid "Provides native support for barcodes"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:29
+#: plugin/builtin/barcodes/inventree_barcode.py:31
#: plugin/builtin/integration/core_notifications.py:33
msgid "InvenTree contributors"
msgstr ""
@@ -6975,18 +7038,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7053,16 +7117,16 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:172
+#: report/api.py:171
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:208 report/api.py:244
+#: report/api.py:207 report/api.py:243
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
-#: report/api.py:311
+#: report/api.py:310
msgid "Test report"
msgstr ""
@@ -7168,11 +7232,11 @@ msgstr ""
#: report/templates/report/inventree_po_report_base.html:30
#: report/templates/report/inventree_so_report_base.html:30
-#: templates/js/translated/order.js:288 templates/js/translated/pricing.js:509
+#: templates/js/translated/order.js:291 templates/js/translated/pricing.js:509
#: templates/js/translated/pricing.js:578
#: templates/js/translated/pricing.js:802
-#: templates/js/translated/purchase_order.js:1953
-#: templates/js/translated/sales_order.js:1701
+#: templates/js/translated/purchase_order.js:2020
+#: templates/js/translated/sales_order.js:1729
msgid "Unit Price"
msgstr ""
@@ -7184,22 +7248,22 @@ msgstr ""
#: report/templates/report/inventree_po_report_base.html:72
#: report/templates/report/inventree_so_report_base.html:72
-#: templates/js/translated/purchase_order.js:1855
-#: templates/js/translated/sales_order.js:1676
+#: templates/js/translated/purchase_order.js:1922
+#: templates/js/translated/sales_order.js:1704
msgid "Total"
msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:25
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:717 stock/templates/stock/item_base.html:323
+#: stock/models.py:718 stock/templates/stock/item_base.html:312
#: templates/js/translated/build.js:475 templates/js/translated/build.js:636
#: templates/js/translated/build.js:1250 templates/js/translated/build.js:1738
#: templates/js/translated/model_renderers.js:195
-#: templates/js/translated/return_order.js:483
-#: templates/js/translated/return_order.js:663
-#: templates/js/translated/sales_order.js:250
-#: templates/js/translated/sales_order.js:1470
-#: templates/js/translated/sales_order.js:1555
+#: templates/js/translated/return_order.js:486
+#: templates/js/translated/return_order.js:666
+#: templates/js/translated/sales_order.js:254
+#: templates/js/translated/sales_order.js:1509
+#: templates/js/translated/sales_order.js:1594
#: templates/js/translated/stock.js:526
msgid "Serial Number"
msgstr ""
@@ -7213,12 +7277,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2183 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2189
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7286,8 +7350,8 @@ msgstr ""
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:114 stock/models.py:700
-#: stock/templates/stock/item_base.html:362
+#: stock/admin.py:114 stock/models.py:701
+#: stock/templates/stock/item_base.html:355
msgid "Installed In"
msgstr ""
@@ -7311,278 +7375,277 @@ msgstr ""
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:131 stock/models.py:773
-#: stock/templates/stock/item_base.html:430
+#: stock/admin.py:131 stock/models.py:774
+#: stock/templates/stock/item_base.html:423
#: templates/js/translated/stock.js:1940
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:426 templates/js/translated/table_filters.js:325
+#: stock/api.py:409 templates/js/translated/table_filters.js:325
msgid "External Location"
msgstr ""
-#: stock/api.py:587
+#: stock/api.py:570
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:594
+#: stock/api.py:577
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:619
+#: stock/api.py:602
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:53 stock/models.py:684
+#: stock/models.py:54 stock/models.py:685
#: stock/templates/stock/location.html:17
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:54 stock/templates/stock/location.html:183
-#: templates/InvenTree/search.html:167 templates/js/translated/search.js:206
+#: stock/models.py:55 stock/templates/stock/location.html:177
+#: templates/InvenTree/search.html:167 templates/js/translated/search.js:208
#: users/models.py:40
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:113 stock/models.py:814
-#: stock/templates/stock/item_base.html:253
+#: stock/models.py:114 stock/models.py:815
+#: stock/templates/stock/item_base.html:248
msgid "Owner"
msgstr ""
-#: stock/models.py:114 stock/models.py:815
+#: stock/models.py:115 stock/models.py:816
msgid "Select Owner"
msgstr ""
-#: stock/models.py:121
+#: stock/models.py:122
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:127 templates/js/translated/stock.js:2584
+#: stock/models.py:128 templates/js/translated/stock.js:2584
#: templates/js/translated/table_filters.js:167
msgid "External"
msgstr ""
-#: stock/models.py:128
+#: stock/models.py:129
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:170
+#: stock/models.py:171
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:549
+#: stock/models.py:550
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:575 stock/serializers.py:151
+#: stock/models.py:576 stock/serializers.py:151
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:592
+#: stock/models.py:593
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:602 stock/models.py:611
+#: stock/models.py:603 stock/models.py:612
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:603
+#: stock/models.py:604
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:625
+#: stock/models.py:626
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:631
+#: stock/models.py:632
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:645
+#: stock/models.py:646
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:659
+#: stock/models.py:660
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:669
+#: stock/models.py:670
msgid "Base part"
msgstr ""
-#: stock/models.py:677
+#: stock/models.py:678
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:687
+#: stock/models.py:688
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:694
+#: stock/models.py:695
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:703
+#: stock/models.py:704
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:719
+#: stock/models.py:720
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:733
+#: stock/models.py:734
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:738
+#: stock/models.py:739
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:745
+#: stock/models.py:746
msgid "Source Build"
msgstr ""
-#: stock/models.py:747
+#: stock/models.py:748
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:758
+#: stock/models.py:759
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:762
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:767
+#: stock/models.py:768
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:774
+#: stock/models.py:775
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:790
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:790
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:802 stock/templates/stock/item.html:132
+#: stock/models.py:803 stock/templates/stock/item.html:132
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:810
+#: stock/models.py:811
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:838
+#: stock/models.py:839
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1335
+#: stock/models.py:1361
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1341
+#: stock/models.py:1367
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1373
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1350
+#: stock/models.py:1376
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1353
+#: stock/models.py:1379
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1360
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1430
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1433
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1436
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1439
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1442
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1445
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1452 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1460
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1464
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1633
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2101
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2159
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2165
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2184
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2190
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2196
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2203
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2209
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7619,10 +7682,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -7839,129 +7898,133 @@ msgstr ""
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:194
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:212
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:257
+#: stock/templates/stock/item_base.html:252
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:258
+#: stock/templates/stock/item_base.html:253
#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:271
-msgid "This stock item is in production and cannot be edited."
+#: stock/templates/stock/item_base.html:266
+msgid "This stock item is unavailable"
msgstr ""
#: stock/templates/stock/item_base.html:272
+msgid "This stock item is in production and cannot be edited."
+msgstr ""
+
+#: stock/templates/stock/item_base.html:273
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:285
-msgid "This stock item has not passed all required tests"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:293
+#: stock/templates/stock/item_base.html:288
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:301
+#: stock/templates/stock/item_base.html:296
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:307
-msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
+#: stock/templates/stock/item_base.html:312
+msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted"
msgstr ""
-#: stock/templates/stock/item_base.html:329
+#: stock/templates/stock/item_base.html:318
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:329
+#: stock/templates/stock/item_base.html:318
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:338
+#: stock/templates/stock/item_base.html:327
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:338
+#: stock/templates/stock/item_base.html:327
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:351
+#: stock/templates/stock/item_base.html:341
msgid "Available Quantity"
msgstr ""
-#: stock/templates/stock/item_base.html:395
+#: stock/templates/stock/item_base.html:388
#: templates/js/translated/build.js:1764
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:403
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:434
+#: stock/templates/stock/item_base.html:409
+msgid "This stock item has not passed all required tests"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:427
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:434
+#: stock/templates/stock/item_base.html:427
#: templates/js/translated/table_filters.js:333
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:436
+#: stock/templates/stock/item_base.html:429
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:436
+#: stock/templates/stock/item_base.html:429
#: templates/js/translated/table_filters.js:339
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:452
+#: stock/templates/stock/item_base.html:445
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:530
+#: stock/templates/stock/item_base.html:523
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:538
+#: stock/templates/stock/item_base.html:532
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:550
+#: stock/templates/stock/item_base.html:543
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:607
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:617
+#: stock/templates/stock/item_base.html:610
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:618
+#: stock/templates/stock/item_base.html:611
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:626
+#: stock/templates/stock/item_base.html:619
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:649
msgid "Return to Stock"
msgstr ""
@@ -8021,29 +8084,29 @@ msgstr ""
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:169
-#: stock/templates/stock/location.html:217
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:211
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:221
+#: stock/templates/stock/location.html:215
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:222
+#: stock/templates/stock/location.html:216
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:309
+#: stock/templates/stock/location.html:303
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:382
+#: stock/templates/stock/location.html:376
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:387
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -8581,7 +8644,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/tables.js:553 templates/navbar.html:107
+#: templates/js/translated/tables.js:563 templates/navbar.html:107
#: templates/search.html:8 templates/search_form.html:6
#: templates/search_form.html:7
msgid "Search"
@@ -8627,8 +8690,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -9101,6 +9164,10 @@ msgstr ""
msgid "Delete Attachments"
msgstr ""
+#: templates/barcode_data.html:5
+msgid "Barcode Identifier"
+msgstr ""
+
#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
@@ -9255,10 +9322,6 @@ msgstr ""
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:41
-msgid "Barcode"
-msgstr ""
-
#: templates/js/translated/barcode.js:48
msgid "Scan barcode using connected webcam"
msgstr ""
@@ -9271,94 +9334,94 @@ msgstr ""
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:172
+#: templates/js/translated/barcode.js:175
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:201
+#: templates/js/translated/barcode.js:204
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:236
+#: templates/js/translated/barcode.js:239
#: templates/js/translated/modals.js:1100
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:354
+#: templates/js/translated/barcode.js:359
msgid "Scan barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:404 templates/navbar.html:114
+#: templates/js/translated/barcode.js:407 templates/navbar.html:114
msgid "Scan Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:416
+#: templates/js/translated/barcode.js:427
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:455
+#: templates/js/translated/barcode.js:468
msgid "This will remove the link to the associated barcode"
msgstr ""
-#: templates/js/translated/barcode.js:461
+#: templates/js/translated/barcode.js:474
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:523 templates/js/translated/stock.js:1097
+#: templates/js/translated/barcode.js:537 templates/js/translated/stock.js:1097
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:566
+#: templates/js/translated/barcode.js:580
msgid "Scan Stock Items Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:568
+#: templates/js/translated/barcode.js:582
msgid "Scan stock item barcode to check in to this location"
msgstr ""
-#: templates/js/translated/barcode.js:571
-#: templates/js/translated/barcode.js:763
+#: templates/js/translated/barcode.js:585
+#: templates/js/translated/barcode.js:780
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:602
+#: templates/js/translated/barcode.js:616
msgid "No barcode provided"
msgstr ""
-#: templates/js/translated/barcode.js:642
+#: templates/js/translated/barcode.js:656
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:646
+#: templates/js/translated/barcode.js:660
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:653
+#: templates/js/translated/barcode.js:667
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:662
+#: templates/js/translated/barcode.js:676
msgid "Barcode does not match valid stock item"
msgstr ""
-#: templates/js/translated/barcode.js:679
+#: templates/js/translated/barcode.js:695
msgid "Scan Stock Container Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:681
+#: templates/js/translated/barcode.js:697
msgid "Scan stock container barcode to check in to this location"
msgstr ""
-#: templates/js/translated/barcode.js:715
+#: templates/js/translated/barcode.js:731
msgid "Barcode does not match valid stock location"
msgstr ""
-#: templates/js/translated/barcode.js:758
+#: templates/js/translated/barcode.js:775
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:826
-#: templates/js/translated/barcode.js:835
+#: templates/js/translated/barcode.js:843
+#: templates/js/translated/barcode.js:852
msgid "Barcode does not match a valid location"
msgstr ""
@@ -9377,7 +9440,7 @@ msgstr ""
#: templates/js/translated/bom.js:158 templates/js/translated/bom.js:669
#: templates/js/translated/modals.js:69 templates/js/translated/modals.js:608
#: templates/js/translated/modals.js:732 templates/js/translated/modals.js:1040
-#: templates/js/translated/purchase_order.js:739 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:742 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -9511,7 +9574,7 @@ msgid "No pricing available"
msgstr ""
#: templates/js/translated/bom.js:1143 templates/js/translated/build.js:1922
-#: templates/js/translated/sales_order.js:1771
+#: templates/js/translated/sales_order.js:1799
msgid "No Stock Available"
msgstr ""
@@ -9712,12 +9775,12 @@ msgid "No required tests for this build"
msgstr ""
#: templates/js/translated/build.js:1781 templates/js/translated/build.js:2803
-#: templates/js/translated/sales_order.js:1505
+#: templates/js/translated/sales_order.js:1544
msgid "Edit stock allocation"
msgstr ""
#: templates/js/translated/build.js:1783 templates/js/translated/build.js:2804
-#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1545
msgid "Delete stock allocation"
msgstr ""
@@ -9738,17 +9801,17 @@ msgid "Quantity Per"
msgstr ""
#: templates/js/translated/build.js:1916
-#: templates/js/translated/sales_order.js:1778
+#: templates/js/translated/sales_order.js:1806
msgid "Insufficient stock available"
msgstr ""
#: templates/js/translated/build.js:1918
-#: templates/js/translated/sales_order.js:1776
+#: templates/js/translated/sales_order.js:1804
msgid "Sufficient stock available"
msgstr ""
#: templates/js/translated/build.js:2014
-#: templates/js/translated/sales_order.js:1870
+#: templates/js/translated/sales_order.js:1905
msgid "Build stock"
msgstr ""
@@ -9757,23 +9820,23 @@ msgid "Order stock"
msgstr ""
#: templates/js/translated/build.js:2021
-#: templates/js/translated/sales_order.js:1863
+#: templates/js/translated/sales_order.js:1899
msgid "Allocate stock"
msgstr ""
#: templates/js/translated/build.js:2059
-#: templates/js/translated/purchase_order.js:564
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/purchase_order.js:567
+#: templates/js/translated/sales_order.js:1068
msgid "Select Parts"
msgstr ""
#: templates/js/translated/build.js:2060
-#: templates/js/translated/sales_order.js:1043
+#: templates/js/translated/sales_order.js:1069
msgid "You must select at least one part to allocate"
msgstr ""
#: templates/js/translated/build.js:2108
-#: templates/js/translated/sales_order.js:991
+#: templates/js/translated/sales_order.js:1017
msgid "Specify stock allocation quantity"
msgstr ""
@@ -9786,7 +9849,7 @@ msgid "All selected parts have been fully allocated"
msgstr ""
#: templates/js/translated/build.js:2202
-#: templates/js/translated/sales_order.js:1057
+#: templates/js/translated/sales_order.js:1083
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
@@ -9795,12 +9858,12 @@ msgid "Allocate Stock Items to Build Order"
msgstr ""
#: templates/js/translated/build.js:2241
-#: templates/js/translated/sales_order.js:1154
+#: templates/js/translated/sales_order.js:1180
msgid "No matching stock locations"
msgstr ""
#: templates/js/translated/build.js:2314
-#: templates/js/translated/sales_order.js:1231
+#: templates/js/translated/sales_order.js:1257
msgid "No matching stock items"
msgstr ""
@@ -10116,7 +10179,7 @@ msgstr ""
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2010 templates/js/translated/search.js:267
+#: templates/js/translated/forms.js:2010 templates/js/translated/search.js:269
msgid "Searching"
msgstr ""
@@ -10144,7 +10207,7 @@ msgstr ""
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:460
+#: templates/js/translated/helpers.js:466
msgid "Notes updated"
msgstr ""
@@ -10271,40 +10334,40 @@ msgstr ""
msgid "Notifications will load here"
msgstr ""
-#: templates/js/translated/order.js:69
+#: templates/js/translated/order.js:72
msgid "Add Extra Line Item"
msgstr ""
-#: templates/js/translated/order.js:106
+#: templates/js/translated/order.js:109
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:219
+#: templates/js/translated/order.js:222
msgid "Duplicate Line"
msgstr ""
-#: templates/js/translated/order.js:233
+#: templates/js/translated/order.js:236
msgid "Edit Line"
msgstr ""
-#: templates/js/translated/order.js:246
+#: templates/js/translated/order.js:249
msgid "Delete Line"
msgstr ""
-#: templates/js/translated/order.js:259
-#: templates/js/translated/purchase_order.js:1828
+#: templates/js/translated/order.js:262
+#: templates/js/translated/purchase_order.js:1895
msgid "No line items found"
msgstr ""
-#: templates/js/translated/order.js:332
+#: templates/js/translated/order.js:344
msgid "Duplicate line"
msgstr ""
-#: templates/js/translated/order.js:333
+#: templates/js/translated/order.js:345
msgid "Edit line"
msgstr ""
-#: templates/js/translated/order.js:337
+#: templates/js/translated/order.js:349
msgid "Delete line"
msgstr ""
@@ -10506,19 +10569,19 @@ msgid "No variants found"
msgstr ""
#: templates/js/translated/part.js:1351
-#: templates/js/translated/purchase_order.js:1500
+#: templates/js/translated/purchase_order.js:1567
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1495
-#: templates/js/translated/purchase_order.js:1991
-#: templates/js/translated/return_order.js:695
-#: templates/js/translated/sales_order.js:1739
+#: templates/js/translated/purchase_order.js:2058
+#: templates/js/translated/return_order.js:698
+#: templates/js/translated/sales_order.js:1767
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1541
-#: templates/js/translated/purchase_order.js:2049
+#: templates/js/translated/purchase_order.js:2125
msgid "Receive line item"
msgstr ""
@@ -10652,16 +10715,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
@@ -10714,184 +10767,206 @@ msgstr ""
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:384
+#: templates/js/translated/purchase_order.js:387
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:401
+#: templates/js/translated/purchase_order.js:404
#: templates/js/translated/return_order.js:165
-#: templates/js/translated/sales_order.js:431
+#: templates/js/translated/sales_order.js:435
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:407
+#: templates/js/translated/purchase_order.js:410
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:412
+#: templates/js/translated/purchase_order.js:415
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:413
-#: templates/js/translated/sales_order.js:445
+#: templates/js/translated/purchase_order.js:416
+#: templates/js/translated/sales_order.js:449
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:436
+#: templates/js/translated/purchase_order.js:439
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:441
+#: templates/js/translated/purchase_order.js:444
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:447
+#: templates/js/translated/purchase_order.js:450
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:468
+#: templates/js/translated/purchase_order.js:471
#: templates/js/translated/return_order.js:119
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:473
+#: templates/js/translated/purchase_order.js:476
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:565
+#: templates/js/translated/purchase_order.js:568
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:590
+#: templates/js/translated/purchase_order.js:593
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:599
+#: templates/js/translated/purchase_order.js:602
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:617
+#: templates/js/translated/purchase_order.js:620
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:649
+#: templates/js/translated/purchase_order.js:652
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:793
+#: templates/js/translated/purchase_order.js:796
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:812
+#: templates/js/translated/purchase_order.js:815
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:991
+#: templates/js/translated/purchase_order.js:994
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:992
-#: templates/js/translated/return_order.js:435
+#: templates/js/translated/purchase_order.js:995
+#: templates/js/translated/return_order.js:438
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1012
-#: templates/js/translated/purchase_order.js:1125
-msgid "Add batch code"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:1018
-#: templates/js/translated/purchase_order.js:1136
-msgid "Add serial numbers"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:1033
+#: templates/js/translated/purchase_order.js:1023
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1044
+#: templates/js/translated/purchase_order.js:1034
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1108
+#: templates/js/translated/purchase_order.js:1110
#: templates/js/translated/stock.js:2273
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1196
-msgid "Order Code"
+#: templates/js/translated/purchase_order.js:1124
+msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1197
-msgid "Ordered"
+#: templates/js/translated/purchase_order.js:1125
+msgid "Remove barcode"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1128
+msgid "Specify location"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1136
+msgid "Add batch code"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1147
+msgid "Add serial numbers"
msgstr ""
#: templates/js/translated/purchase_order.js:1199
+msgid "Serials"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1224
+msgid "Order Code"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1226
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1222
-#: templates/js/translated/return_order.js:500
+#: templates/js/translated/purchase_order.js:1248
+#: templates/js/translated/return_order.js:503
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1249
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1527
+#: templates/js/translated/purchase_order.js:1317
+msgid "Scan Item Barcode"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1318
+msgid "Scan barcode on incoming item (must not match any existing stock items)"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1332
+msgid "Invalid barcode data"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1594
#: templates/js/translated/return_order.js:244
-#: templates/js/translated/sales_order.js:686
+#: templates/js/translated/sales_order.js:712
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1577
+#: templates/js/translated/purchase_order.js:1644
#: templates/js/translated/return_order.js:300
-#: templates/js/translated/sales_order.js:751
-#: templates/js/translated/sales_order.js:893
+#: templates/js/translated/sales_order.js:777
+#: templates/js/translated/sales_order.js:919
msgid "Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1676
+#: templates/js/translated/purchase_order.js:1743
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1694
+#: templates/js/translated/purchase_order.js:1761
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1754
-#: templates/js/translated/sales_order.js:1920
+#: templates/js/translated/purchase_order.js:1821
+#: templates/js/translated/sales_order.js:1959
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:1769
-#: templates/js/translated/return_order.js:419
-#: templates/js/translated/return_order.js:608
-#: templates/js/translated/sales_order.js:1933
+#: templates/js/translated/purchase_order.js:1836
+#: templates/js/translated/return_order.js:422
+#: templates/js/translated/return_order.js:611
+#: templates/js/translated/sales_order.js:1972
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:1780
-#: templates/js/translated/return_order.js:621
-#: templates/js/translated/sales_order.js:1944
+#: templates/js/translated/purchase_order.js:1847
+#: templates/js/translated/return_order.js:624
+#: templates/js/translated/sales_order.js:1983
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2053
-#: templates/js/translated/sales_order.js:1876
+#: templates/js/translated/purchase_order.js:2129
+#: templates/js/translated/sales_order.js:1913
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2054
-#: templates/js/translated/return_order.js:731
-#: templates/js/translated/sales_order.js:1877
+#: templates/js/translated/purchase_order.js:2130
+#: templates/js/translated/return_order.js:743
+#: templates/js/translated/sales_order.js:1914
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2055
-#: templates/js/translated/return_order.js:735
-#: templates/js/translated/sales_order.js:1881
+#: templates/js/translated/purchase_order.js:2131
+#: templates/js/translated/return_order.js:747
+#: templates/js/translated/sales_order.js:1920
msgid "Delete line item"
msgstr ""
@@ -10916,7 +10991,7 @@ msgid "No report templates found which match the selected items"
msgstr ""
#: templates/js/translated/return_order.js:40
-#: templates/js/translated/sales_order.js:52
+#: templates/js/translated/sales_order.js:53
msgid "Add Customer"
msgstr ""
@@ -10949,208 +11024,221 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:258
-#: templates/js/translated/sales_order.js:700
+#: templates/js/translated/sales_order.js:726
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/return_order.js:501
+#: templates/js/translated/return_order.js:504
msgid "Receive Return Order Items"
msgstr ""
-#: templates/js/translated/return_order.js:632
-#: templates/js/translated/sales_order.js:2080
+#: templates/js/translated/return_order.js:635
+#: templates/js/translated/sales_order.js:2119
msgid "No matching line items"
msgstr ""
-#: templates/js/translated/return_order.js:728
+#: templates/js/translated/return_order.js:740
msgid "Mark item as received"
msgstr ""
-#: templates/js/translated/sales_order.js:102
+#: templates/js/translated/sales_order.js:103
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:117
+#: templates/js/translated/sales_order.js:118
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:226
+#: templates/js/translated/sales_order.js:230
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:231
+#: templates/js/translated/sales_order.js:235
msgid "The following stock items will be shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:271
+#: templates/js/translated/sales_order.js:275
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:295
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:347
+#: templates/js/translated/sales_order.js:351
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:351
+#: templates/js/translated/sales_order.js:355
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:383
+#: templates/js/translated/sales_order.js:365
+msgid "Complete Shipments"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:387
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:444
+#: templates/js/translated/sales_order.js:448
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:468
+#: templates/js/translated/sales_order.js:470
+msgid "Issue this Sales Order?"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:475
+msgid "Issue Sales Order"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:494
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:473
+#: templates/js/translated/sales_order.js:499
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:527
+#: templates/js/translated/sales_order.js:553
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:637
+#: templates/js/translated/sales_order.js:663
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:805
+#: templates/js/translated/sales_order.js:831
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:808
+#: templates/js/translated/sales_order.js:834
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:813
+#: templates/js/translated/sales_order.js:839
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:856
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:845
+#: templates/js/translated/sales_order.js:871
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:878
+#: templates/js/translated/sales_order.js:904
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:888
+#: templates/js/translated/sales_order.js:914
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:912
+#: templates/js/translated/sales_order.js:938
+#: templates/js/translated/sales_order.js:1424
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:918
+#: templates/js/translated/sales_order.js:944
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:922
+#: templates/js/translated/sales_order.js:948
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1090
+#: templates/js/translated/sales_order.js:1116
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1141
+#: templates/js/translated/sales_order.js:1167
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1142
+#: templates/js/translated/sales_order.js:1168
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1346
+#: templates/js/translated/sales_order.js:1372
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1425
+#: templates/js/translated/sales_order.js:1464
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1439
+#: templates/js/translated/sales_order.js:1478
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1440
+#: templates/js/translated/sales_order.js:1479
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1482
-#: templates/js/translated/sales_order.js:1569
+#: templates/js/translated/sales_order.js:1521
+#: templates/js/translated/sales_order.js:1608
#: templates/js/translated/stock.js:1664
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1490
-#: templates/js/translated/sales_order.js:1578
+#: templates/js/translated/sales_order.js:1529
+#: templates/js/translated/sales_order.js:1617
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/sales_order.js:1897
msgid "Allocate serial numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:1866
+#: templates/js/translated/sales_order.js:1901
msgid "Purchase stock"
msgstr ""
-#: templates/js/translated/sales_order.js:1873
-#: templates/js/translated/sales_order.js:2058
+#: templates/js/translated/sales_order.js:1910
+#: templates/js/translated/sales_order.js:2097
msgid "Calculate price"
msgstr ""
-#: templates/js/translated/sales_order.js:1885
+#: templates/js/translated/sales_order.js:1924
msgid "Cannot be deleted as items have been shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1888
+#: templates/js/translated/sales_order.js:1927
msgid "Cannot be deleted as items have been allocated"
msgstr ""
-#: templates/js/translated/sales_order.js:1959
+#: templates/js/translated/sales_order.js:1998
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2066
+#: templates/js/translated/sales_order.js:2105
msgid "Update Unit Price"
msgstr ""
-#: templates/js/translated/search.js:298
+#: templates/js/translated/search.js:300
msgid "No results"
msgstr ""
-#: templates/js/translated/search.js:320 templates/search.html:25
+#: templates/js/translated/search.js:322 templates/search.html:25
msgid "Enter search query"
msgstr ""
-#: templates/js/translated/search.js:370
+#: templates/js/translated/search.js:372
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:370
+#: templates/js/translated/search.js:372
msgid "results"
msgstr ""
-#: templates/js/translated/search.js:380
+#: templates/js/translated/search.js:382
msgid "Minimize results"
msgstr ""
-#: templates/js/translated/search.js:383
+#: templates/js/translated/search.js:385
msgid "Remove results"
msgstr ""
@@ -11832,51 +11920,51 @@ msgstr ""
msgid "Select File Format"
msgstr ""
-#: templates/js/translated/tables.js:539
+#: templates/js/translated/tables.js:549
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:542
+#: templates/js/translated/tables.js:552
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:547
+#: templates/js/translated/tables.js:557
msgid "Showing all rows"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:556
+#: templates/js/translated/tables.js:566
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:559
+#: templates/js/translated/tables.js:569
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:565
+#: templates/js/translated/tables.js:575
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:568
+#: templates/js/translated/tables.js:578
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:571
+#: templates/js/translated/tables.js:581
msgid "All"
msgstr ""
diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po
index f979bddafc..107c6bccd4 100644
--- a/InvenTree/locale/fa/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fa/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Language: fa_IR\n"
@@ -41,7 +41,7 @@ msgstr "تاریخ را وارد کنید"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index 6f6aa2555d..87f2a5c5eb 100644
--- a/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:25\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -23,7 +23,7 @@ msgstr "Point de terminaison de l'API introuvable"
#: InvenTree/api.py:299
msgid "User does not have permission to view this model"
-msgstr ""
+msgstr "L'utilisateur n'a pas la permission de voir ce modèle"
#: InvenTree/exceptions.py:94
msgid "Error details can be found in the admin panel"
@@ -41,7 +41,7 @@ msgstr "Entrer la date"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -147,7 +147,7 @@ msgstr "Chaîne de numéro de série vide"
#: InvenTree/helpers.py:640
msgid "Duplicate serial"
-msgstr "Numéro de série dupliqué"
+msgstr "Numéro de série en doublon"
#: InvenTree/helpers.py:673 InvenTree/helpers.py:708
#, python-brace-format
@@ -209,7 +209,7 @@ msgstr "Fichier manquant"
msgid "Missing external link"
msgstr "Lien externe manquant"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -612,7 +612,7 @@ msgstr "Retourné"
#: InvenTree/status_codes.py:182 InvenTree/status_codes.py:395
msgid "In Progress"
-msgstr ""
+msgstr "En Cours"
#: InvenTree/status_codes.py:183 order/models.py:1295
#: templates/js/translated/sales_order.js:1418
@@ -747,7 +747,7 @@ msgstr "Fabrication"
#: InvenTree/status_codes.py:430
msgid "Return"
-msgstr ""
+msgstr "Retour"
#: InvenTree/status_codes.py:431
msgid "Repair"
@@ -1833,23 +1833,24 @@ msgstr "Sorties incomplètes"
msgid "Completed Outputs"
msgstr "Sorties de Construction terminées"
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Format de fichier non pris en charge : {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Erreur de lecture du fichier (encodage invalide)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Erreur de lecture du fichier (format invalide)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Erreur de lecture du fichier (dimension incorrecte)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Erreur de lecture du fichier (les données pourraient être corrompues)"
@@ -3056,7 +3057,7 @@ msgstr "Nombre de résultats à afficher dans chaque section de la fenêtre de p
#: common/models.py:1983
msgid "Regex Search"
-msgstr ""
+msgstr "Recherche Regex"
#: common/models.py:1984
msgid "Enable regular expressions in search queries"
@@ -3481,7 +3482,7 @@ msgstr "Nom du paramètre"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr "Supprimer les pièces du fournisseur"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "Supprimer"
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr "L'extension `{plg_name}` n'est pas compatible avec la version actuelle d'InvenTree {version.inventreeVersion()} !"
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr "Résultat"
@@ -7568,84 +7568,83 @@ msgstr "Les numéros de série doivent être une liste de nombres entiers"
msgid "Quantity does not match serial numbers"
msgstr "La quantité ne correspond pas au nombre de numéros de série"
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr "Les numéros de série existent déja : {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "Les numéros de série existent déjà"
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr "Les numéros de série ne peuvent pas être assignés à cette pièce"
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "Les numéros de série existent déjà"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr "Changer le mot de passe"
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr "Modifier"
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po
index 170c78d75f..5e4a6a68d8 100644
--- a/InvenTree/locale/he/LC_MESSAGES/django.po
+++ b/InvenTree/locale/he/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -41,7 +41,7 @@ msgstr "הזן תאריך סיום"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "קובץ חסר"
msgid "Missing external link"
msgstr "חסר קישור חיצוני"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po
index e35952e17a..8f5e7276d9 100644
--- a/InvenTree/locale/hu/LC_MESSAGES/django.po
+++ b/InvenTree/locale/hu/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -41,7 +41,7 @@ msgstr "Dátum megadása"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Hiányzó fájl"
msgid "Missing external link"
msgstr "Hiányzó külső link"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1834,23 +1834,24 @@ msgstr "Befejezetlen kimenetek"
msgid "Completed Outputs"
msgstr "Befejezett kimenetek"
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Nem támogatott fájl formátum: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Fájl beolvasási hiba (hibás encoding)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Fájl beolvasási hiba (hibás formátum)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Fájl beolvasási hiba (hibás dimenzió)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Fájl beolvasási hiba (sérült lehet)"
@@ -3482,7 +3483,7 @@ msgstr "Paraméter neve"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3903,8 +3904,8 @@ msgstr "Beszállítói alkatrész törlése"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "Törlés"
@@ -6192,9 +6193,8 @@ msgid "You do not have permission to edit the BOM."
msgstr "Nincs jogosultságod az alkatrészjegyzék szerkesztéséhez."
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
-msgstr "A %(part)s alkatrészhez tartozó alkatrészjegyzék megváltozott és jóvá kell hagyni.
"
+msgid "The BOM this part has been changed, and must be validated"
+msgstr ""
#: part/templates/part/bom.html:17
#, python-format
@@ -6853,9 +6853,8 @@ msgid "Create new part variant"
msgstr "Alkatrész változat létrehozása"
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
-msgstr "Új változat létrehozása a '%(full_name)s' sablonból."
+msgid "Create a new variant part from this template"
+msgstr ""
#: part/templatetags/inventree_extras.py:187
msgid "Unknown database"
@@ -7039,19 +7038,20 @@ msgstr "Nincs szerző"
msgid "No date found"
msgstr "Nincs dátum"
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr "A {plg_name} plugin nem kompatibilis az aktuális applikáció verzióval {version.inventreeVersion()}!"
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
-msgstr "A pluginhoz minimum {plg_i.MIN_VERSION} verzió kell"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
+msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
-msgstr "A pluginhoz maximum {plg_i.MAX_VERSION} verzió kell"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
+msgstr ""
#: plugin/samples/integration/sample.py:39
msgid "Enable PO"
@@ -7277,12 +7277,12 @@ msgid "Test Results"
msgstr "Teszt eredmények"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr "Teszt"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr "Eredmény"
@@ -7569,84 +7569,83 @@ msgstr "A sorozatszám egész számok listája kell legyen"
msgid "Quantity does not match serial numbers"
msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával"
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr "Ezek a sorozatszámok már léteznek: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "A sorozatszámok már léteznek"
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez"
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr "Készlet tétel beépül egy másikba"
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr "A készlet tétel más tételeket tartalmaz"
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr "Készlet tétel hozzárendelve egy vevőhöz"
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr "Készlet tétel gyártás alatt"
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr "Követésre kötelezett készlet nem vonható össze"
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr "Duplikált készlet tételek vannak"
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon"
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr "A készlet tétel ugyanarra a beszállítói alkatrészre kell vonatkozzon"
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr "Készlet tételek állapotainak egyeznie kell"
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Készlet tétel nem mozgatható mivel nincs készleten"
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr "Bejegyzés megjegyzései"
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr "Ehhez a teszthez meg kell adni értéket"
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr "Ehhez a teszthez fel kell tölteni mellékletet"
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr "Teszt neve"
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr "Teszt eredménye"
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr "Teszt kimeneti értéke"
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr "Teszt eredmény melléklet"
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr "Tesztek megjegyzései"
@@ -7683,10 +7682,6 @@ msgstr "Opcionális megjegyzés mező"
msgid "Serial numbers cannot be assigned to this part"
msgstr "Sorozatszámokat nem lehet hozzárendelni ehhez az alkatrészhez"
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "A sorozatszámok már léteznek"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr "Válaszd ki a beépítésre szánt készlet tételt"
@@ -8695,8 +8690,8 @@ msgid "Change Password"
msgstr "Jelszó módosítása"
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr "Szerkesztés"
@@ -10720,16 +10715,6 @@ msgstr "Nincs beszállítói árinfomáció"
msgid "No price break data available"
msgstr "Nincsenek ársáv adatok"
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr "${human_name} szerkesztése"
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr "${human_name} törlése"
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr "Nincsenek beszerzési ár előzmények"
diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po
index c26f99fc55..b188415ca3 100644
--- a/InvenTree/locale/id/LC_MESSAGES/django.po
+++ b/InvenTree/locale/id/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -41,7 +41,7 @@ msgstr "Masukkan tanggal"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "File tidak ditemukan"
msgid "Missing external link"
msgstr "Tautan eksternal tidak ditemukan"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index 2fb05793b5..6ca5e83848 100644
--- a/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -41,7 +41,7 @@ msgstr "Inserisci la data"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "File mancante"
msgid "Missing external link"
msgstr "Link esterno mancante"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr "Output Incompleti"
msgid "Completed Outputs"
msgstr "Outputs Completati"
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Formato file non supportato: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Errore nella lettura del file (codifica non valida)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Errore nella lettura del file (formato non valido)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Errore nella lettura del file (dimensione errata)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Errore di lettura del file (i dati potrebbero essere danneggiati)"
@@ -3481,7 +3482,7 @@ msgstr "Nome parametro"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr "Elimina articolo fornitore"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "Elimina"
@@ -6191,9 +6192,8 @@ msgid "You do not have permission to edit the BOM."
msgstr "Non hai il permesso di modificare la distinta base."
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
-msgstr "La distinta base per %(part)s è cambiata e deve essere convalidata.
"
+msgid "The BOM this part has been changed, and must be validated"
+msgstr ""
#: part/templates/part/bom.html:17
#, python-format
@@ -6852,9 +6852,8 @@ msgid "Create new part variant"
msgstr "Crea nuove varianti dell'articolo"
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
-msgstr "Crea una nuova variante del modello '%(full_name)s'."
+msgid "Create a new variant part from this template"
+msgstr ""
#: part/templatetags/inventree_extras.py:187
msgid "Unknown database"
@@ -7038,19 +7037,20 @@ msgstr "Nessun autore trovato"
msgid "No date found"
msgstr "Nessuna data trovata"
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr "Il plugin `{plg_name}` non è compatibile con l'attuale versione di InvenTree {version.inventreeVersion()}!"
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
-msgstr "Il plugin richiede almeno la versione {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
+msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
-msgstr "Il plugin richiede al massimo la versione {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
+msgstr ""
#: plugin/samples/integration/sample.py:39
msgid "Enable PO"
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr "Risultati Test"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr "Test"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr "Risultato"
@@ -7568,84 +7568,83 @@ msgstr "I numeri di serie devono essere numeri interi"
msgid "Quantity does not match serial numbers"
msgstr "La quantità non corrisponde ai numeri di serie"
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr "Numeri di serie già esistenti: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "Numeri di serie già esistenti"
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr "L'elemento di magazzino è stato assegnato a un ordine di vendita"
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr "L'elemento di magazzino è installato in un altro elemento"
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr "L'elemento di magazzino contiene altri elementi"
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr "L'elemento di magazzino è stato assegnato a un cliente"
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr "L'elemento di magazzino è attualmente in produzione"
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr "Il magazzino serializzato non può essere unito"
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr "Duplica elementi di magazzino"
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo"
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo fornitore"
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr "I codici di stato dello stock devono corrispondere"
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Le giacenze non possono essere spostate perché non disponibili"
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr "Note d'ingresso"
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr "Il valore deve essere fornito per questo test"
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr "L'allegato deve essere caricato per questo test"
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr "Nome Test"
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr "Risultato Test"
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr "Test valore output"
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr "Risultato della prova allegato"
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr "Note del test"
@@ -7682,10 +7681,6 @@ msgstr "Note opzionali elemento"
msgid "Serial numbers cannot be assigned to this part"
msgstr "Numeri di serie non possono essere assegnati a questo articolo"
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "Numeri di serie già esistenti"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr "Seleziona elementi di magazzino da installare"
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr "Modifica Password"
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr "Modifica"
@@ -10719,16 +10714,6 @@ msgstr "Nessun dato di prezzo disponibile per il fornitore"
msgid "No price break data available"
msgstr "Nessun dato disponibile prezzo limite"
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr "Modifica ${human_name}"
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr "Elimina ${human_name}"
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr "Nessun dato della cronologia di acquisto disponibile"
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index cb2aff335c..e2f8072a7e 100644
--- a/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -41,7 +41,7 @@ msgstr "日付を入力する"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "ファイルがありません"
msgid "Missing external link"
msgstr "外部リンクが見つかりません。"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po
index 5082196f88..6672811ba6 100644
--- a/InvenTree/locale/ko/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ko/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -41,7 +41,7 @@ msgstr "날짜 입력"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "삭제"
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr ""
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "일련번호가 이미 존재합니다"
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "일련번호가 이미 존재합니다"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr "비밀번호 변경"
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po
index f78bcf4de4..ea88cb2f05 100644
--- a/InvenTree/locale/nl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/nl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -41,7 +41,7 @@ msgstr "Voer datum in"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Ontbrekend bestand"
msgid "Missing external link"
msgstr "Externe link ontbreekt"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr "Onvolledige Productieuitvoeren"
msgid "Completed Outputs"
msgstr "Voltooide Uitvoeren"
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Niet-ondersteunde bestandsindeling: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Fout bij lezen bestand (ongeldige codering)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Fout bij lezen bestand (ongeldig formaat)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Fout bij lezen bestand (onjuiste afmeting)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Fout bij lezen bestand (gegevens kunnen beschadigd zijn)"
@@ -3481,7 +3482,7 @@ msgstr "Parameternaam"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr "Verwijder leveranciersonderdelen"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "Verwijderen"
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr "U heeft geen toestemming om de stuklijst te bewerken."
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr "Voorraadartikel is toegewezen aan een verkooporder"
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po
index 1229d5166f..cc61c19288 100644
--- a/InvenTree/locale/no/LC_MESSAGES/django.po
+++ b/InvenTree/locale/no/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -41,7 +41,7 @@ msgstr "Oppgi dato"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Fil mangler"
msgid "Missing external link"
msgstr "Mangler eksternlenke"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr "Ufullstendige resultater"
msgid "Completed Outputs"
msgstr "Fullførte byggeresultater"
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Filformatet støttes ikke: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Feil under lesing av fil (ugyldig koding)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Feil under lesing av fil (ugyldig format)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Feil under lesing av fil (feil dimensjon)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Feil under lesing av fil (data kan være skadet)"
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr "Slett leverandørdeler"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "Slett"
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr ""
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "Seriernummer eksisterer allerede"
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "Seriernummer eksisterer allerede"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index df79a31a8d..96d70c68e8 100644
--- a/InvenTree/locale/pl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -41,7 +41,7 @@ msgstr "Wprowadź dane"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Brak pliku"
msgid "Missing external link"
msgstr "Brak zewnętrznego odnośnika"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Nieobsługiwany format pliku: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Błąd odczytu pliku (nieprawidłowe kodowanie)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Błąd odczytu pliku (nieprawidłowy format)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Błąd odczytu pliku (niepoprawny wymiar)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Błąd odczytu pliku (dane mogą być uszkodzone)"
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "Usuń"
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr "Nie masz uprawnień do edycji BOM."
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr "Wynik"
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr ""
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "Numer seryjny już istnieje"
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr "Notatki do wpisu"
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr "Należy podać wartość dla tego testu"
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr "Nazwa testu"
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr "Wynik testu"
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "Numer seryjny już istnieje"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr "Edytuj ${human_name}"
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr "Usuń ${human_name}"
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po
index 53a535bb9e..6a5378b920 100644
--- a/InvenTree/locale/pt/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pt/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@@ -41,7 +41,7 @@ msgstr "Insira uma Data"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Arquivo nao encontrado"
msgid "Missing external link"
msgstr "Link externo nao encontrado"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr "Saídas Incompletas"
msgid "Completed Outputs"
msgstr "Saídas Concluídas"
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Formato de arquivo não suportado: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Erro ao ler arquivo (codificação inválida)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Erro ao ler arquivo (formato inválido)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Erro ao ler o arquivo (dimensão incorreta)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Erro ao ler o arquivo (dados podem estar corrompidos)"
@@ -3060,7 +3061,7 @@ msgstr "Pesquisa de Regex"
#: common/models.py:1984
msgid "Enable regular expressions in search queries"
-msgstr "Permitir expressôes comuns nas conultas de pesquisas ( Queries)"
+msgstr "Permitir expressôes comuns nas conultas de pesquisas"
#: common/models.py:1990
msgid "Whole Word Search"
@@ -3481,7 +3482,7 @@ msgstr "Nome do parâmetro"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr "Excluir peças do fornecedor"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "Excluir"
@@ -6191,9 +6192,8 @@ msgid "You do not have permission to edit the BOM."
msgstr "Você não tem permissões para editar a LDM."
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
-msgstr "A LDM para %(part)s foi alterada e deve ser validada.
"
+msgid "The BOM this part has been changed, and must be validated"
+msgstr ""
#: part/templates/part/bom.html:17
#, python-format
@@ -6852,9 +6852,8 @@ msgid "Create new part variant"
msgstr "Criar variante de peça"
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
-msgstr "Criar uma nova variante do modelo '%(full_name)s'."
+msgid "Create a new variant part from this template"
+msgstr ""
#: part/templatetags/inventree_extras.py:187
msgid "Unknown database"
@@ -7038,19 +7037,20 @@ msgstr "Nenhum autor encontrado"
msgid "No date found"
msgstr "Nenhum dado encontrado"
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr "O plugin `{plg_name}` não é compatível com a versão atual do InvenTree {version.inventreeVersion()}!"
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
-msgstr "Extensão requer pelo menos a versão {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
+msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
-msgstr "Extensão requer no máximo a versão {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
+msgstr ""
#: plugin/samples/integration/sample.py:39
msgid "Enable PO"
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr "Resultados do teste"
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr "Teste"
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr "Resultado"
@@ -7568,84 +7568,83 @@ msgstr "Números de série devem ser uma lista de números inteiros"
msgid "Quantity does not match serial numbers"
msgstr "A quantidade não corresponde aos números de série"
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr "Números de série já existem: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr "Item em estoque foi reservado para um pedido"
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr "Item em estoque está instalado em outro item"
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr "item em estoque contem outro(s) items"
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr "Item em estoque foi reservado para outro cliente"
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr "Item no estoque está em produção no momento"
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr "Itens de série não podem ser mesclados"
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr "Item de estoque duplicado"
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr "Itens de estoque devem se referir à mesma peça"
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr "Itens de estoque devem se referir à mesma peça do fornecedor"
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr "Códigos de estado do estoque devem corresponder"
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Item do estoque não pode ser realocado se não houver estoque da mesma"
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr "Observações de entrada"
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr "Deve-se fornecer o valor desse teste"
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr "O anexo deve ser enviado para este teste"
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr "Nome de teste"
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/pt_br/LC_MESSAGES/django.po b/InvenTree/locale/pt_br/LC_MESSAGES/django.po
index 5cf259f2b7..b4a9227c68 100644
--- a/InvenTree/locale/pt_br/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pt_br/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-03-29 08:09+0000\n"
+"POT-Creation-Date: 2023-04-17 14:52+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,15 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: InvenTree/api.py:63
+#: InvenTree/api.py:65
msgid "API endpoint not found"
msgstr ""
-#: InvenTree/api.py:308
+#: InvenTree/api.py:299
msgid "User does not have permission to view this model"
msgstr ""
-#: InvenTree/exceptions.py:79
+#: InvenTree/exceptions.py:94
msgid "Error details can be found in the admin panel"
msgstr ""
@@ -34,25 +34,25 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/fields.py:204 build/serializers.py:389
+#: InvenTree/fields.py:204 build/serializers.py:392
#: build/templates/build/sidebar.html:21 company/models.py:554
-#: company/templates/company/sidebar.html:35 order/models.py:1029
+#: company/templates/company/sidebar.html:35 order/models.py:1058
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2100 stock/models.py:2208
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:130 templates/js/translated/bom.js:1220
-#: templates/js/translated/company.js:1272 templates/js/translated/order.js:319
+#: templates/js/translated/company.js:1272 templates/js/translated/order.js:322
#: templates/js/translated/part.js:997
-#: templates/js/translated/purchase_order.js:2038
-#: templates/js/translated/return_order.js:715
-#: templates/js/translated/sales_order.js:937
-#: templates/js/translated/sales_order.js:1843
+#: templates/js/translated/purchase_order.js:2105
+#: templates/js/translated/return_order.js:718
+#: templates/js/translated/sales_order.js:963
+#: templates/js/translated/sales_order.js:1871
#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:2134
msgid "Notes"
msgstr ""
@@ -138,7 +138,7 @@ msgstr ""
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/helpers.py:602 order/models.py:409 order/models.py:565
+#: InvenTree/helpers.py:602 order/models.py:410 order/models.py:571
msgid "Invalid quantity provided"
msgstr ""
@@ -210,7 +210,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:409 stock/models.py:2202
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -220,20 +220,24 @@ msgstr ""
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:416 common/models.py:2607 company/models.py:129
-#: company/models.py:305 company/models.py:541 order/models.py:201
-#: order/models.py:1377 order/models.py:1856 part/admin.py:39
+#: InvenTree/models.py:416 common/models.py:2621 company/models.py:129
+#: company/models.py:305 company/models.py:541 order/models.py:202
+#: order/models.py:1062 order/models.py:1412 part/admin.py:39
#: part/models.py:892 part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_base.html:164
#: stock/admin.py:120 templates/js/translated/company.js:962
-#: templates/js/translated/company.js:1261 templates/js/translated/part.js:1932
-#: templates/js/translated/purchase_order.js:1878
-#: templates/js/translated/sales_order.js:926
+#: templates/js/translated/company.js:1261 templates/js/translated/order.js:326
+#: templates/js/translated/part.js:1932
+#: templates/js/translated/purchase_order.js:1945
+#: templates/js/translated/purchase_order.js:2109
+#: templates/js/translated/return_order.js:722
+#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:1876
msgid "Link"
msgstr ""
#: InvenTree/models.py:417 build/models.py:293 part/models.py:893
-#: stock/models.py:727
+#: stock/models.py:728
msgid "Link to external URL"
msgstr ""
@@ -246,9 +250,9 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:426 InvenTree/models.py:427 common/models.py:2056
-#: common/models.py:2057 common/models.py:2280 common/models.py:2281
-#: common/models.py:2537 common/models.py:2538 part/models.py:2997
+#: InvenTree/models.py:426 InvenTree/models.py:427 common/models.py:2070
+#: common/models.py:2071 common/models.py:2294 common/models.py:2295
+#: common/models.py:2551 common/models.py:2552 part/models.py:2997
#: part/models.py:3085 part/models.py:3164 part/models.py:3184
#: plugin/models.py:270 plugin/models.py:271
#: report/templates/report/inventree_test_report_base.html:105
@@ -293,7 +297,7 @@ msgstr ""
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:571 InvenTree/models.py:572 common/models.py:2266
+#: InvenTree/models.py:571 InvenTree/models.py:572 common/models.py:2280
#: company/models.py:387 label/models.py:102 part/models.py:838
#: part/models.py:3332 plugin/models.py:94 report/models.py:158
#: templates/InvenTree/settings/mixins/urls.html:13
@@ -316,7 +320,7 @@ msgstr ""
#: company/models.py:547 company/templates/company/company_base.html:72
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:108 label/models.py:109
-#: order/models.py:199 part/admin.py:194 part/admin.py:276 part/models.py:860
+#: order/models.py:200 part/admin.py:194 part/admin.py:276 part/models.py:860
#: part/models.py:3341 part/templates/part/category.html:81
#: part/templates/part/part_base.html:172
#: part/templates/part/part_scheduling.html:12 report/models.py:171
@@ -332,11 +336,11 @@ msgstr ""
#: templates/js/translated/company.js:1236 templates/js/translated/part.js:1155
#: templates/js/translated/part.js:1597 templates/js/translated/part.js:1869
#: templates/js/translated/part.js:2348 templates/js/translated/part.js:2439
-#: templates/js/translated/purchase_order.js:1548
-#: templates/js/translated/purchase_order.js:1682
-#: templates/js/translated/purchase_order.js:1860
+#: templates/js/translated/purchase_order.js:1615
+#: templates/js/translated/purchase_order.js:1749
+#: templates/js/translated/purchase_order.js:1927
#: templates/js/translated/return_order.js:272
-#: templates/js/translated/sales_order.js:714
+#: templates/js/translated/sales_order.js:740
#: templates/js/translated/stock.js:1418 templates/js/translated/stock.js:1791
#: templates/js/translated/stock.js:2551 templates/js/translated/stock.js:2623
msgid "Description"
@@ -363,7 +367,7 @@ msgstr ""
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:702 order/serializers.py:503
+#: InvenTree/models.py:702
msgid "Barcode Hash"
msgstr ""
@@ -375,11 +379,11 @@ msgstr ""
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:801
+#: InvenTree/models.py:802
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:802
+#: InvenTree/models.py:803
msgid "An error has been logged by the server."
msgstr ""
@@ -460,107 +464,107 @@ msgstr ""
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:708
msgid "Czech"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:709
msgid "Danish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:710
msgid "German"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:711
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:709
+#: InvenTree/settings.py:712
msgid "English"
msgstr ""
-#: InvenTree/settings.py:710
+#: InvenTree/settings.py:713
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:711
+#: InvenTree/settings.py:714
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:712
+#: InvenTree/settings.py:715
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/settings.py:713
+#: InvenTree/settings.py:716
msgid "French"
msgstr ""
-#: InvenTree/settings.py:714
+#: InvenTree/settings.py:717
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:715
+#: InvenTree/settings.py:718
msgid "Hungarian"
msgstr ""
-#: InvenTree/settings.py:716
+#: InvenTree/settings.py:719
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:717
+#: InvenTree/settings.py:720
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:718
+#: InvenTree/settings.py:721
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:719
+#: InvenTree/settings.py:722
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:720
+#: InvenTree/settings.py:723
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:721
+#: InvenTree/settings.py:724
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:722
+#: InvenTree/settings.py:725
msgid "Portuguese"
msgstr ""
-#: InvenTree/settings.py:723
+#: InvenTree/settings.py:726
msgid "Portuguese (Brazilian)"
msgstr ""
-#: InvenTree/settings.py:724
+#: InvenTree/settings.py:727
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:725
+#: InvenTree/settings.py:728
msgid "Slovenian"
msgstr ""
-#: InvenTree/settings.py:726
+#: InvenTree/settings.py:729
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:727
+#: InvenTree/settings.py:730
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:728
+#: InvenTree/settings.py:731
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:729
+#: InvenTree/settings.py:732
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:730
+#: InvenTree/settings.py:733
msgid "Chinese"
msgstr ""
@@ -576,188 +580,189 @@ msgstr ""
msgid "InvenTree system health checks failed"
msgstr ""
-#: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:313 InvenTree/status_codes.py:350
-#: InvenTree/status_codes.py:385 templates/js/translated/table_filters.js:417
+#: InvenTree/status_codes.py:139 InvenTree/status_codes.py:181
+#: InvenTree/status_codes.py:357 InvenTree/status_codes.py:394
+#: InvenTree/status_codes.py:429 templates/js/translated/table_filters.js:417
msgid "Pending"
msgstr ""
-#: InvenTree/status_codes.py:100
+#: InvenTree/status_codes.py:140
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:316
-#: InvenTree/status_codes.py:352 order/templates/order/order_base.html:142
-#: order/templates/order/sales_order_base.html:133
+#: InvenTree/status_codes.py:141 InvenTree/status_codes.py:360
+#: InvenTree/status_codes.py:396 order/templates/order/order_base.html:161
+#: order/templates/order/sales_order_base.html:161
msgid "Complete"
msgstr ""
-#: InvenTree/status_codes.py:102 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:315 InvenTree/status_codes.py:353
+#: InvenTree/status_codes.py:142 InvenTree/status_codes.py:184
+#: InvenTree/status_codes.py:359 InvenTree/status_codes.py:397
msgid "Cancelled"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:143
-#: InvenTree/status_codes.py:183
+#: InvenTree/status_codes.py:143 InvenTree/status_codes.py:185
+#: InvenTree/status_codes.py:227
msgid "Lost"
msgstr ""
-#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:186
+#: InvenTree/status_codes.py:144 InvenTree/status_codes.py:186
+#: InvenTree/status_codes.py:230
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:141 order/models.py:1260
-#: templates/js/translated/sales_order.js:1503
-#: templates/js/translated/sales_order.js:1818
-msgid "Shipped"
-msgstr ""
-
-#: InvenTree/status_codes.py:179
-msgid "OK"
-msgstr ""
-
-#: InvenTree/status_codes.py:180
-msgid "Attention needed"
-msgstr ""
-
-#: InvenTree/status_codes.py:181
-msgid "Damaged"
-msgstr ""
-
-#: InvenTree/status_codes.py:182
-msgid "Destroyed"
-msgstr ""
-
-#: InvenTree/status_codes.py:184
-msgid "Rejected"
-msgstr ""
-
-#: InvenTree/status_codes.py:185
-msgid "Quarantined"
-msgstr ""
-
-#: InvenTree/status_codes.py:263
-msgid "Legacy stock tracking entry"
-msgstr ""
-
-#: InvenTree/status_codes.py:265
-msgid "Stock item created"
-msgstr ""
-
-#: InvenTree/status_codes.py:267
-msgid "Edited stock item"
-msgstr ""
-
-#: InvenTree/status_codes.py:268
-msgid "Assigned serial number"
-msgstr ""
-
-#: InvenTree/status_codes.py:270
-msgid "Stock counted"
-msgstr ""
-
-#: InvenTree/status_codes.py:271
-msgid "Stock manually added"
-msgstr ""
-
-#: InvenTree/status_codes.py:272
-msgid "Stock manually removed"
-msgstr ""
-
-#: InvenTree/status_codes.py:274
-msgid "Location changed"
-msgstr ""
-
-#: InvenTree/status_codes.py:276
-msgid "Installed into assembly"
-msgstr ""
-
-#: InvenTree/status_codes.py:277
-msgid "Removed from assembly"
-msgstr ""
-
-#: InvenTree/status_codes.py:279
-msgid "Installed component item"
-msgstr ""
-
-#: InvenTree/status_codes.py:280
-msgid "Removed component item"
-msgstr ""
-
-#: InvenTree/status_codes.py:282
-msgid "Split from parent item"
-msgstr ""
-
-#: InvenTree/status_codes.py:283
-msgid "Split child item"
-msgstr ""
-
-#: InvenTree/status_codes.py:285 templates/js/translated/stock.js:2213
-msgid "Merged stock items"
-msgstr ""
-
-#: InvenTree/status_codes.py:287
-msgid "Converted to variant"
-msgstr ""
-
-#: InvenTree/status_codes.py:289 templates/js/translated/table_filters.js:273
-msgid "Sent to customer"
-msgstr ""
-
-#: InvenTree/status_codes.py:290
-msgid "Returned from customer"
-msgstr ""
-
-#: InvenTree/status_codes.py:292
-msgid "Build order output created"
-msgstr ""
-
-#: InvenTree/status_codes.py:293
-msgid "Build order output completed"
-msgstr ""
-
-#: InvenTree/status_codes.py:294
-msgid "Consumed by build order"
-msgstr ""
-
-#: InvenTree/status_codes.py:296
-msgid "Shipped against Sales Order"
-msgstr ""
-
-#: InvenTree/status_codes.py:298
-msgid "Received against Purchase Order"
-msgstr ""
-
-#: InvenTree/status_codes.py:300
-msgid "Returned against Return Order"
-msgstr ""
-
-#: InvenTree/status_codes.py:314
-msgid "Production"
-msgstr ""
-
-#: InvenTree/status_codes.py:351
+#: InvenTree/status_codes.py:182 InvenTree/status_codes.py:395
msgid "In Progress"
msgstr ""
-#: InvenTree/status_codes.py:386
+#: InvenTree/status_codes.py:183 order/models.py:1295
+#: templates/js/translated/sales_order.js:1418
+#: templates/js/translated/sales_order.js:1542
+#: templates/js/translated/sales_order.js:1846
+msgid "Shipped"
+msgstr ""
+
+#: InvenTree/status_codes.py:223
+msgid "OK"
+msgstr ""
+
+#: InvenTree/status_codes.py:224
+msgid "Attention needed"
+msgstr ""
+
+#: InvenTree/status_codes.py:225
+msgid "Damaged"
+msgstr ""
+
+#: InvenTree/status_codes.py:226
+msgid "Destroyed"
+msgstr ""
+
+#: InvenTree/status_codes.py:228
+msgid "Rejected"
+msgstr ""
+
+#: InvenTree/status_codes.py:229
+msgid "Quarantined"
+msgstr ""
+
+#: InvenTree/status_codes.py:307
+msgid "Legacy stock tracking entry"
+msgstr ""
+
+#: InvenTree/status_codes.py:309
+msgid "Stock item created"
+msgstr ""
+
+#: InvenTree/status_codes.py:311
+msgid "Edited stock item"
+msgstr ""
+
+#: InvenTree/status_codes.py:312
+msgid "Assigned serial number"
+msgstr ""
+
+#: InvenTree/status_codes.py:314
+msgid "Stock counted"
+msgstr ""
+
+#: InvenTree/status_codes.py:315
+msgid "Stock manually added"
+msgstr ""
+
+#: InvenTree/status_codes.py:316
+msgid "Stock manually removed"
+msgstr ""
+
+#: InvenTree/status_codes.py:318
+msgid "Location changed"
+msgstr ""
+
+#: InvenTree/status_codes.py:320
+msgid "Installed into assembly"
+msgstr ""
+
+#: InvenTree/status_codes.py:321
+msgid "Removed from assembly"
+msgstr ""
+
+#: InvenTree/status_codes.py:323
+msgid "Installed component item"
+msgstr ""
+
+#: InvenTree/status_codes.py:324
+msgid "Removed component item"
+msgstr ""
+
+#: InvenTree/status_codes.py:326
+msgid "Split from parent item"
+msgstr ""
+
+#: InvenTree/status_codes.py:327
+msgid "Split child item"
+msgstr ""
+
+#: InvenTree/status_codes.py:329 templates/js/translated/stock.js:2213
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:331
+msgid "Converted to variant"
+msgstr ""
+
+#: InvenTree/status_codes.py:333 templates/js/translated/table_filters.js:273
+msgid "Sent to customer"
+msgstr ""
+
+#: InvenTree/status_codes.py:334
+msgid "Returned from customer"
+msgstr ""
+
+#: InvenTree/status_codes.py:336
+msgid "Build order output created"
+msgstr ""
+
+#: InvenTree/status_codes.py:337
+msgid "Build order output completed"
+msgstr ""
+
+#: InvenTree/status_codes.py:338
+msgid "Consumed by build order"
+msgstr ""
+
+#: InvenTree/status_codes.py:340
+msgid "Shipped against Sales Order"
+msgstr ""
+
+#: InvenTree/status_codes.py:342
+msgid "Received against Purchase Order"
+msgstr ""
+
+#: InvenTree/status_codes.py:344
+msgid "Returned against Return Order"
+msgstr ""
+
+#: InvenTree/status_codes.py:358
+msgid "Production"
+msgstr ""
+
+#: InvenTree/status_codes.py:430
msgid "Return"
msgstr ""
-#: InvenTree/status_codes.py:387
+#: InvenTree/status_codes.py:431
msgid "Repair"
msgstr ""
-#: InvenTree/status_codes.py:388
+#: InvenTree/status_codes.py:432
msgid "Refund"
msgstr ""
-#: InvenTree/status_codes.py:389
+#: InvenTree/status_codes.py:433
msgid "Replace"
msgstr ""
-#: InvenTree/status_codes.py:390
+#: InvenTree/status_codes.py:434
msgid "Reject"
msgstr ""
@@ -801,7 +806,7 @@ msgstr ""
msgid "About InvenTree"
msgstr ""
-#: build/api.py:245
+#: build/api.py:221
msgid "Build must be cancelled before it can be deleted"
msgstr ""
@@ -821,7 +826,7 @@ msgstr ""
#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:141
#: templates/InvenTree/settings/sidebar.html:49
-#: templates/js/translated/search.js:214 users/models.py:42
+#: templates/js/translated/search.js:216 users/models.py:42
msgid "Build Orders"
msgstr ""
@@ -833,27 +838,27 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:158 order/models.py:326 order/models.py:722
-#: order/models.py:1027 order/models.py:1638 part/admin.py:278
+#: build/models.py:158 order/models.py:327 order/models.py:734
+#: order/models.py:1056 order/models.py:1673 part/admin.py:278
#: part/models.py:3602 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
#: report/templates/report/inventree_so_report_base.html:28
#: templates/js/translated/bom.js:739 templates/js/translated/bom.js:913
-#: templates/js/translated/build.js:1847 templates/js/translated/order.js:269
+#: templates/js/translated/build.js:1847 templates/js/translated/order.js:272
#: templates/js/translated/pricing.js:368
-#: templates/js/translated/purchase_order.js:1903
-#: templates/js/translated/return_order.js:668
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/return_order.js:671
+#: templates/js/translated/sales_order.js:1710
msgid "Reference"
msgstr ""
#: build/models.py:169
-msgid "Brief description of the build"
+msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:177 build/templates/build/build_base.html:172
+#: build/models.py:177 build/templates/build/build_base.html:189
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
@@ -862,9 +867,9 @@ msgstr ""
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:183 build/templates/build/build_base.html:80
+#: build/models.py:183 build/templates/build/build_base.html:98
#: build/templates/build/detail.html:29 company/models.py:720
-#: order/models.py:1123 order/models.py:1239 order/models.py:1240
+#: order/models.py:1158 order/models.py:1274 order/models.py:1275
#: part/models.py:382 part/models.py:2849 part/models.py:2963
#: part/models.py:3103 part/models.py:3122 part/models.py:3141
#: part/models.py:3162 part/models.py:3254 part/models.py:3375
@@ -885,7 +890,7 @@ msgstr ""
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
#: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:502 templates/js/translated/bom.js:601
+#: templates/js/translated/barcode.js:516 templates/js/translated/bom.js:601
#: templates/js/translated/bom.js:738 templates/js/translated/bom.js:857
#: templates/js/translated/build.js:1230 templates/js/translated/build.js:1714
#: templates/js/translated/build.js:2213 templates/js/translated/build.js:2615
@@ -895,16 +900,16 @@ msgstr ""
#: templates/js/translated/company.js:1154 templates/js/translated/part.js:1582
#: templates/js/translated/part.js:1648 templates/js/translated/part.js:1838
#: templates/js/translated/pricing.js:351
-#: templates/js/translated/purchase_order.js:694
-#: templates/js/translated/purchase_order.js:1195
-#: templates/js/translated/purchase_order.js:1681
-#: templates/js/translated/purchase_order.js:1845
-#: templates/js/translated/return_order.js:482
-#: templates/js/translated/return_order.js:649
-#: templates/js/translated/sales_order.js:235
-#: templates/js/translated/sales_order.js:1068
-#: templates/js/translated/sales_order.js:1454
-#: templates/js/translated/sales_order.js:1666
+#: templates/js/translated/purchase_order.js:697
+#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1748
+#: templates/js/translated/purchase_order.js:1912
+#: templates/js/translated/return_order.js:485
+#: templates/js/translated/return_order.js:652
+#: templates/js/translated/sales_order.js:239
+#: templates/js/translated/sales_order.js:1094
+#: templates/js/translated/sales_order.js:1493
+#: templates/js/translated/sales_order.js:1694
#: templates/js/translated/stock.js:622 templates/js/translated/stock.js:788
#: templates/js/translated/stock.js:1000 templates/js/translated/stock.js:1747
#: templates/js/translated/stock.js:2649 templates/js/translated/stock.js:2873
@@ -924,9 +929,9 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:205 build/serializers.py:825
+#: build/models.py:205 build/serializers.py:828
#: templates/js/translated/build.js:2201
-#: templates/js/translated/sales_order.js:1056
+#: templates/js/translated/sales_order.js:1082
msgid "Source Location"
msgstr ""
@@ -966,19 +971,19 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:248 build/serializers.py:226 order/serializers.py:481
-#: stock/models.py:731 templates/js/translated/purchase_order.js:1058
+#: build/models.py:248 build/serializers.py:229 order/serializers.py:487
+#: stock/models.py:732 templates/js/translated/purchase_order.js:1048
msgid "Batch Code"
msgstr ""
-#: build/models.py:252 build/serializers.py:227
+#: build/models.py:252 build/serializers.py:230
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:255 order/models.py:209 part/models.py:1028
-#: part/templates/part/part_base.html:319
+#: build/models.py:255 order/models.py:210 part/models.py:1028
+#: part/templates/part/part_base.html:312
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:727
+#: templates/js/translated/sales_order.js:753
msgid "Creation Date"
msgstr ""
@@ -990,7 +995,7 @@ msgstr ""
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:263 order/models.py:376 order/models.py:1681
+#: build/models.py:263 order/models.py:377 order/models.py:1716
#: templates/js/translated/build.js:2700
msgid "Completion Date"
msgstr ""
@@ -1007,15 +1012,15 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:286 build/templates/build/build_base.html:193
-#: build/templates/build/detail.html:122 order/models.py:223
-#: order/templates/order/order_base.html:194
-#: order/templates/order/return_order_base.html:162
-#: order/templates/order/sales_order_base.html:193 part/models.py:1032
-#: part/templates/part/part_base.html:399
+#: build/models.py:286 build/templates/build/build_base.html:210
+#: build/templates/build/detail.html:122 order/models.py:224
+#: order/templates/order/order_base.html:213
+#: order/templates/order/return_order_base.html:183
+#: order/templates/order/sales_order_base.html:221 part/models.py:1032
+#: part/templates/part/part_base.html:392
#: report/templates/report/inventree_build_order_base.html:158
#: templates/js/translated/build.js:2672
-#: templates/js/translated/purchase_order.js:1593
+#: templates/js/translated/purchase_order.js:1660
#: templates/js/translated/return_order.js:305
#: templates/js/translated/table_filters.js:391
msgid "Responsible"
@@ -1027,9 +1032,9 @@ msgstr ""
#: build/models.py:292 build/templates/build/detail.html:108
#: company/templates/company/manufacturer_part.html:107
-#: company/templates/company/supplier_part.html:188
-#: part/templates/part/part_base.html:392 stock/models.py:725
-#: stock/templates/stock/item_base.html:206
+#: company/templates/company/supplier_part.html:182
+#: part/templates/part/part_base.html:385 stock/models.py:726
+#: stock/templates/stock/item_base.html:201
msgid "External Link"
msgstr ""
@@ -1075,11 +1080,11 @@ msgstr ""
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1209 order/models.py:1515
+#: build/models.py:1209 order/models.py:1550
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1215 order/models.py:1518
+#: build/models.py:1215 order/models.py:1553
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -1091,7 +1096,7 @@ msgstr ""
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1347 stock/templates/stock/item_base.html:175
+#: build/models.py:1347 stock/templates/stock/item_base.html:170
#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2588
#: templates/navbar.html:38
msgid "Build"
@@ -1101,19 +1106,19 @@ msgstr ""
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1364 build/serializers.py:674 order/serializers.py:1013
-#: order/serializers.py:1034 stock/serializers.py:388 stock/serializers.py:741
+#: build/models.py:1364 build/serializers.py:677 order/serializers.py:1035
+#: order/serializers.py:1056 stock/serializers.py:388 stock/serializers.py:741
#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:200
+#: stock/templates/stock/item_base.html:195
#: templates/js/translated/build.js:801 templates/js/translated/build.js:806
#: templates/js/translated/build.js:2215 templates/js/translated/build.js:2785
-#: templates/js/translated/sales_order.js:236
-#: templates/js/translated/sales_order.js:1069
-#: templates/js/translated/sales_order.js:1367
-#: templates/js/translated/sales_order.js:1372
-#: templates/js/translated/sales_order.js:1461
-#: templates/js/translated/sales_order.js:1551
+#: templates/js/translated/sales_order.js:240
+#: templates/js/translated/sales_order.js:1095
+#: templates/js/translated/sales_order.js:1394
+#: templates/js/translated/sales_order.js:1399
+#: templates/js/translated/sales_order.js:1500
+#: templates/js/translated/sales_order.js:1590
#: templates/js/translated/stock.js:623 templates/js/translated/stock.js:789
#: templates/js/translated/stock.js:2756
msgid "Stock Item"
@@ -1123,10 +1128,10 @@ msgstr ""
msgid "Source stock item"
msgstr ""
-#: build/models.py:1377 build/serializers.py:194
-#: build/templates/build/build_base.html:85
-#: build/templates/build/detail.html:34 common/models.py:2088
-#: order/models.py:1013 order/models.py:1559 order/serializers.py:1187
+#: build/models.py:1377 build/serializers.py:197
+#: build/templates/build/build_base.html:103
+#: build/templates/build/detail.html:34 common/models.py:2102
+#: order/models.py:1042 order/models.py:1594 order/serializers.py:1209
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277
#: part/forms.py:47 part/models.py:2976 part/models.py:3583
#: part/templates/part/part_pricing.html:16
@@ -1138,31 +1143,32 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
#: stock/admin.py:103 stock/serializers.py:281
-#: stock/templates/stock/item_base.html:293
-#: stock/templates/stock/item_base.html:301
+#: stock/templates/stock/item_base.html:288
+#: stock/templates/stock/item_base.html:296
+#: stock/templates/stock/item_base.html:343
#: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:504 templates/js/translated/bom.js:740
+#: templates/js/translated/barcode.js:518 templates/js/translated/bom.js:740
#: templates/js/translated/bom.js:921 templates/js/translated/build.js:477
#: templates/js/translated/build.js:638 templates/js/translated/build.js:828
#: templates/js/translated/build.js:1252 templates/js/translated/build.js:1740
#: templates/js/translated/build.js:2216
#: templates/js/translated/company.js:1406
#: templates/js/translated/model_renderers.js:201
-#: templates/js/translated/order.js:276 templates/js/translated/part.js:878
+#: templates/js/translated/order.js:279 templates/js/translated/part.js:878
#: templates/js/translated/part.js:1446 templates/js/translated/part.js:2876
#: templates/js/translated/pricing.js:363
#: templates/js/translated/pricing.js:456
#: templates/js/translated/pricing.js:504
#: templates/js/translated/pricing.js:598
-#: templates/js/translated/purchase_order.js:697
-#: templates/js/translated/purchase_order.js:1685
-#: templates/js/translated/purchase_order.js:1909
-#: templates/js/translated/sales_order.js:252
-#: templates/js/translated/sales_order.js:1070
-#: templates/js/translated/sales_order.js:1386
-#: templates/js/translated/sales_order.js:1467
-#: templates/js/translated/sales_order.js:1557
-#: templates/js/translated/sales_order.js:1688
+#: templates/js/translated/purchase_order.js:700
+#: templates/js/translated/purchase_order.js:1752
+#: templates/js/translated/purchase_order.js:1976
+#: templates/js/translated/sales_order.js:256
+#: templates/js/translated/sales_order.js:1096
+#: templates/js/translated/sales_order.js:1413
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1596
+#: templates/js/translated/sales_order.js:1716
#: templates/js/translated/stock.js:494 templates/js/translated/stock.js:648
#: templates/js/translated/stock.js:819 templates/js/translated/stock.js:2800
#: templates/js/translated/stock.js:2885
@@ -1181,255 +1187,256 @@ msgstr ""
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:145 build/serializers.py:703
+#: build/serializers.py:148 build/serializers.py:706
#: templates/js/translated/build.js:1240
msgid "Build Output"
msgstr ""
-#: build/serializers.py:157
+#: build/serializers.py:160
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:161
+#: build/serializers.py:164
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:165
+#: build/serializers.py:168
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:176
+#: build/serializers.py:179
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:195
+#: build/serializers.py:198
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:209 build/serializers.py:694 order/models.py:407
-#: order/serializers.py:354 order/serializers.py:476 part/serializers.py:1088
-#: part/serializers.py:1409 stock/models.py:585 stock/models.py:1344
+#: build/serializers.py:212 build/serializers.py:697 order/models.py:408
+#: order/serializers.py:360 order/serializers.py:482 part/serializers.py:1088
+#: part/serializers.py:1409 stock/models.py:586 stock/models.py:1370
#: stock/serializers.py:290
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:216
+#: build/serializers.py:219
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:219
+#: build/serializers.py:222
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:233 order/serializers.py:489 order/serializers.py:1191
-#: stock/serializers.py:299 templates/js/translated/purchase_order.js:1069
+#: build/serializers.py:236 order/serializers.py:495 order/serializers.py:1213
+#: stock/serializers.py:299 templates/js/translated/purchase_order.js:1072
#: templates/js/translated/stock.js:301 templates/js/translated/stock.js:495
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:234
+#: build/serializers.py:237
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:247
+#: build/serializers.py:250
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:248
+#: build/serializers.py:251
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:283 stock/api.py:647
+#: build/serializers.py:286 stock/api.py:630
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:332 build/serializers.py:401
+#: build/serializers.py:335 build/serializers.py:404
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:371 order/serializers.py:462 order/serializers.py:581
-#: order/serializers.py:1540 part/serializers.py:855 stock/serializers.py:310
+#: build/serializers.py:374 order/serializers.py:468 order/serializers.py:589
+#: order/serializers.py:1562 part/serializers.py:855 stock/serializers.py:310
#: stock/serializers.py:445 stock/serializers.py:526 stock/serializers.py:902
-#: stock/serializers.py:1144 stock/templates/stock/item_base.html:391
-#: templates/js/translated/barcode.js:503
-#: templates/js/translated/barcode.js:747 templates/js/translated/build.js:813
+#: stock/serializers.py:1144 stock/templates/stock/item_base.html:384
+#: templates/js/translated/barcode.js:517
+#: templates/js/translated/barcode.js:764 templates/js/translated/build.js:813
#: templates/js/translated/build.js:1755
-#: templates/js/translated/purchase_order.js:1096
-#: templates/js/translated/sales_order.js:1379
-#: templates/js/translated/sales_order.js:1478
-#: templates/js/translated/sales_order.js:1486
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/purchase_order.js:1097
+#: templates/js/translated/purchase_order.js:1187
+#: templates/js/translated/sales_order.js:1406
+#: templates/js/translated/sales_order.js:1517
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1604
#: templates/js/translated/stock.js:624 templates/js/translated/stock.js:790
#: templates/js/translated/stock.js:1002 templates/js/translated/stock.js:1911
#: templates/js/translated/stock.js:2663
msgid "Location"
msgstr ""
-#: build/serializers.py:372
+#: build/serializers.py:375
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:378 build/templates/build/build_base.html:145
-#: build/templates/build/detail.html:62 order/models.py:748
-#: order/models.py:1664 order/serializers.py:499 stock/admin.py:106
-#: stock/templates/stock/item_base.html:424
-#: templates/js/translated/barcode.js:236 templates/js/translated/build.js:2644
-#: templates/js/translated/purchase_order.js:1200
-#: templates/js/translated/purchase_order.js:1552
+#: build/serializers.py:381 build/templates/build/build_base.html:157
+#: build/templates/build/detail.html:62 order/models.py:760
+#: order/models.py:1699 order/serializers.py:505 stock/admin.py:106
+#: stock/templates/stock/item_base.html:417
+#: templates/js/translated/barcode.js:239 templates/js/translated/build.js:2644
+#: templates/js/translated/purchase_order.js:1227
+#: templates/js/translated/purchase_order.js:1619
#: templates/js/translated/return_order.js:277
-#: templates/js/translated/sales_order.js:719
+#: templates/js/translated/sales_order.js:745
#: templates/js/translated/stock.js:1886 templates/js/translated/stock.js:2774
#: templates/js/translated/stock.js:2901
msgid "Status"
msgstr ""
-#: build/serializers.py:384
+#: build/serializers.py:387
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:385
+#: build/serializers.py:388
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:454
+#: build/serializers.py:457
msgid "Remove Allocated Stock"
msgstr ""
-#: build/serializers.py:455
+#: build/serializers.py:458
msgid "Subtract any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:461
+#: build/serializers.py:464
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:462
+#: build/serializers.py:465
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:490
+#: build/serializers.py:493
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:491
+#: build/serializers.py:494
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:514
+#: build/serializers.py:517
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:516
+#: build/serializers.py:519
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:526
+#: build/serializers.py:529
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:531
+#: build/serializers.py:534
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:532
+#: build/serializers.py:535
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:542 templates/js/translated/build.js:265
+#: build/serializers.py:545 templates/js/translated/build.js:265
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:547 order/serializers.py:237 order/serializers.py:1081
+#: build/serializers.py:550 order/serializers.py:242 order/serializers.py:1103
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:548
+#: build/serializers.py:551
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:558 templates/js/translated/build.js:269
+#: build/serializers.py:561 templates/js/translated/build.js:269
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:567 templates/js/translated/build.js:253
+#: build/serializers.py:570 templates/js/translated/build.js:253
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:597 build/serializers.py:651 part/models.py:3490
+#: build/serializers.py:600 build/serializers.py:654 part/models.py:3490
#: part/models.py:3873
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:607
+#: build/serializers.py:610
msgid "Build output"
msgstr ""
-#: build/serializers.py:615
+#: build/serializers.py:618
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:665
+#: build/serializers.py:668
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:680 stock/serializers.py:754
+#: build/serializers.py:683 stock/serializers.py:754
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:729 order/serializers.py:1071
+#: build/serializers.py:732 order/serializers.py:1093
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:735
+#: build/serializers.py:738
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:742
+#: build/serializers.py:745
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:747
+#: build/serializers.py:750
msgid "This stock item has already been allocated to this build output"
msgstr ""
-#: build/serializers.py:770 order/serializers.py:1355
+#: build/serializers.py:773 order/serializers.py:1377
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:826
+#: build/serializers.py:829
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:834
+#: build/serializers.py:837
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:835
+#: build/serializers.py:838
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:840
+#: build/serializers.py:843
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:841
+#: build/serializers.py:844
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:846
+#: build/serializers.py:849
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:847
+#: build/serializers.py:850
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:852
+#: build/serializers.py:855
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:853
+#: build/serializers.py:856
msgid "Allocate optional BOM items to build order"
msgstr ""
@@ -1447,101 +1454,141 @@ msgid "Build order {bo} is now overdue"
msgstr ""
#: build/templates/build/build_base.html:39
-#: order/templates/order/order_base.html:28
-#: order/templates/order/return_order_base.html:38
-#: order/templates/order/sales_order_base.html:38
-msgid "Print actions"
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:29
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:43
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:54
+msgid "Barcode actions"
msgstr ""
#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:33
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:46
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:56 templates/qr_button.html:1
+msgid "Show QR Code"
+msgstr ""
+
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:36
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:58
+#: templates/js/translated/barcode.js:466
+#: templates/js/translated/barcode.js:471
+msgid "Unlink Barcode"
+msgstr ""
+
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:38
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:51
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:60
+msgid "Link Barcode"
+msgstr ""
+
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:46
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
+msgid "Print actions"
+msgstr ""
+
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:50
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:54
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:56
+#: build/templates/build/build_base.html:74
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:59
+#: build/templates/build/build_base.html:77
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:62
+#: build/templates/build/build_base.html:80
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:67
-#: build/templates/build/build_base.html:68
+#: build/templates/build/build_base.html:85
+#: build/templates/build/build_base.html:86
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:90
+#: build/templates/build/build_base.html:108
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:117
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:104
-#, python-format
-msgid "This Build Order is allocated to Sales Order %(link)s"
-msgstr ""
-
-#: build/templates/build/build_base.html:111
+#: build/templates/build/build_base.html:123
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:118
+#: build/templates/build/build_base.html:130
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:123
+#: build/templates/build/build_base.html:135
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:128
+#: build/templates/build/build_base.html:140
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:133
+#: build/templates/build/build_base.html:145
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:154
-#: build/templates/build/detail.html:138 order/models.py:205
-#: order/models.py:1033 order/templates/order/order_base.html:170
-#: order/templates/order/return_order_base.html:145
-#: order/templates/order/sales_order_base.html:164
+#: build/templates/build/build_base.html:166
+#: build/templates/build/detail.html:138 order/models.py:206
+#: order/models.py:1068 order/templates/order/order_base.html:189
+#: order/templates/order/return_order_base.html:166
+#: order/templates/order/sales_order_base.html:192
#: report/templates/report/inventree_build_order_base.html:125
#: templates/js/translated/build.js:2692 templates/js/translated/part.js:1465
-#: templates/js/translated/purchase_order.js:1569
-#: templates/js/translated/purchase_order.js:1985
+#: templates/js/translated/purchase_order.js:1636
+#: templates/js/translated/purchase_order.js:2052
#: templates/js/translated/return_order.js:293
-#: templates/js/translated/return_order.js:690
-#: templates/js/translated/sales_order.js:735
-#: templates/js/translated/sales_order.js:1731
+#: templates/js/translated/return_order.js:693
+#: templates/js/translated/sales_order.js:761
+#: templates/js/translated/sales_order.js:1759
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:159
+#: build/templates/build/build_base.html:171
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:159
-#: build/templates/build/build_base.html:211
-#: order/templates/order/order_base.html:106
-#: order/templates/order/return_order_base.html:98
-#: order/templates/order/sales_order_base.html:94
+#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:228
+#: order/templates/order/order_base.html:125
+#: order/templates/order/return_order_base.html:119
+#: order/templates/order/sales_order_base.html:122
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:384
#: templates/js/translated/table_filters.js:444
@@ -1549,43 +1596,51 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:166
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:67 build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:174
+#: order/templates/order/sales_order_base.html:202
#: templates/js/translated/table_filters.js:487
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:179
-#: build/templates/build/detail.html:101 order/api.py:1516 order/models.py:1232
-#: order/models.py:1331 order/models.py:1465
+#: build/templates/build/build_base.html:196
+#: build/templates/build/detail.html:101 order/api.py:1422 order/models.py:1267
+#: order/models.py:1366 order/models.py:1500
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:135
#: report/templates/report/inventree_so_report_base.html:14
-#: stock/templates/stock/item_base.html:371
+#: stock/templates/stock/item_base.html:364
#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/pricing.js:894
-#: templates/js/translated/sales_order.js:681
+#: templates/js/translated/sales_order.js:707
#: templates/js/translated/stock.js:2703
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:186
+#: build/templates/build/build_base.html:203
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_base.html:152
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:200
+#: build/templates/build/build_base.html:217
#: build/templates/build/detail.html:94 templates/js/translated/build.js:2609
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:263
+#: build/templates/build/build_base.html:280
msgid "Delete Build Order"
msgstr ""
+#: build/templates/build/build_base.html:290
+msgid "Build Order QR Code"
+msgstr ""
+
+#: build/templates/build/build_base.html:302
+msgid "Link Barcode to Build Order"
+msgstr ""
+
#: build/templates/build/detail.html:15
msgid "Build Details"
msgstr ""
@@ -1598,9 +1653,8 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1150
-#: templates/js/translated/purchase_order.js:1201
-#: templates/js/translated/purchase_order.js:2027
+#: build/templates/build/detail.html:49 order/models.py:1185
+#: templates/js/translated/purchase_order.js:2094
msgid "Destination"
msgstr ""
@@ -1613,9 +1667,10 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:80 stock/admin.py:105
-#: stock/templates/stock/item_base.html:168
+#: stock/templates/stock/item_base.html:163
#: templates/js/translated/build.js:1259
#: templates/js/translated/model_renderers.js:206
+#: templates/js/translated/purchase_order.js:1193
#: templates/js/translated/stock.js:1072 templates/js/translated/stock.js:1900
#: templates/js/translated/stock.js:2908
#: templates/js/translated/table_filters.js:211
@@ -1624,9 +1679,9 @@ msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:157
-#: order/templates/order/return_order_base.html:132
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/order_base.html:176
+#: order/templates/order/return_order_base.html:153
+#: order/templates/order/sales_order_base.html:186
#: templates/js/translated/build.js:2652
msgid "Created"
msgstr ""
@@ -1679,7 +1734,7 @@ msgstr ""
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:86
#: part/templates/part/category.html:184
-#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:740
msgid "Order Parts"
msgstr ""
@@ -1779,23 +1834,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -2680,7 +2736,7 @@ msgstr ""
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1670 common/models.py:2049
+#: common/models.py:1670 common/models.py:2063
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -3001,89 +3057,105 @@ msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:1983
-msgid "Show Quantity in Forms"
+msgid "Regex Search"
msgstr ""
#: common/models.py:1984
-msgid "Display available part quantity in some forms"
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:1990
-msgid "Escape Key Closes Forms"
+msgid "Whole Word Search"
msgstr ""
#: common/models.py:1991
-msgid "Use the escape key to close modal forms"
+msgid "Search queries return results for whole word matches"
msgstr ""
#: common/models.py:1997
-msgid "Fixed Navbar"
+msgid "Show Quantity in Forms"
msgstr ""
#: common/models.py:1998
-msgid "The navbar position is fixed to the top of the screen"
+msgid "Display available part quantity in some forms"
msgstr ""
#: common/models.py:2004
-msgid "Date Format"
+msgid "Escape Key Closes Forms"
msgstr ""
#: common/models.py:2005
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2011
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2012
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2018
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2019
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2019 part/templates/part/detail.html:41
+#: common/models.py:2033 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2020
+#: common/models.py:2034
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2026 part/templates/part/detail.html:62
+#: common/models.py:2040 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2027
+#: common/models.py:2041
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2033
+#: common/models.py:2047
msgid "Table String Length"
msgstr ""
-#: common/models.py:2034
+#: common/models.py:2048
msgid "Maximimum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2103
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2096 company/serializers.py:424 order/models.py:1060
-#: order/models.py:1852 templates/js/translated/company.js:1411
+#: common/models.py:2110 company/serializers.py:424 order/models.py:1095
+#: order/models.py:1888 templates/js/translated/company.js:1411
#: templates/js/translated/part.js:1520 templates/js/translated/pricing.js:603
-#: templates/js/translated/return_order.js:680
+#: templates/js/translated/return_order.js:683
msgid "Price"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2111
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2257 common/models.py:2435
+#: common/models.py:2271 common/models.py:2449
msgid "Endpoint"
msgstr ""
-#: common/models.py:2258
+#: common/models.py:2272
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2281
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2272 part/admin.py:50 part/models.py:1011
+#: common/models.py:2286 part/admin.py:50 part/models.py:1011
#: plugin/models.py:100 templates/js/translated/table_filters.js:62
#: templates/js/translated/table_filters.js:144
#: templates/js/translated/table_filters.js:380
@@ -3091,97 +3163,97 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2287
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2287
+#: common/models.py:2301
msgid "Token"
msgstr ""
-#: common/models.py:2288
+#: common/models.py:2302
msgid "Token for access"
msgstr ""
-#: common/models.py:2295
+#: common/models.py:2309
msgid "Secret"
msgstr ""
-#: common/models.py:2296
+#: common/models.py:2310
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2402
+#: common/models.py:2416
msgid "Message ID"
msgstr ""
-#: common/models.py:2403
+#: common/models.py:2417
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2425
msgid "Host"
msgstr ""
-#: common/models.py:2412
+#: common/models.py:2426
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2433
msgid "Header"
msgstr ""
-#: common/models.py:2420
+#: common/models.py:2434
msgid "Header of this message"
msgstr ""
-#: common/models.py:2426
+#: common/models.py:2440
msgid "Body"
msgstr ""
-#: common/models.py:2427
+#: common/models.py:2441
msgid "Body of this message"
msgstr ""
-#: common/models.py:2436
+#: common/models.py:2450
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2441
+#: common/models.py:2455
msgid "Worked on"
msgstr ""
-#: common/models.py:2442
+#: common/models.py:2456
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2596
+#: common/models.py:2610
msgid "Id"
msgstr ""
-#: common/models.py:2602 templates/js/translated/news.js:35
+#: common/models.py:2616 templates/js/translated/news.js:35
msgid "Title"
msgstr ""
-#: common/models.py:2612 templates/js/translated/news.js:51
+#: common/models.py:2626 templates/js/translated/news.js:51
msgid "Published"
msgstr ""
-#: common/models.py:2617 templates/InvenTree/settings/plugin.html:62
+#: common/models.py:2631 templates/InvenTree/settings/plugin.html:62
#: templates/InvenTree/settings/plugin_settings.html:33
#: templates/js/translated/news.js:47
msgid "Author"
msgstr ""
-#: common/models.py:2622 templates/js/translated/news.js:43
+#: common/models.py:2636 templates/js/translated/news.js:43
msgid "Summary"
msgstr ""
-#: common/models.py:2627
+#: common/models.py:2641
msgid "Read"
msgstr ""
-#: common/models.py:2628
+#: common/models.py:2642
msgid "Was this news item read?"
msgstr ""
@@ -3293,9 +3365,9 @@ msgid "Contact email address"
msgstr ""
#: company/models.py:126 company/templates/company/company_base.html:140
-#: order/models.py:231 order/templates/order/order_base.html:187
-#: order/templates/order/return_order_base.html:155
-#: order/templates/order/sales_order_base.html:186
+#: order/models.py:232 order/templates/order/order_base.html:206
+#: order/templates/order/return_order_base.html:176
+#: order/templates/order/sales_order_base.html:214
msgid "Contact"
msgstr ""
@@ -3349,7 +3421,7 @@ msgstr ""
msgid "Company"
msgstr ""
-#: company/models.py:277 company/models.py:512 stock/models.py:667
+#: company/models.py:277 company/models.py:512 stock/models.py:668
#: stock/serializers.py:143 stock/templates/stock/item_base.html:143
#: templates/js/translated/bom.js:591
msgid "Base Part"
@@ -3361,8 +3433,8 @@ msgstr ""
#: company/models.py:292 company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:152 part/serializers.py:359
-#: stock/templates/stock/item_base.html:213
+#: company/templates/company/supplier_part.html:146 part/serializers.py:359
+#: stock/templates/stock/item_base.html:208
#: templates/js/translated/company.js:484
#: templates/js/translated/company.js:809
#: templates/js/translated/company.js:939
@@ -3376,13 +3448,13 @@ msgid "Select manufacturer"
msgstr ""
#: company/models.py:299 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:160 part/serializers.py:365
+#: company/templates/company/supplier_part.html:154 part/serializers.py:365
#: templates/js/translated/company.js:325
#: templates/js/translated/company.js:808
#: templates/js/translated/company.js:955
#: templates/js/translated/company.js:1225 templates/js/translated/part.js:1435
-#: templates/js/translated/purchase_order.js:1684
-#: templates/js/translated/purchase_order.js:1891
+#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1958
msgid "MPN"
msgstr ""
@@ -3401,7 +3473,7 @@ msgstr ""
#: company/models.py:357 company/models.py:381 company/models.py:535
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:223
+#: stock/templates/stock/item_base.html:218
msgid "Manufacturer Part"
msgstr ""
@@ -3411,7 +3483,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2195 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3422,7 +3494,7 @@ msgid "Parameter value"
msgstr ""
#: company/models.py:401 part/admin.py:40 part/models.py:978
-#: part/models.py:3337 part/templates/part/part_base.html:287
+#: part/models.py:3337 part/templates/part/part_base.html:286
#: templates/InvenTree/settings/settings_staff_js.html:255
#: templates/js/translated/company.js:1068 templates/js/translated/part.js:1274
msgid "Units"
@@ -3437,15 +3509,15 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:522 company/templates/company/company_base.html:82
-#: company/templates/company/supplier_part.html:136 order/models.py:349
-#: order/templates/order/order_base.html:120 part/bom.py:285 part/bom.py:313
-#: part/serializers.py:348 stock/templates/stock/item_base.html:230
+#: company/templates/company/supplier_part.html:130 order/models.py:350
+#: order/templates/order/order_base.html:139 part/bom.py:285 part/bom.py:313
+#: part/serializers.py:348 stock/templates/stock/item_base.html:225
#: templates/email/overdue_purchase_order.html:16
#: templates/js/translated/company.js:324
#: templates/js/translated/company.js:488
#: templates/js/translated/company.js:1179 templates/js/translated/part.js:1403
#: templates/js/translated/pricing.js:480
-#: templates/js/translated/purchase_order.js:1535
+#: templates/js/translated/purchase_order.js:1602
#: templates/js/translated/table_filters.js:510
msgid "Supplier"
msgstr ""
@@ -3454,12 +3526,12 @@ msgstr ""
msgid "Select supplier"
msgstr ""
-#: company/models.py:528 company/templates/company/supplier_part.html:146
+#: company/models.py:528 company/templates/company/supplier_part.html:140
#: part/bom.py:286 part/bom.py:314 part/serializers.py:354
#: templates/js/translated/company.js:323 templates/js/translated/part.js:1421
#: templates/js/translated/pricing.js:492
-#: templates/js/translated/purchase_order.js:1683
-#: templates/js/translated/purchase_order.js:1866
+#: templates/js/translated/purchase_order.js:1750
+#: templates/js/translated/purchase_order.js:1933
msgid "SKU"
msgstr ""
@@ -3479,7 +3551,7 @@ msgstr ""
msgid "Supplier part description"
msgstr ""
-#: company/models.py:553 company/templates/company/supplier_part.html:181
+#: company/models.py:553 company/templates/company/supplier_part.html:175
#: part/admin.py:279 part/models.py:3605 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
@@ -3497,9 +3569,9 @@ msgstr ""
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:559 company/templates/company/supplier_part.html:167
-#: stock/admin.py:119 stock/models.py:693
-#: stock/templates/stock/item_base.html:246
+#: company/models.py:559 company/templates/company/supplier_part.html:161
+#: stock/admin.py:119 stock/models.py:694
+#: stock/templates/stock/item_base.html:241
#: templates/js/translated/company.js:1241
#: templates/js/translated/stock.js:2130
msgid "Packaging"
@@ -3510,14 +3582,14 @@ msgid "Part packaging"
msgstr ""
#: company/models.py:562 company/serializers.py:319
-#: company/templates/company/supplier_part.html:174
+#: company/templates/company/supplier_part.html:168
#: templates/js/translated/company.js:1246 templates/js/translated/part.js:1456
#: templates/js/translated/part.js:1512
#: templates/js/translated/purchase_order.js:250
-#: templates/js/translated/purchase_order.js:775
-#: templates/js/translated/purchase_order.js:1032
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:1939
+#: templates/js/translated/purchase_order.js:778
+#: templates/js/translated/purchase_order.js:1022
+#: templates/js/translated/purchase_order.js:1989
+#: templates/js/translated/purchase_order.js:2006
msgid "Pack Quantity"
msgstr ""
@@ -3603,15 +3675,15 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:87 order/models.py:736
-#: order/models.py:1652 order/templates/order/return_order_base.html:112
-#: order/templates/order/sales_order_base.html:116 stock/models.py:712
-#: stock/models.py:713 stock/serializers.py:796
-#: stock/templates/stock/item_base.html:402
+#: company/templates/company/company_base.html:87 order/models.py:748
+#: order/models.py:1687 order/templates/order/return_order_base.html:133
+#: order/templates/order/sales_order_base.html:144 stock/models.py:713
+#: stock/models.py:714 stock/serializers.py:796
+#: stock/templates/stock/item_base.html:395
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:480
#: templates/js/translated/return_order.js:254
-#: templates/js/translated/sales_order.js:696
+#: templates/js/translated/sales_order.js:722
#: templates/js/translated/stock.js:2738
#: templates/js/translated/table_filters.js:514
msgid "Customer"
@@ -3626,7 +3698,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:206
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:529
msgid "Remove Image"
msgstr ""
@@ -3635,25 +3707,25 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:209
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:532
#: templates/InvenTree/settings/user.html:87
#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:238
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:561
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:253
-#: part/templates/part/part_base.html:623
+#: part/templates/part/part_base.html:616
msgid "Download Image"
msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:120 templates/js/translated/search.js:175
+#: templates/InvenTree/search.html:120 templates/js/translated/search.js:177
msgid "Supplier Parts"
msgstr ""
@@ -3684,7 +3756,7 @@ msgid "Delete Parts"
msgstr ""
#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105
-#: templates/js/translated/search.js:179
+#: templates/js/translated/search.js:181
msgid "Manufacturer Parts"
msgstr ""
@@ -3709,7 +3781,7 @@ msgstr ""
#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:200
#: templates/InvenTree/settings/sidebar.html:51
-#: templates/js/translated/search.js:233 templates/navbar.html:50
+#: templates/js/translated/search.js:235 templates/navbar.html:50
#: users/models.py:43
msgid "Purchase Orders"
msgstr ""
@@ -3732,7 +3804,7 @@ msgstr ""
#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:220
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/search.js:247 templates/navbar.html:62
+#: templates/js/translated/search.js:249 templates/navbar.html:62
#: users/models.py:44
msgid "Sales Orders"
msgstr ""
@@ -3758,7 +3830,7 @@ msgstr ""
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:260 templates/navbar.html:65
+#: templates/js/translated/search.js:262 templates/navbar.html:65
#: users/models.py:45
msgid "Return Orders"
msgstr ""
@@ -3792,7 +3864,7 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:221
+#: company/templates/company/supplier_part.html:215
#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85
msgid "Order part"
msgstr ""
@@ -3832,8 +3904,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -3881,50 +3953,21 @@ msgid "Contacts"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:676
-#: stock/templates/stock/item_base.html:239
+#: company/templates/company/supplier_part.html:24 stock/models.py:677
+#: stock/templates/stock/item_base.html:234
#: templates/js/translated/company.js:1195
-#: templates/js/translated/purchase_order.js:695
+#: templates/js/translated/purchase_order.js:698
#: templates/js/translated/stock.js:1990
msgid "Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:36
-#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:41
-#: stock/templates/stock/location.html:54
-msgid "Barcode actions"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:40
-#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:45
-#: stock/templates/stock/location.html:56 templates/qr_button.html:1
-msgid "Show QR Code"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:42
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:58
-#: templates/js/translated/barcode.js:453
-#: templates/js/translated/barcode.js:458
-msgid "Unlink Barcode"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:44
-#: part/templates/part/part_base.html:51
-#: stock/templates/stock/item_base.html:50
-#: stock/templates/stock/location.html:60
-msgid "Link Barcode"
-msgstr ""
-
#: company/templates/company/supplier_part.html:51
msgid "Supplier part actions"
msgstr ""
#: company/templates/company/supplier_part.html:56
#: company/templates/company/supplier_part.html:57
-#: company/templates/company/supplier_part.html:222
+#: company/templates/company/supplier_part.html:216
#: part/templates/part/detail.html:112
msgid "Order Part"
msgstr ""
@@ -3954,67 +3997,60 @@ msgstr ""
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:122
-#: part/templates/part/part_base.html:308
-#: stock/templates/stock/item_base.html:161
-#: stock/templates/stock/location.html:156
-msgid "Barcode Identifier"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:140
+#: company/templates/company/supplier_part.html:134
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:200
+#: company/templates/company/supplier_part.html:194
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:203
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:203
+#: company/templates/company/supplier_part.html:197
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:204
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:198
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198
#: templates/js/translated/stock.js:471
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:217
+#: company/templates/company/supplier_part.html:211
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:242
+#: company/templates/company/supplier_part.html:236
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:247
+#: company/templates/company/supplier_part.html:241
#: templates/js/translated/company.js:373
#: templates/js/translated/pricing.js:666
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:274
+#: company/templates/company/supplier_part.html:268
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:285
+#: company/templates/company/supplier_part.html:279
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:360
+#: company/templates/company/supplier_part.html:354
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:288
#: part/templates/part/category.html:199
#: part/templates/part/category_sidebar.html:17 stock/admin.py:47
-#: stock/templates/stock/location.html:174
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:182
+#: stock/templates/stock/location.html:194
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:977
-#: templates/js/translated/search.js:200 templates/js/translated/stock.js:2569
+#: templates/js/translated/search.js:202 templates/js/translated/stock.js:2569
#: users/models.py:41
msgid "Stock Items"
msgstr ""
@@ -4040,7 +4076,7 @@ msgstr ""
msgid "New Customer"
msgstr ""
-#: company/views.py:52 templates/js/translated/search.js:220
+#: company/views.py:52 templates/js/translated/search.js:222
msgid "Companies"
msgstr ""
@@ -4114,365 +4150,365 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
-#: order/api.py:229
+#: order/api.py:225
msgid "No matching purchase order found"
msgstr ""
-#: order/api.py:1514 order/models.py:1106 order/models.py:1190
+#: order/api.py:1420 order/models.py:1141 order/models.py:1225
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report_base.html:14
-#: stock/templates/stock/item_base.html:182
+#: stock/templates/stock/item_base.html:177
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1380 templates/js/translated/pricing.js:772
#: templates/js/translated/purchase_order.js:108
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1519
+#: templates/js/translated/purchase_order.js:699
+#: templates/js/translated/purchase_order.js:1586
#: templates/js/translated/stock.js:1970 templates/js/translated/stock.js:2685
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1518
+#: order/api.py:1424
msgid "Unknown"
msgstr ""
-#: order/models.py:66 report/templates/report/inventree_po_report_base.html:31
+#: order/models.py:67 report/templates/report/inventree_po_report_base.html:31
#: report/templates/report/inventree_so_report_base.html:31
-#: templates/js/translated/order.js:299
-#: templates/js/translated/purchase_order.js:1963
-#: templates/js/translated/sales_order.js:1711
+#: templates/js/translated/order.js:302
+#: templates/js/translated/purchase_order.js:2030
+#: templates/js/translated/sales_order.js:1739
msgid "Total Price"
msgstr ""
-#: order/models.py:67
+#: order/models.py:68
msgid "Total price for this order"
msgstr ""
-#: order/models.py:177
+#: order/models.py:178
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:199
-msgid "Order description"
+#: order/models.py:200
+msgid "Order description (optional)"
msgstr ""
-#: order/models.py:201 order/models.py:1378 order/models.py:1856
+#: order/models.py:202 order/models.py:1063 order/models.py:1413
msgid "Link to external page"
msgstr ""
-#: order/models.py:206
+#: order/models.py:207
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:215
+#: order/models.py:216
msgid "Created By"
msgstr ""
-#: order/models.py:222
+#: order/models.py:223
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:232
+#: order/models.py:233
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:236
+#: order/models.py:237
msgid "Order notes"
msgstr ""
-#: order/models.py:327 order/models.py:723
+#: order/models.py:328 order/models.py:735
msgid "Order reference"
msgstr ""
-#: order/models.py:335 order/models.py:748
+#: order/models.py:336 order/models.py:760
msgid "Purchase order status"
msgstr ""
-#: order/models.py:350
+#: order/models.py:351
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:358 order/templates/order/order_base.html:132
-#: templates/js/translated/purchase_order.js:1544
+#: order/models.py:359 order/templates/order/order_base.html:151
+#: templates/js/translated/purchase_order.js:1611
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:358
+#: order/models.py:359
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:365
+#: order/models.py:366
msgid "received by"
msgstr ""
-#: order/models.py:370 order/models.py:1675
+#: order/models.py:371 order/models.py:1710
msgid "Issue Date"
msgstr ""
-#: order/models.py:371 order/models.py:1676
+#: order/models.py:372 order/models.py:1711
msgid "Date order was issued"
msgstr ""
-#: order/models.py:377 order/models.py:1682
+#: order/models.py:378 order/models.py:1717
msgid "Date order was completed"
msgstr ""
-#: order/models.py:412
+#: order/models.py:413
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:560
+#: order/models.py:566
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:737
+#: order/models.py:749
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:756 order/models.py:1669
+#: order/models.py:768 order/models.py:1704
msgid "Customer Reference "
msgstr ""
-#: order/models.py:756 order/models.py:1670
+#: order/models.py:768 order/models.py:1705
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:758 order/models.py:1336
-#: templates/js/translated/sales_order.js:743
-#: templates/js/translated/sales_order.js:906
+#: order/models.py:770 order/models.py:1371
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:932
msgid "Shipment Date"
msgstr ""
-#: order/models.py:765
+#: order/models.py:777
msgid "shipped by"
msgstr ""
-#: order/models.py:809
+#: order/models.py:826
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:813
-msgid "Only a pending order can be marked as complete"
+#: order/models.py:830
+msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:816 templates/js/translated/sales_order.js:437
+#: order/models.py:833 templates/js/translated/sales_order.js:441
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:819
+#: order/models.py:836
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1014
+#: order/models.py:1043
msgid "Item quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1056
msgid "Line item reference"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1058
msgid "Line item notes"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1069
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1051
+#: order/models.py:1086
msgid "Context"
msgstr ""
-#: order/models.py:1052
+#: order/models.py:1087
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1061
+#: order/models.py:1096
msgid "Unit price"
msgstr ""
-#: order/models.py:1091
+#: order/models.py:1126
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1099
+#: order/models.py:1134
msgid "deleted"
msgstr ""
-#: order/models.py:1105 order/models.py:1190 order/models.py:1231
-#: order/models.py:1330 order/models.py:1465 order/models.py:1821
-#: order/models.py:1870 templates/js/translated/sales_order.js:1357
+#: order/models.py:1140 order/models.py:1225 order/models.py:1266
+#: order/models.py:1365 order/models.py:1500 order/models.py:1857
+#: order/models.py:1904 templates/js/translated/sales_order.js:1383
msgid "Order"
msgstr ""
-#: order/models.py:1124
+#: order/models.py:1159
msgid "Supplier part"
msgstr ""
-#: order/models.py:1131 order/templates/order/order_base.html:180
+#: order/models.py:1166 order/templates/order/order_base.html:199
#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1536
-#: templates/js/translated/purchase_order.js:1198
-#: templates/js/translated/purchase_order.js:2007
-#: templates/js/translated/return_order.js:703
+#: templates/js/translated/purchase_order.js:1225
+#: templates/js/translated/purchase_order.js:2074
+#: templates/js/translated/return_order.js:706
#: templates/js/translated/table_filters.js:48
#: templates/js/translated/table_filters.js:421
msgid "Received"
msgstr ""
-#: order/models.py:1132
+#: order/models.py:1167
msgid "Number of items received"
msgstr ""
-#: order/models.py:1139 stock/models.py:809 stock/serializers.py:229
-#: stock/templates/stock/item_base.html:189
+#: order/models.py:1174 stock/models.py:810 stock/serializers.py:229
+#: stock/templates/stock/item_base.html:184
#: templates/js/translated/stock.js:2021
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1140
+#: order/models.py:1175
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1188
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1219
+#: order/models.py:1254
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1224
+#: order/models.py:1259
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1250 part/templates/part/part_pricing.html:107
+#: order/models.py:1285 part/templates/part/part_pricing.html:107
#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:922
msgid "Sale Price"
msgstr ""
-#: order/models.py:1251
+#: order/models.py:1286
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1261
+#: order/models.py:1296
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1337
+#: order/models.py:1372
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1344
+#: order/models.py:1379
msgid "Checked By"
msgstr ""
-#: order/models.py:1345
+#: order/models.py:1380
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1352 order/models.py:1541 order/serializers.py:1202
-#: order/serializers.py:1330 templates/js/translated/model_renderers.js:403
+#: order/models.py:1387 order/models.py:1576 order/serializers.py:1224
+#: order/serializers.py:1352 templates/js/translated/model_renderers.js:409
msgid "Shipment"
msgstr ""
-#: order/models.py:1353
+#: order/models.py:1388
msgid "Shipment number"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1392
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1363
+#: order/models.py:1398
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1364
+#: order/models.py:1399
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1371
+#: order/models.py:1406
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1372
+#: order/models.py:1407
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1390
+#: order/models.py:1425
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1428
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1500 order/models.py:1502
+#: order/models.py:1535 order/models.py:1537
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1506
+#: order/models.py:1541
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1508
+#: order/models.py:1543
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1511
+#: order/models.py:1546
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1521 order/serializers.py:1064
+#: order/models.py:1556 order/serializers.py:1086
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1524
+#: order/models.py:1559
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1525
+#: order/models.py:1560
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1533
+#: order/models.py:1568
msgid "Line"
msgstr ""
-#: order/models.py:1542
+#: order/models.py:1577
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1555 order/models.py:1829
-#: templates/js/translated/return_order.js:661
+#: order/models.py:1590 order/models.py:1865
+#: templates/js/translated/return_order.js:664
msgid "Item"
msgstr ""
-#: order/models.py:1556
+#: order/models.py:1591
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1559
+#: order/models.py:1594
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:1639
+#: order/models.py:1674
msgid "Return Order reference"
msgstr ""
-#: order/models.py:1653
+#: order/models.py:1688
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:1664
+#: order/models.py:1699
msgid "Return order status"
msgstr ""
-#: order/models.py:1814
+#: order/models.py:1850
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:1822 order/models.py:1870
+#: order/models.py:1858 order/models.py:1904
#: order/templates/order/return_order_base.html:9
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
@@ -4481,164 +4517,168 @@ msgstr ""
msgid "Return Order"
msgstr ""
-#: order/models.py:1830
+#: order/models.py:1866
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:1835
+#: order/models.py:1871
msgid "Received Date"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1872
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:1847 templates/js/translated/return_order.js:672
+#: order/models.py:1883 templates/js/translated/return_order.js:675
#: templates/js/translated/table_filters.js:51
msgid "Outcome"
msgstr ""
-#: order/models.py:1847
+#: order/models.py:1883
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:1853
+#: order/models.py:1889
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/serializers.py:223
+#: order/serializers.py:228
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:238 order/serializers.py:1082
+#: order/serializers.py:243 order/serializers.py:1104
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:249 order/serializers.py:1093
+#: order/serializers.py:254 order/serializers.py:1115
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:361
+#: order/serializers.py:367
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:379
+#: order/serializers.py:385
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:397
+#: order/serializers.py:403
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:402
+#: order/serializers.py:408
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:408
+#: order/serializers.py:414
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:409
+#: order/serializers.py:415
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:447 order/serializers.py:1170
+#: order/serializers.py:453 order/serializers.py:1192
msgid "Line Item"
msgstr ""
-#: order/serializers.py:453
+#: order/serializers.py:459
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:463 order/serializers.py:582 order/serializers.py:1541
+#: order/serializers.py:469 order/serializers.py:590 order/serializers.py:1563
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:482 templates/js/translated/purchase_order.js:1059
+#: order/serializers.py:488 templates/js/translated/purchase_order.js:1049
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:490 templates/js/translated/purchase_order.js:1070
+#: order/serializers.py:496 templates/js/translated/purchase_order.js:1073
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:504
-msgid "Unique identifier field"
+#: order/serializers.py:509 templates/js/translated/barcode.js:41
+msgid "Barcode"
msgstr ""
-#: order/serializers.py:518
+#: order/serializers.py:510
+msgid "Scanned barcode"
+msgstr ""
+
+#: order/serializers.py:526
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:544
+#: order/serializers.py:552
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:598 order/serializers.py:1556
+#: order/serializers.py:606 order/serializers.py:1578
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:615
+#: order/serializers.py:623
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:626
+#: order/serializers.py:634
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:907
+#: order/serializers.py:929
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:962
+#: order/serializers.py:984
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1025 order/serializers.py:1179
+#: order/serializers.py:1047 order/serializers.py:1201
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1047
+#: order/serializers.py:1069
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1192
+#: order/serializers.py:1214
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1214 order/serializers.py:1338
+#: order/serializers.py:1236 order/serializers.py:1360
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1217 order/serializers.py:1341
+#: order/serializers.py:1239 order/serializers.py:1363
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1271
+#: order/serializers.py:1293
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1281
+#: order/serializers.py:1303
msgid "The following serial numbers are already allocated"
msgstr ""
-#: order/serializers.py:1507
+#: order/serializers.py:1529
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1514
+#: order/serializers.py:1536
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1517
+#: order/serializers.py:1539
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1549
+#: order/serializers.py:1571
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1629
+#: order/serializers.py:1652
msgid "Line price currency"
msgstr ""
@@ -4660,113 +4700,123 @@ msgstr ""
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:33
+#: order/templates/order/order_base.html:51
msgid "Print purchase order report"
msgstr ""
-#: order/templates/order/order_base.html:35
-#: order/templates/order/return_order_base.html:45
-#: order/templates/order/sales_order_base.html:45
+#: order/templates/order/order_base.html:53
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
msgid "Export order to file"
msgstr ""
-#: order/templates/order/order_base.html:41
-#: order/templates/order/return_order_base.html:55
-#: order/templates/order/sales_order_base.html:54
+#: order/templates/order/order_base.html:59
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
msgid "Order actions"
msgstr ""
-#: order/templates/order/order_base.html:46
-#: order/templates/order/return_order_base.html:59
-#: order/templates/order/sales_order_base.html:58
+#: order/templates/order/order_base.html:64
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:50
-#: order/templates/order/return_order_base.html:61
-#: order/templates/order/sales_order_base.html:61
+#: order/templates/order/order_base.html:68
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:55
+#: order/templates/order/order_base.html:73
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:61
-#: order/templates/order/order_base.html:62
-#: order/templates/order/return_order_base.html:65
-#: order/templates/order/return_order_base.html:66
-msgid "Submit Order"
+#: order/templates/order/order_base.html:79
+#: order/templates/order/order_base.html:80
+#: order/templates/order/return_order_base.html:83
+#: order/templates/order/return_order_base.html:84
+#: order/templates/order/sales_order_base.html:84
+#: order/templates/order/sales_order_base.html:85
+msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:65
+#: order/templates/order/order_base.html:83
msgid "Receive items"
msgstr ""
-#: order/templates/order/order_base.html:67
+#: order/templates/order/order_base.html:85
msgid "Receive Items"
msgstr ""
-#: order/templates/order/order_base.html:69
-#: order/templates/order/return_order_base.html:69
+#: order/templates/order/order_base.html:87
+#: order/templates/order/return_order_base.html:87
msgid "Mark order as complete"
msgstr ""
-#: order/templates/order/order_base.html:70
-#: order/templates/order/return_order_base.html:70
-#: order/templates/order/sales_order_base.html:68
+#: order/templates/order/order_base.html:88
+#: order/templates/order/return_order_base.html:88
+#: order/templates/order/sales_order_base.html:94
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:92
-#: order/templates/order/return_order_base.html:84
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:110
+#: order/templates/order/return_order_base.html:102
+#: order/templates/order/sales_order_base.html:107
msgid "Order Reference"
msgstr ""
-#: order/templates/order/order_base.html:97
-#: order/templates/order/return_order_base.html:89
-#: order/templates/order/sales_order_base.html:85
+#: order/templates/order/order_base.html:115
+#: order/templates/order/return_order_base.html:107
+#: order/templates/order/sales_order_base.html:112
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:102
-#: order/templates/order/return_order_base.html:94
-#: order/templates/order/sales_order_base.html:90
+#: order/templates/order/order_base.html:121
+#: order/templates/order/return_order_base.html:115
+#: order/templates/order/sales_order_base.html:118
msgid "Order Status"
msgstr ""
-#: order/templates/order/order_base.html:125
+#: order/templates/order/order_base.html:144
msgid "No suppplier information available"
msgstr ""
-#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:129
+#: order/templates/order/order_base.html:157
+#: order/templates/order/sales_order_base.html:157
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:144
-#: order/templates/order/sales_order_base.html:135
-#: order/templates/order/sales_order_base.html:145
+#: order/templates/order/order_base.html:163
+#: order/templates/order/sales_order_base.html:163
+#: order/templates/order/sales_order_base.html:173
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:163
-#: order/templates/order/return_order_base.html:138
+#: order/templates/order/order_base.html:182
+#: order/templates/order/return_order_base.html:159
#: report/templates/report/inventree_build_order_base.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:201
+#: order/templates/order/order_base.html:220
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:205
-#: order/templates/order/return_order_base.html:173
-#: order/templates/order/sales_order_base.html:204
+#: order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:194
+#: order/templates/order/sales_order_base.html:232
msgid "Total cost could not be calculated"
msgstr ""
+#: order/templates/order/order_base.html:330
+msgid "Purchase Order QR Code"
+msgstr ""
+
+#: order/templates/order/order_base.html:342
+msgid "Link Barcode to Purchase Order"
+msgstr ""
+
#: order/templates/order/order_wizard/match_fields.html:9
#: part/templates/part/import_wizard/ajax_match_fields.html:9
#: part/templates/part/import_wizard/match_fields.html:9
@@ -4818,10 +4868,10 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/bom.js:102 templates/js/translated/build.js:485
#: templates/js/translated/build.js:646 templates/js/translated/build.js:2097
-#: templates/js/translated/purchase_order.js:640
-#: templates/js/translated/purchase_order.js:1144
-#: templates/js/translated/return_order.js:449
-#: templates/js/translated/sales_order.js:979
+#: templates/js/translated/purchase_order.js:643
+#: templates/js/translated/purchase_order.js:1155
+#: templates/js/translated/return_order.js:452
+#: templates/js/translated/sales_order.js:1005
#: templates/js/translated/stock.js:660 templates/js/translated/stock.js:829
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -4883,9 +4933,9 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:28
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:367
-#: templates/js/translated/return_order.js:402
-#: templates/js/translated/sales_order.js:175
+#: templates/js/translated/purchase_order.js:370
+#: templates/js/translated/return_order.js:405
+#: templates/js/translated/sales_order.js:179
msgid "Add Line Item"
msgstr ""
@@ -4923,63 +4973,79 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:43
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:47
-#: order/templates/order/sales_order_base.html:47
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:119
-#: order/templates/order/sales_order_base.html:123
+#: order/templates/order/return_order_base.html:140
+#: order/templates/order/sales_order_base.html:151
#: templates/js/translated/return_order.js:267
-#: templates/js/translated/sales_order.js:709
+#: templates/js/translated/sales_order.js:735
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:169
-#: order/templates/order/sales_order_base.html:200
+#: order/templates/order/return_order_base.html:190
+#: order/templates/order/sales_order_base.html:228
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
#: part/templates/part/part_pricing.html:99
#: part/templates/part/part_pricing.html:114
#: templates/js/translated/part.js:989
-#: templates/js/translated/purchase_order.js:1582
+#: templates/js/translated/purchase_order.js:1649
#: templates/js/translated/return_order.js:327
-#: templates/js/translated/sales_order.js:755
+#: templates/js/translated/sales_order.js:781
msgid "Total Cost"
msgstr ""
+#: order/templates/order/return_order_base.html:258
+msgid "Return Order QR Code"
+msgstr ""
+
+#: order/templates/order/return_order_base.html:270
+msgid "Link Barcode to Return Order"
+msgstr ""
+
#: order/templates/order/return_order_sidebar.html:5
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:43
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/sales_order.js:361
-msgid "Complete Shipments"
+#: order/templates/order/sales_order_base.html:89
+#: order/templates/order/sales_order_base.html:90
+msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:67
-#: templates/js/translated/sales_order.js:415
+#: order/templates/order/sales_order_base.html:93
+#: templates/js/translated/sales_order.js:419
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:103
+#: order/templates/order/sales_order_base.html:131
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:141
+#: order/templates/order/sales_order_base.html:169
#: order/templates/order/sales_order_detail.html:105
#: order/templates/order/so_sidebar.html:11
msgid "Completed Shipments"
msgstr ""
+#: order/templates/order/sales_order_base.html:305
+msgid "Sales Order QR Code"
+msgstr ""
+
+#: order/templates/order/sales_order_base.html:317
+msgid "Link Barcode to Sales Order"
+msgstr ""
+
#: order/templates/order/sales_order_detail.html:18
msgid "Sales Order Items"
msgstr ""
@@ -5035,20 +5101,20 @@ msgstr ""
msgid "Part Description"
msgstr ""
-#: part/admin.py:36 part/models.py:880 part/templates/part/part_base.html:272
+#: part/admin.py:36 part/models.py:880 part/templates/part/part_base.html:271
#: templates/js/translated/part.js:1143 templates/js/translated/part.js:1855
#: templates/js/translated/stock.js:1769
msgid "IPN"
msgstr ""
-#: part/admin.py:37 part/models.py:887 part/templates/part/part_base.html:280
+#: part/admin.py:37 part/models.py:887 part/templates/part/part_base.html:279
#: report/models.py:177 templates/js/translated/part.js:1148
#: templates/js/translated/part.js:1861
msgid "Revision"
msgstr ""
#: part/admin.py:38 part/admin.py:198 part/models.py:866
-#: part/templates/part/category.html:93 part/templates/part/part_base.html:301
+#: part/templates/part/category.html:93 part/templates/part/part_base.html:300
msgid "Keywords"
msgstr ""
@@ -5068,17 +5134,17 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:47 part/models.py:971 part/templates/part/part_base.html:206
+#: part/admin.py:47 part/models.py:971 part/templates/part/part_base.html:205
msgid "Minimum Stock"
msgstr ""
-#: part/admin.py:61 part/templates/part/part_base.html:200
+#: part/admin.py:61 part/templates/part/part_base.html:199
#: templates/js/translated/company.js:1277
#: templates/js/translated/table_filters.js:253
msgid "In Stock"
msgstr ""
-#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:213
+#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212
#: templates/js/translated/bom.js:1163 templates/js/translated/build.js:1940
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1749
#: templates/js/translated/table_filters.js:96
@@ -5091,11 +5157,11 @@ msgstr ""
#: part/admin.py:64 templates/js/translated/build.js:1954
#: templates/js/translated/build.js:2214 templates/js/translated/build.js:2799
-#: templates/js/translated/sales_order.js:1790
+#: templates/js/translated/sales_order.js:1818
msgid "Allocated"
msgstr ""
-#: part/admin.py:65 part/templates/part/part_base.html:244 stock/admin.py:124
+#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124
#: templates/js/translated/part.js:635 templates/js/translated/part.js:1753
msgid "Building"
msgstr ""
@@ -5127,7 +5193,7 @@ msgstr ""
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:84
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/part.js:2367 templates/js/translated/search.js:158
+#: templates/js/translated/part.js:2367 templates/js/translated/search.js:160
#: templates/navbar.html:24 users/models.py:38
msgid "Parts"
msgstr ""
@@ -5158,36 +5224,36 @@ msgstr ""
msgid "Maximum Price"
msgstr ""
-#: part/api.py:515
+#: part/api.py:495
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:535
+#: part/api.py:515
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:553
+#: part/api.py:533
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:639
+#: part/api.py:619
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:797
+#: part/api.py:767
msgid "Valid"
msgstr ""
-#: part/api.py:798
+#: part/api.py:768
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:804
+#: part/api.py:774
msgid "This option must be selected"
msgstr ""
#: part/bom.py:175 part/models.py:121 part/models.py:914
-#: part/templates/part/category.html:115 part/templates/part/part_base.html:376
+#: part/templates/part/category.html:115 part/templates/part/part_base.html:369
msgid "Default Location"
msgstr ""
@@ -5195,8 +5261,8 @@ msgstr ""
msgid "Total Stock"
msgstr ""
-#: part/bom.py:177 part/templates/part/part_base.html:195
-#: templates/js/translated/sales_order.js:1757
+#: part/bom.py:177 part/templates/part/part_base.html:194
+#: templates/js/translated/sales_order.js:1785
msgid "Available Stock"
msgstr ""
@@ -5210,7 +5276,7 @@ msgid "Part Category"
msgstr ""
#: part/models.py:72 part/templates/part/category.html:135
-#: templates/InvenTree/search.html:97 templates/js/translated/search.js:186
+#: templates/InvenTree/search.html:97 templates/js/translated/search.js:188
#: users/models.py:37
msgid "Part Categories"
msgstr ""
@@ -5219,7 +5285,7 @@ msgstr ""
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:127 stock/models.py:119 templates/js/translated/stock.js:2575
+#: part/models.py:127 stock/models.py:120 templates/js/translated/stock.js:2575
#: templates/js/translated/table_filters.js:163
#: templates/js/translated/table_filters.js:182
msgid "Structural"
@@ -5237,11 +5303,11 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:138 stock/models.py:108
+#: part/models.py:138 stock/models.py:109
msgid "Icon"
msgstr ""
-#: part/models.py:139 stock/models.py:109
+#: part/models.py:139 stock/models.py:110
msgid "Icon (optional)"
msgstr ""
@@ -5295,12 +5361,12 @@ msgstr ""
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:855
+#: part/models.py:855 part/templates/part/part_base.html:179
msgid "Variant Of"
msgstr ""
#: part/models.py:861
-msgid "Part description"
+msgid "Part description (optional)"
msgstr ""
#: part/models.py:867
@@ -5308,7 +5374,7 @@ msgid "Part keywords to improve visibility in search results"
msgstr ""
#: part/models.py:874 part/models.py:3182 part/models.py:3419
-#: part/serializers.py:849 part/templates/part/part_base.html:263
+#: part/serializers.py:849 part/templates/part/part_base.html:262
#: templates/InvenTree/settings/settings_staff_js.html:132
#: templates/js/translated/notification.js:50
#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2097
@@ -5331,7 +5397,7 @@ msgstr ""
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:957 part/templates/part/part_base.html:385
+#: part/models.py:957 part/templates/part/part_base.html:378
msgid "Default Supplier"
msgstr ""
@@ -5411,8 +5477,8 @@ msgstr ""
msgid "User responsible for this part"
msgstr ""
-#: part/models.py:1036 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:448
+#: part/models.py:1036 part/templates/part/part_base.html:341
+#: stock/templates/stock/item_base.html:441
#: templates/js/translated/part.js:1947
msgid "Last Stocktake"
msgstr ""
@@ -5569,7 +5635,7 @@ msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:368
#: templates/js/translated/part.js:1002 templates/js/translated/pricing.js:794
#: templates/js/translated/pricing.js:915
-#: templates/js/translated/purchase_order.js:1561
+#: templates/js/translated/purchase_order.js:1628
#: templates/js/translated/stock.js:2613
msgid "Date"
msgstr ""
@@ -5822,7 +5888,7 @@ msgstr ""
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:3713 stock/models.py:569
+#: part/models.py:3713 stock/models.py:570
msgid "Quantity must be integer value for trackable parts"
msgstr ""
@@ -6102,7 +6168,7 @@ msgstr ""
#: part/tasks.py:289 templates/js/translated/part.js:983
#: templates/js/translated/part.js:1456 templates/js/translated/part.js:1512
-#: templates/js/translated/purchase_order.js:1922
+#: templates/js/translated/purchase_order.js:1989
msgid "Total Quantity"
msgstr ""
@@ -6127,8 +6193,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6264,7 +6329,7 @@ msgid "Refresh scheduling data"
msgstr ""
#: part/templates/part/detail.html:45 part/templates/part/prices.html:15
-#: templates/js/translated/tables.js:562
+#: templates/js/translated/tables.js:572
msgid "Refresh"
msgstr ""
@@ -6416,13 +6481,13 @@ msgstr ""
#: part/templates/part/import_wizard/part_upload.html:92
#: templates/js/translated/bom.js:278 templates/js/translated/bom.js:312
-#: templates/js/translated/order.js:109 templates/js/translated/tables.js:183
+#: templates/js/translated/order.js:112 templates/js/translated/tables.js:183
msgid "Format"
msgstr ""
#: part/templates/part/import_wizard/part_upload.html:93
#: templates/js/translated/bom.js:279 templates/js/translated/bom.js:313
-#: templates/js/translated/order.js:110
+#: templates/js/translated/order.js:113
msgid "Select file format"
msgstr ""
@@ -6507,8 +6572,7 @@ msgid "Part can be sold to customers"
msgstr ""
#: part/templates/part/part_base.html:147
-#: part/templates/part/part_base.html:155
-msgid "Part is virtual (not a physical part)"
+msgid "Part is not active"
msgstr ""
#: part/templates/part/part_base.html:148
@@ -6519,71 +6583,70 @@ msgstr ""
msgid "Inactive"
msgstr ""
+#: part/templates/part/part_base.html:155
+msgid "Part is virtual (not a physical part)"
+msgstr ""
+
#: part/templates/part/part_base.html:165
-#: part/templates/part/part_base.html:691
+#: part/templates/part/part_base.html:684
msgid "Show Part Details"
msgstr ""
-#: part/templates/part/part_base.html:183
-#, python-format
-msgid "This part is a variant of %(link)s"
-msgstr ""
-
-#: part/templates/part/part_base.html:221
-#: stock/templates/stock/item_base.html:385
+#: part/templates/part/part_base.html:220
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:230
-#: stock/templates/stock/item_base.html:378
+#: part/templates/part/part_base.html:229
+#: stock/templates/stock/item_base.html:371
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/bom.js:1174
+#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1174
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:294
+#: part/templates/part/part_base.html:293
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1037
+#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1037
#: templates/js/translated/part.js:1181 templates/js/translated/part.js:1920
#: templates/js/translated/pricing.js:373
#: templates/js/translated/pricing.js:1019
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:354
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:334
+#: part/templates/part/part_base.html:358
+#: stock/templates/stock/item_base.html:323
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:446
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:463
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:513
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:530
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:589
+#: part/templates/part/part_base.html:582
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:685
+#: part/templates/part/part_base.html:678
msgid "Hide Part Details"
msgstr ""
@@ -6673,7 +6736,7 @@ msgid "Refresh Part Pricing"
msgstr ""
#: part/templates/part/prices.html:25 stock/admin.py:129
-#: stock/templates/stock/item_base.html:443
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/company.js:1291
#: templates/js/translated/company.js:1301
#: templates/js/translated/stock.js:1956
@@ -6790,8 +6853,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -6853,6 +6915,7 @@ msgid "Match found for barcode data"
msgstr ""
#: plugin/base/barcodes/api.py:120
+#: templates/js/translated/purchase_order.js:1321
msgid "Barcode matches existing item"
msgstr ""
@@ -6864,15 +6927,15 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:26
+#: plugin/builtin/barcodes/inventree_barcode.py:28
msgid "InvenTree Barcodes"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:27
+#: plugin/builtin/barcodes/inventree_barcode.py:29
msgid "Provides native support for barcodes"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:29
+#: plugin/builtin/barcodes/inventree_barcode.py:31
#: plugin/builtin/integration/core_notifications.py:33
msgid "InvenTree contributors"
msgstr ""
@@ -6975,18 +7038,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7053,16 +7117,16 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:172
+#: report/api.py:171
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:208 report/api.py:244
+#: report/api.py:207 report/api.py:243
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
-#: report/api.py:311
+#: report/api.py:310
msgid "Test report"
msgstr ""
@@ -7168,11 +7232,11 @@ msgstr ""
#: report/templates/report/inventree_po_report_base.html:30
#: report/templates/report/inventree_so_report_base.html:30
-#: templates/js/translated/order.js:288 templates/js/translated/pricing.js:509
+#: templates/js/translated/order.js:291 templates/js/translated/pricing.js:509
#: templates/js/translated/pricing.js:578
#: templates/js/translated/pricing.js:802
-#: templates/js/translated/purchase_order.js:1953
-#: templates/js/translated/sales_order.js:1701
+#: templates/js/translated/purchase_order.js:2020
+#: templates/js/translated/sales_order.js:1729
msgid "Unit Price"
msgstr ""
@@ -7184,22 +7248,22 @@ msgstr ""
#: report/templates/report/inventree_po_report_base.html:72
#: report/templates/report/inventree_so_report_base.html:72
-#: templates/js/translated/purchase_order.js:1855
-#: templates/js/translated/sales_order.js:1676
+#: templates/js/translated/purchase_order.js:1922
+#: templates/js/translated/sales_order.js:1704
msgid "Total"
msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:25
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:717 stock/templates/stock/item_base.html:323
+#: stock/models.py:718 stock/templates/stock/item_base.html:312
#: templates/js/translated/build.js:475 templates/js/translated/build.js:636
#: templates/js/translated/build.js:1250 templates/js/translated/build.js:1738
#: templates/js/translated/model_renderers.js:195
-#: templates/js/translated/return_order.js:483
-#: templates/js/translated/return_order.js:663
-#: templates/js/translated/sales_order.js:250
-#: templates/js/translated/sales_order.js:1470
-#: templates/js/translated/sales_order.js:1555
+#: templates/js/translated/return_order.js:486
+#: templates/js/translated/return_order.js:666
+#: templates/js/translated/sales_order.js:254
+#: templates/js/translated/sales_order.js:1509
+#: templates/js/translated/sales_order.js:1594
#: templates/js/translated/stock.js:526
msgid "Serial Number"
msgstr ""
@@ -7213,12 +7277,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2183 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2189
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7286,8 +7350,8 @@ msgstr ""
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:114 stock/models.py:700
-#: stock/templates/stock/item_base.html:362
+#: stock/admin.py:114 stock/models.py:701
+#: stock/templates/stock/item_base.html:355
msgid "Installed In"
msgstr ""
@@ -7311,278 +7375,277 @@ msgstr ""
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:131 stock/models.py:773
-#: stock/templates/stock/item_base.html:430
+#: stock/admin.py:131 stock/models.py:774
+#: stock/templates/stock/item_base.html:423
#: templates/js/translated/stock.js:1940
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:426 templates/js/translated/table_filters.js:325
+#: stock/api.py:409 templates/js/translated/table_filters.js:325
msgid "External Location"
msgstr ""
-#: stock/api.py:587
+#: stock/api.py:570
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:594
+#: stock/api.py:577
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:619
+#: stock/api.py:602
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:53 stock/models.py:684
+#: stock/models.py:54 stock/models.py:685
#: stock/templates/stock/location.html:17
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:54 stock/templates/stock/location.html:183
-#: templates/InvenTree/search.html:167 templates/js/translated/search.js:206
+#: stock/models.py:55 stock/templates/stock/location.html:177
+#: templates/InvenTree/search.html:167 templates/js/translated/search.js:208
#: users/models.py:40
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:113 stock/models.py:814
-#: stock/templates/stock/item_base.html:253
+#: stock/models.py:114 stock/models.py:815
+#: stock/templates/stock/item_base.html:248
msgid "Owner"
msgstr ""
-#: stock/models.py:114 stock/models.py:815
+#: stock/models.py:115 stock/models.py:816
msgid "Select Owner"
msgstr ""
-#: stock/models.py:121
+#: stock/models.py:122
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:127 templates/js/translated/stock.js:2584
+#: stock/models.py:128 templates/js/translated/stock.js:2584
#: templates/js/translated/table_filters.js:167
msgid "External"
msgstr ""
-#: stock/models.py:128
+#: stock/models.py:129
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:170
+#: stock/models.py:171
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:549
+#: stock/models.py:550
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:575 stock/serializers.py:151
+#: stock/models.py:576 stock/serializers.py:151
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:592
+#: stock/models.py:593
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:602 stock/models.py:611
+#: stock/models.py:603 stock/models.py:612
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:603
+#: stock/models.py:604
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:625
+#: stock/models.py:626
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:631
+#: stock/models.py:632
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:645
+#: stock/models.py:646
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:659
+#: stock/models.py:660
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:669
+#: stock/models.py:670
msgid "Base part"
msgstr ""
-#: stock/models.py:677
+#: stock/models.py:678
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:687
+#: stock/models.py:688
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:694
+#: stock/models.py:695
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:703
+#: stock/models.py:704
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:719
+#: stock/models.py:720
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:733
+#: stock/models.py:734
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:738
+#: stock/models.py:739
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:745
+#: stock/models.py:746
msgid "Source Build"
msgstr ""
-#: stock/models.py:747
+#: stock/models.py:748
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:758
+#: stock/models.py:759
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:762
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:767
+#: stock/models.py:768
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:774
+#: stock/models.py:775
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:790
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:790
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:802 stock/templates/stock/item.html:132
+#: stock/models.py:803 stock/templates/stock/item.html:132
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:810
+#: stock/models.py:811
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:838
+#: stock/models.py:839
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1335
+#: stock/models.py:1361
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1341
+#: stock/models.py:1367
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1373
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1350
+#: stock/models.py:1376
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1353
+#: stock/models.py:1379
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1360
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1430
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1433
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1436
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1439
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1442
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1445
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1452 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1460
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1464
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1633
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2101
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2159
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2165
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2184
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2190
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2196
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2203
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2209
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7619,10 +7682,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -7839,129 +7898,133 @@ msgstr ""
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:194
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:212
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:257
+#: stock/templates/stock/item_base.html:252
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:258
+#: stock/templates/stock/item_base.html:253
#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:271
-msgid "This stock item is in production and cannot be edited."
+#: stock/templates/stock/item_base.html:266
+msgid "This stock item is unavailable"
msgstr ""
#: stock/templates/stock/item_base.html:272
+msgid "This stock item is in production and cannot be edited."
+msgstr ""
+
+#: stock/templates/stock/item_base.html:273
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:285
-msgid "This stock item has not passed all required tests"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:293
+#: stock/templates/stock/item_base.html:288
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:301
+#: stock/templates/stock/item_base.html:296
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:307
-msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
+#: stock/templates/stock/item_base.html:312
+msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted"
msgstr ""
-#: stock/templates/stock/item_base.html:329
+#: stock/templates/stock/item_base.html:318
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:329
+#: stock/templates/stock/item_base.html:318
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:338
+#: stock/templates/stock/item_base.html:327
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:338
+#: stock/templates/stock/item_base.html:327
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:351
+#: stock/templates/stock/item_base.html:341
msgid "Available Quantity"
msgstr ""
-#: stock/templates/stock/item_base.html:395
+#: stock/templates/stock/item_base.html:388
#: templates/js/translated/build.js:1764
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:403
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:434
+#: stock/templates/stock/item_base.html:409
+msgid "This stock item has not passed all required tests"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:427
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:434
+#: stock/templates/stock/item_base.html:427
#: templates/js/translated/table_filters.js:333
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:436
+#: stock/templates/stock/item_base.html:429
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:436
+#: stock/templates/stock/item_base.html:429
#: templates/js/translated/table_filters.js:339
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:452
+#: stock/templates/stock/item_base.html:445
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:530
+#: stock/templates/stock/item_base.html:523
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:538
+#: stock/templates/stock/item_base.html:532
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:550
+#: stock/templates/stock/item_base.html:543
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:607
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:617
+#: stock/templates/stock/item_base.html:610
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:618
+#: stock/templates/stock/item_base.html:611
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:626
+#: stock/templates/stock/item_base.html:619
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:649
msgid "Return to Stock"
msgstr ""
@@ -8021,29 +8084,29 @@ msgstr ""
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:169
-#: stock/templates/stock/location.html:217
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:211
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:221
+#: stock/templates/stock/location.html:215
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:222
+#: stock/templates/stock/location.html:216
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:309
+#: stock/templates/stock/location.html:303
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:382
+#: stock/templates/stock/location.html:376
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:387
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -8581,7 +8644,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/tables.js:553 templates/navbar.html:107
+#: templates/js/translated/tables.js:563 templates/navbar.html:107
#: templates/search.html:8 templates/search_form.html:6
#: templates/search_form.html:7
msgid "Search"
@@ -8627,8 +8690,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -9101,6 +9164,10 @@ msgstr ""
msgid "Delete Attachments"
msgstr ""
+#: templates/barcode_data.html:5
+msgid "Barcode Identifier"
+msgstr ""
+
#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
@@ -9255,10 +9322,6 @@ msgstr ""
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:41
-msgid "Barcode"
-msgstr ""
-
#: templates/js/translated/barcode.js:48
msgid "Scan barcode using connected webcam"
msgstr ""
@@ -9271,94 +9334,94 @@ msgstr ""
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:172
+#: templates/js/translated/barcode.js:175
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:201
+#: templates/js/translated/barcode.js:204
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:236
+#: templates/js/translated/barcode.js:239
#: templates/js/translated/modals.js:1100
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:354
+#: templates/js/translated/barcode.js:359
msgid "Scan barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:404 templates/navbar.html:114
+#: templates/js/translated/barcode.js:407 templates/navbar.html:114
msgid "Scan Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:416
+#: templates/js/translated/barcode.js:427
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:455
+#: templates/js/translated/barcode.js:468
msgid "This will remove the link to the associated barcode"
msgstr ""
-#: templates/js/translated/barcode.js:461
+#: templates/js/translated/barcode.js:474
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:523 templates/js/translated/stock.js:1097
+#: templates/js/translated/barcode.js:537 templates/js/translated/stock.js:1097
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:566
+#: templates/js/translated/barcode.js:580
msgid "Scan Stock Items Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:568
+#: templates/js/translated/barcode.js:582
msgid "Scan stock item barcode to check in to this location"
msgstr ""
-#: templates/js/translated/barcode.js:571
-#: templates/js/translated/barcode.js:763
+#: templates/js/translated/barcode.js:585
+#: templates/js/translated/barcode.js:780
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:602
+#: templates/js/translated/barcode.js:616
msgid "No barcode provided"
msgstr ""
-#: templates/js/translated/barcode.js:642
+#: templates/js/translated/barcode.js:656
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:646
+#: templates/js/translated/barcode.js:660
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:653
+#: templates/js/translated/barcode.js:667
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:662
+#: templates/js/translated/barcode.js:676
msgid "Barcode does not match valid stock item"
msgstr ""
-#: templates/js/translated/barcode.js:679
+#: templates/js/translated/barcode.js:695
msgid "Scan Stock Container Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:681
+#: templates/js/translated/barcode.js:697
msgid "Scan stock container barcode to check in to this location"
msgstr ""
-#: templates/js/translated/barcode.js:715
+#: templates/js/translated/barcode.js:731
msgid "Barcode does not match valid stock location"
msgstr ""
-#: templates/js/translated/barcode.js:758
+#: templates/js/translated/barcode.js:775
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:826
-#: templates/js/translated/barcode.js:835
+#: templates/js/translated/barcode.js:843
+#: templates/js/translated/barcode.js:852
msgid "Barcode does not match a valid location"
msgstr ""
@@ -9377,7 +9440,7 @@ msgstr ""
#: templates/js/translated/bom.js:158 templates/js/translated/bom.js:669
#: templates/js/translated/modals.js:69 templates/js/translated/modals.js:608
#: templates/js/translated/modals.js:732 templates/js/translated/modals.js:1040
-#: templates/js/translated/purchase_order.js:739 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:742 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -9511,7 +9574,7 @@ msgid "No pricing available"
msgstr ""
#: templates/js/translated/bom.js:1143 templates/js/translated/build.js:1922
-#: templates/js/translated/sales_order.js:1771
+#: templates/js/translated/sales_order.js:1799
msgid "No Stock Available"
msgstr ""
@@ -9712,12 +9775,12 @@ msgid "No required tests for this build"
msgstr ""
#: templates/js/translated/build.js:1781 templates/js/translated/build.js:2803
-#: templates/js/translated/sales_order.js:1505
+#: templates/js/translated/sales_order.js:1544
msgid "Edit stock allocation"
msgstr ""
#: templates/js/translated/build.js:1783 templates/js/translated/build.js:2804
-#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1545
msgid "Delete stock allocation"
msgstr ""
@@ -9738,17 +9801,17 @@ msgid "Quantity Per"
msgstr ""
#: templates/js/translated/build.js:1916
-#: templates/js/translated/sales_order.js:1778
+#: templates/js/translated/sales_order.js:1806
msgid "Insufficient stock available"
msgstr ""
#: templates/js/translated/build.js:1918
-#: templates/js/translated/sales_order.js:1776
+#: templates/js/translated/sales_order.js:1804
msgid "Sufficient stock available"
msgstr ""
#: templates/js/translated/build.js:2014
-#: templates/js/translated/sales_order.js:1870
+#: templates/js/translated/sales_order.js:1905
msgid "Build stock"
msgstr ""
@@ -9757,23 +9820,23 @@ msgid "Order stock"
msgstr ""
#: templates/js/translated/build.js:2021
-#: templates/js/translated/sales_order.js:1863
+#: templates/js/translated/sales_order.js:1899
msgid "Allocate stock"
msgstr ""
#: templates/js/translated/build.js:2059
-#: templates/js/translated/purchase_order.js:564
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/purchase_order.js:567
+#: templates/js/translated/sales_order.js:1068
msgid "Select Parts"
msgstr ""
#: templates/js/translated/build.js:2060
-#: templates/js/translated/sales_order.js:1043
+#: templates/js/translated/sales_order.js:1069
msgid "You must select at least one part to allocate"
msgstr ""
#: templates/js/translated/build.js:2108
-#: templates/js/translated/sales_order.js:991
+#: templates/js/translated/sales_order.js:1017
msgid "Specify stock allocation quantity"
msgstr ""
@@ -9786,7 +9849,7 @@ msgid "All selected parts have been fully allocated"
msgstr ""
#: templates/js/translated/build.js:2202
-#: templates/js/translated/sales_order.js:1057
+#: templates/js/translated/sales_order.js:1083
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
@@ -9795,12 +9858,12 @@ msgid "Allocate Stock Items to Build Order"
msgstr ""
#: templates/js/translated/build.js:2241
-#: templates/js/translated/sales_order.js:1154
+#: templates/js/translated/sales_order.js:1180
msgid "No matching stock locations"
msgstr ""
#: templates/js/translated/build.js:2314
-#: templates/js/translated/sales_order.js:1231
+#: templates/js/translated/sales_order.js:1257
msgid "No matching stock items"
msgstr ""
@@ -10116,7 +10179,7 @@ msgstr ""
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2010 templates/js/translated/search.js:267
+#: templates/js/translated/forms.js:2010 templates/js/translated/search.js:269
msgid "Searching"
msgstr ""
@@ -10144,7 +10207,7 @@ msgstr ""
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:460
+#: templates/js/translated/helpers.js:466
msgid "Notes updated"
msgstr ""
@@ -10271,40 +10334,40 @@ msgstr ""
msgid "Notifications will load here"
msgstr ""
-#: templates/js/translated/order.js:69
+#: templates/js/translated/order.js:72
msgid "Add Extra Line Item"
msgstr ""
-#: templates/js/translated/order.js:106
+#: templates/js/translated/order.js:109
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:219
+#: templates/js/translated/order.js:222
msgid "Duplicate Line"
msgstr ""
-#: templates/js/translated/order.js:233
+#: templates/js/translated/order.js:236
msgid "Edit Line"
msgstr ""
-#: templates/js/translated/order.js:246
+#: templates/js/translated/order.js:249
msgid "Delete Line"
msgstr ""
-#: templates/js/translated/order.js:259
-#: templates/js/translated/purchase_order.js:1828
+#: templates/js/translated/order.js:262
+#: templates/js/translated/purchase_order.js:1895
msgid "No line items found"
msgstr ""
-#: templates/js/translated/order.js:332
+#: templates/js/translated/order.js:344
msgid "Duplicate line"
msgstr ""
-#: templates/js/translated/order.js:333
+#: templates/js/translated/order.js:345
msgid "Edit line"
msgstr ""
-#: templates/js/translated/order.js:337
+#: templates/js/translated/order.js:349
msgid "Delete line"
msgstr ""
@@ -10506,19 +10569,19 @@ msgid "No variants found"
msgstr ""
#: templates/js/translated/part.js:1351
-#: templates/js/translated/purchase_order.js:1500
+#: templates/js/translated/purchase_order.js:1567
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1495
-#: templates/js/translated/purchase_order.js:1991
-#: templates/js/translated/return_order.js:695
-#: templates/js/translated/sales_order.js:1739
+#: templates/js/translated/purchase_order.js:2058
+#: templates/js/translated/return_order.js:698
+#: templates/js/translated/sales_order.js:1767
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1541
-#: templates/js/translated/purchase_order.js:2049
+#: templates/js/translated/purchase_order.js:2125
msgid "Receive line item"
msgstr ""
@@ -10652,16 +10715,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
@@ -10714,184 +10767,206 @@ msgstr ""
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:384
+#: templates/js/translated/purchase_order.js:387
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:401
+#: templates/js/translated/purchase_order.js:404
#: templates/js/translated/return_order.js:165
-#: templates/js/translated/sales_order.js:431
+#: templates/js/translated/sales_order.js:435
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:407
+#: templates/js/translated/purchase_order.js:410
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:412
+#: templates/js/translated/purchase_order.js:415
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:413
-#: templates/js/translated/sales_order.js:445
+#: templates/js/translated/purchase_order.js:416
+#: templates/js/translated/sales_order.js:449
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:436
+#: templates/js/translated/purchase_order.js:439
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:441
+#: templates/js/translated/purchase_order.js:444
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:447
+#: templates/js/translated/purchase_order.js:450
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:468
+#: templates/js/translated/purchase_order.js:471
#: templates/js/translated/return_order.js:119
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:473
+#: templates/js/translated/purchase_order.js:476
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:565
+#: templates/js/translated/purchase_order.js:568
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:590
+#: templates/js/translated/purchase_order.js:593
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:599
+#: templates/js/translated/purchase_order.js:602
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:617
+#: templates/js/translated/purchase_order.js:620
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:649
+#: templates/js/translated/purchase_order.js:652
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:793
+#: templates/js/translated/purchase_order.js:796
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:812
+#: templates/js/translated/purchase_order.js:815
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:991
+#: templates/js/translated/purchase_order.js:994
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:992
-#: templates/js/translated/return_order.js:435
+#: templates/js/translated/purchase_order.js:995
+#: templates/js/translated/return_order.js:438
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1012
-#: templates/js/translated/purchase_order.js:1125
-msgid "Add batch code"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:1018
-#: templates/js/translated/purchase_order.js:1136
-msgid "Add serial numbers"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:1033
+#: templates/js/translated/purchase_order.js:1023
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1044
+#: templates/js/translated/purchase_order.js:1034
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1108
+#: templates/js/translated/purchase_order.js:1110
#: templates/js/translated/stock.js:2273
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1196
-msgid "Order Code"
+#: templates/js/translated/purchase_order.js:1124
+msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1197
-msgid "Ordered"
+#: templates/js/translated/purchase_order.js:1125
+msgid "Remove barcode"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1128
+msgid "Specify location"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1136
+msgid "Add batch code"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1147
+msgid "Add serial numbers"
msgstr ""
#: templates/js/translated/purchase_order.js:1199
+msgid "Serials"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1224
+msgid "Order Code"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1226
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1222
-#: templates/js/translated/return_order.js:500
+#: templates/js/translated/purchase_order.js:1248
+#: templates/js/translated/return_order.js:503
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1249
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1527
+#: templates/js/translated/purchase_order.js:1317
+msgid "Scan Item Barcode"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1318
+msgid "Scan barcode on incoming item (must not match any existing stock items)"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1332
+msgid "Invalid barcode data"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1594
#: templates/js/translated/return_order.js:244
-#: templates/js/translated/sales_order.js:686
+#: templates/js/translated/sales_order.js:712
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1577
+#: templates/js/translated/purchase_order.js:1644
#: templates/js/translated/return_order.js:300
-#: templates/js/translated/sales_order.js:751
-#: templates/js/translated/sales_order.js:893
+#: templates/js/translated/sales_order.js:777
+#: templates/js/translated/sales_order.js:919
msgid "Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1676
+#: templates/js/translated/purchase_order.js:1743
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1694
+#: templates/js/translated/purchase_order.js:1761
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1754
-#: templates/js/translated/sales_order.js:1920
+#: templates/js/translated/purchase_order.js:1821
+#: templates/js/translated/sales_order.js:1959
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:1769
-#: templates/js/translated/return_order.js:419
-#: templates/js/translated/return_order.js:608
-#: templates/js/translated/sales_order.js:1933
+#: templates/js/translated/purchase_order.js:1836
+#: templates/js/translated/return_order.js:422
+#: templates/js/translated/return_order.js:611
+#: templates/js/translated/sales_order.js:1972
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:1780
-#: templates/js/translated/return_order.js:621
-#: templates/js/translated/sales_order.js:1944
+#: templates/js/translated/purchase_order.js:1847
+#: templates/js/translated/return_order.js:624
+#: templates/js/translated/sales_order.js:1983
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2053
-#: templates/js/translated/sales_order.js:1876
+#: templates/js/translated/purchase_order.js:2129
+#: templates/js/translated/sales_order.js:1913
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2054
-#: templates/js/translated/return_order.js:731
-#: templates/js/translated/sales_order.js:1877
+#: templates/js/translated/purchase_order.js:2130
+#: templates/js/translated/return_order.js:743
+#: templates/js/translated/sales_order.js:1914
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2055
-#: templates/js/translated/return_order.js:735
-#: templates/js/translated/sales_order.js:1881
+#: templates/js/translated/purchase_order.js:2131
+#: templates/js/translated/return_order.js:747
+#: templates/js/translated/sales_order.js:1920
msgid "Delete line item"
msgstr ""
@@ -10916,7 +10991,7 @@ msgid "No report templates found which match the selected items"
msgstr ""
#: templates/js/translated/return_order.js:40
-#: templates/js/translated/sales_order.js:52
+#: templates/js/translated/sales_order.js:53
msgid "Add Customer"
msgstr ""
@@ -10949,208 +11024,221 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:258
-#: templates/js/translated/sales_order.js:700
+#: templates/js/translated/sales_order.js:726
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/return_order.js:501
+#: templates/js/translated/return_order.js:504
msgid "Receive Return Order Items"
msgstr ""
-#: templates/js/translated/return_order.js:632
-#: templates/js/translated/sales_order.js:2080
+#: templates/js/translated/return_order.js:635
+#: templates/js/translated/sales_order.js:2119
msgid "No matching line items"
msgstr ""
-#: templates/js/translated/return_order.js:728
+#: templates/js/translated/return_order.js:740
msgid "Mark item as received"
msgstr ""
-#: templates/js/translated/sales_order.js:102
+#: templates/js/translated/sales_order.js:103
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:117
+#: templates/js/translated/sales_order.js:118
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:226
+#: templates/js/translated/sales_order.js:230
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:231
+#: templates/js/translated/sales_order.js:235
msgid "The following stock items will be shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:271
+#: templates/js/translated/sales_order.js:275
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:295
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:347
+#: templates/js/translated/sales_order.js:351
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:351
+#: templates/js/translated/sales_order.js:355
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:383
+#: templates/js/translated/sales_order.js:365
+msgid "Complete Shipments"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:387
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:444
+#: templates/js/translated/sales_order.js:448
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:468
+#: templates/js/translated/sales_order.js:470
+msgid "Issue this Sales Order?"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:475
+msgid "Issue Sales Order"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:494
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:473
+#: templates/js/translated/sales_order.js:499
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:527
+#: templates/js/translated/sales_order.js:553
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:637
+#: templates/js/translated/sales_order.js:663
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:805
+#: templates/js/translated/sales_order.js:831
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:808
+#: templates/js/translated/sales_order.js:834
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:813
+#: templates/js/translated/sales_order.js:839
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:856
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:845
+#: templates/js/translated/sales_order.js:871
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:878
+#: templates/js/translated/sales_order.js:904
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:888
+#: templates/js/translated/sales_order.js:914
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:912
+#: templates/js/translated/sales_order.js:938
+#: templates/js/translated/sales_order.js:1424
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:918
+#: templates/js/translated/sales_order.js:944
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:922
+#: templates/js/translated/sales_order.js:948
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1090
+#: templates/js/translated/sales_order.js:1116
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1141
+#: templates/js/translated/sales_order.js:1167
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1142
+#: templates/js/translated/sales_order.js:1168
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1346
+#: templates/js/translated/sales_order.js:1372
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1425
+#: templates/js/translated/sales_order.js:1464
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1439
+#: templates/js/translated/sales_order.js:1478
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1440
+#: templates/js/translated/sales_order.js:1479
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1482
-#: templates/js/translated/sales_order.js:1569
+#: templates/js/translated/sales_order.js:1521
+#: templates/js/translated/sales_order.js:1608
#: templates/js/translated/stock.js:1664
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1490
-#: templates/js/translated/sales_order.js:1578
+#: templates/js/translated/sales_order.js:1529
+#: templates/js/translated/sales_order.js:1617
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/sales_order.js:1897
msgid "Allocate serial numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:1866
+#: templates/js/translated/sales_order.js:1901
msgid "Purchase stock"
msgstr ""
-#: templates/js/translated/sales_order.js:1873
-#: templates/js/translated/sales_order.js:2058
+#: templates/js/translated/sales_order.js:1910
+#: templates/js/translated/sales_order.js:2097
msgid "Calculate price"
msgstr ""
-#: templates/js/translated/sales_order.js:1885
+#: templates/js/translated/sales_order.js:1924
msgid "Cannot be deleted as items have been shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1888
+#: templates/js/translated/sales_order.js:1927
msgid "Cannot be deleted as items have been allocated"
msgstr ""
-#: templates/js/translated/sales_order.js:1959
+#: templates/js/translated/sales_order.js:1998
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2066
+#: templates/js/translated/sales_order.js:2105
msgid "Update Unit Price"
msgstr ""
-#: templates/js/translated/search.js:298
+#: templates/js/translated/search.js:300
msgid "No results"
msgstr ""
-#: templates/js/translated/search.js:320 templates/search.html:25
+#: templates/js/translated/search.js:322 templates/search.html:25
msgid "Enter search query"
msgstr ""
-#: templates/js/translated/search.js:370
+#: templates/js/translated/search.js:372
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:370
+#: templates/js/translated/search.js:372
msgid "results"
msgstr ""
-#: templates/js/translated/search.js:380
+#: templates/js/translated/search.js:382
msgid "Minimize results"
msgstr ""
-#: templates/js/translated/search.js:383
+#: templates/js/translated/search.js:385
msgid "Remove results"
msgstr ""
@@ -11832,51 +11920,51 @@ msgstr ""
msgid "Select File Format"
msgstr ""
-#: templates/js/translated/tables.js:539
+#: templates/js/translated/tables.js:549
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:542
+#: templates/js/translated/tables.js:552
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:547
+#: templates/js/translated/tables.js:557
msgid "Showing all rows"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:556
+#: templates/js/translated/tables.js:566
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:559
+#: templates/js/translated/tables.js:569
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:565
+#: templates/js/translated/tables.js:575
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:568
+#: templates/js/translated/tables.js:578
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:571
+#: templates/js/translated/tables.js:581
msgid "All"
msgstr ""
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index 91caa8476a..76cb4d0615 100644
--- a/InvenTree/locale/ru/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ru/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -41,7 +41,7 @@ msgstr "Введите дату"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Файл не найден"
msgid "Missing external link"
msgstr "Отсутствует внешняя ссылка"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr "Незавершенные выходные данные"
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Неподдерживаемый формат файла: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Ошибка чтения файла (неверная кодировка)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Ошибка чтения файла (неверный формат)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Ошибка чтения файла (неверный размер)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Ошибка чтения файла (данные могут быть повреждены)"
@@ -3481,7 +3482,7 @@ msgstr "Наименование параметра"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr "Удалить деталь поставщика"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "Удалить"
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr "У вас нет прав редактировать BOM."
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,9 +6852,8 @@ msgid "Create new part variant"
msgstr "Создать новую разновидность детали"
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
-msgstr "Создать новую разновидность из шаблона '%(full_name)s'."
+msgid "Create a new variant part from this template"
+msgstr ""
#: part/templatetags/inventree_extras.py:187
msgid "Unknown database"
@@ -7038,18 +7037,19 @@ msgstr "Автор не найден"
msgid "No date found"
msgstr "Дата не найдена"
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr ""
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "Серийные номера уже существуют"
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "Серийные номера уже существуют"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/sl/LC_MESSAGES/django.po b/InvenTree/locale/sl/LC_MESSAGES/django.po
index 88bb68373f..54e0c13f4d 100644
--- a/InvenTree/locale/sl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"Language: sl_SI\n"
@@ -41,7 +41,7 @@ msgstr "Vnesi datum"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Manjka datoteka"
msgid "Missing external link"
msgstr "Manjka zunanja povezava"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po
index 57d701c40d..6c9e0c4754 100644
--- a/InvenTree/locale/sv/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sv/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -41,7 +41,7 @@ msgstr "Ange datum"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Saknad fil"
msgid "Missing external link"
msgstr "Extern länk saknas"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Filformatet stöds inte: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Fel vid läsning av fil (ogiltig kodning)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Fel vid läsning av filen (ogiltigt format)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Fel vid läsning av filen (felaktig dimension)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Fel vid läsning av fil (data kan vara skadat)"
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po
index 28aa514296..8db9f7ea75 100644
--- a/InvenTree/locale/th/LC_MESSAGES/django.po
+++ b/InvenTree/locale/th/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -41,7 +41,7 @@ msgstr "ป้อนวันที่"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index 6ea8437219..a9e83829a3 100644
--- a/InvenTree/locale/tr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/tr/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -41,7 +41,7 @@ msgstr "Tarih giriniz"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "Eksik dosya"
msgid "Missing external link"
msgstr "Bozuk dış bağlantı"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr "Tamamlanmamış Çıktılar"
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "Desteklenmeyen dosya formatı: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Dosya okurken hata (geçersiz biçim)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "Dosya okurken hata (geçersiz biçim)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "Dosya okurken hata (hatalı ölçüler)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "Dosya okurken hata (veri bozulmuş olabilir)"
@@ -3481,7 +3482,7 @@ msgstr "Parametre adı"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr "Tedarikçi parçalarını sil"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr "Yeni parça çeşidi oluştur"
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr "Seri numaraları tam sayı listesi olmalı"
msgid "Quantity does not match serial numbers"
msgstr "Miktar seri numaları ile eşleşmiyor"
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr "Seri numaraları zaten mevcut: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "Seri numaraları zaten mevcut"
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Stok kalemi stokta olmadığı için taşınamaz"
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "Seri numaraları zaten mevcut"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po
index 1472a40e77..ddd09671e6 100644
--- a/InvenTree/locale/vi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/vi/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -41,7 +41,7 @@ msgstr ""
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr ""
msgid "Completed Outputs"
msgstr ""
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr ""
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr ""
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr ""
@@ -3481,7 +3482,7 @@ msgstr ""
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr ""
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr ""
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr ""
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 75c03723e5..80ff854c2e 100644
--- a/InvenTree/locale/zh/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-14 22:35+0000\n"
-"PO-Revision-Date: 2023-04-15 18:23\n"
+"POT-Creation-Date: 2023-04-17 14:13+0000\n"
+"PO-Revision-Date: 2023-04-17 18:26\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -41,7 +41,7 @@ msgstr "输入日期"
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2126 stock/models.py:2234
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
@@ -209,7 +209,7 @@ msgstr "缺少文件"
msgid "Missing external link"
msgstr "缺少外部链接"
-#: InvenTree/models.py:409 stock/models.py:2228
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -1833,23 +1833,24 @@ msgstr "未完成输出"
msgid "Completed Outputs"
msgstr "已完成输出"
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
-msgstr "不支持的文件格式: {ext.uper()}"
+#: common/files.py:63
+#, python-brace-format
+msgid "Unsupported file format: {fmt}"
+msgstr ""
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "读取文件时发生错误 (无效编码)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "读取文件时发生错误 (无效编码)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "读取文件时出错(不正确的尺寸)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "读取文件时出错(数据可能已损坏)"
@@ -3481,7 +3482,7 @@ msgstr "参数名称"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2221 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3902,8 +3903,8 @@ msgstr "删除供应商商品"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "删除"
@@ -6191,8 +6192,7 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM this part has been changed, and must be validated"
msgstr ""
#: part/templates/part/bom.html:17
@@ -6852,8 +6852,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -7038,18 +7037,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7276,12 +7276,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2209 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2215
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7568,84 +7568,83 @@ msgstr ""
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1386
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr ""
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "序列号已存在"
-#: stock/models.py:1456
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1459
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1462
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1465
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1468
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1471
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1478 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1482
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1486
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1490
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2127
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2185
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2191
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2210
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2216
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2222
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2229
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2235
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7682,10 +7681,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "序列号已存在"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -8694,8 +8689,8 @@ msgid "Change Password"
msgstr "更改密码"
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr "编辑"
@@ -10719,16 +10714,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
diff --git a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po
index 0d7067f521..78c362e282 100644
--- a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-03-29 08:09+0000\n"
+"POT-Creation-Date: 2023-04-17 14:52+0000\n"
"PO-Revision-Date: 2023-02-28 22:38\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
@@ -17,15 +17,15 @@ msgstr ""
"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 154\n"
-#: InvenTree/api.py:63
+#: InvenTree/api.py:65
msgid "API endpoint not found"
msgstr "未找到 API 端点"
-#: InvenTree/api.py:308
+#: InvenTree/api.py:299
msgid "User does not have permission to view this model"
msgstr ""
-#: InvenTree/exceptions.py:79
+#: InvenTree/exceptions.py:94
msgid "Error details can be found in the admin panel"
msgstr "在管理面板中可以找到错误详细信息"
@@ -33,25 +33,25 @@ msgstr "在管理面板中可以找到错误详细信息"
msgid "Enter date"
msgstr "输入日期"
-#: InvenTree/fields.py:204 build/serializers.py:389
+#: InvenTree/fields.py:204 build/serializers.py:392
#: build/templates/build/sidebar.html:21 company/models.py:554
-#: company/templates/company/sidebar.html:35 order/models.py:1029
+#: company/templates/company/sidebar.html:35 order/models.py:1058
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:41
#: part/models.py:2989 part/templates/part/part_sidebar.html:63
#: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:121 stock/models.py:2100 stock/models.py:2208
+#: stock/admin.py:121 stock/models.py:2127 stock/models.py:2235
#: stock/serializers.py:317 stock/serializers.py:450 stock/serializers.py:531
#: stock/serializers.py:810 stock/serializers.py:909 stock/serializers.py:1041
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:130 templates/js/translated/bom.js:1220
-#: templates/js/translated/company.js:1272 templates/js/translated/order.js:319
+#: templates/js/translated/company.js:1272 templates/js/translated/order.js:322
#: templates/js/translated/part.js:997
-#: templates/js/translated/purchase_order.js:2038
-#: templates/js/translated/return_order.js:715
-#: templates/js/translated/sales_order.js:937
-#: templates/js/translated/sales_order.js:1843
+#: templates/js/translated/purchase_order.js:2105
+#: templates/js/translated/return_order.js:718
+#: templates/js/translated/sales_order.js:963
+#: templates/js/translated/sales_order.js:1871
#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:2134
msgid "Notes"
msgstr "备注"
@@ -137,7 +137,7 @@ msgstr "远程服务器返回了空响应"
msgid "Supplied URL is not a valid image file"
msgstr "提供的 URL 不是一个有效的图片文件"
-#: InvenTree/helpers.py:602 order/models.py:409 order/models.py:565
+#: InvenTree/helpers.py:602 order/models.py:410 order/models.py:571
msgid "Invalid quantity provided"
msgstr "提供的数量无效"
@@ -209,7 +209,7 @@ msgstr "缺少文件"
msgid "Missing external link"
msgstr "缺少外部链接"
-#: InvenTree/models.py:409 stock/models.py:2202
+#: InvenTree/models.py:409 stock/models.py:2229
#: templates/js/translated/attachment.js:109
#: templates/js/translated/attachment.js:296
msgid "Attachment"
@@ -219,20 +219,24 @@ msgstr "附件"
msgid "Select file to attach"
msgstr "选择附件"
-#: InvenTree/models.py:416 common/models.py:2607 company/models.py:129
-#: company/models.py:305 company/models.py:541 order/models.py:201
-#: order/models.py:1377 order/models.py:1856 part/admin.py:39
+#: InvenTree/models.py:416 common/models.py:2621 company/models.py:129
+#: company/models.py:305 company/models.py:541 order/models.py:202
+#: order/models.py:1062 order/models.py:1412 part/admin.py:39
#: part/models.py:892 part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_base.html:164
#: stock/admin.py:120 templates/js/translated/company.js:962
-#: templates/js/translated/company.js:1261 templates/js/translated/part.js:1932
-#: templates/js/translated/purchase_order.js:1878
-#: templates/js/translated/sales_order.js:926
+#: templates/js/translated/company.js:1261 templates/js/translated/order.js:326
+#: templates/js/translated/part.js:1932
+#: templates/js/translated/purchase_order.js:1945
+#: templates/js/translated/purchase_order.js:2109
+#: templates/js/translated/return_order.js:722
+#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:1876
msgid "Link"
msgstr "链接"
#: InvenTree/models.py:417 build/models.py:293 part/models.py:893
-#: stock/models.py:727
+#: stock/models.py:728
msgid "Link to external URL"
msgstr "链接到外部 URL"
@@ -245,9 +249,9 @@ msgstr "注释"
msgid "File comment"
msgstr "文件注释"
-#: InvenTree/models.py:426 InvenTree/models.py:427 common/models.py:2056
-#: common/models.py:2057 common/models.py:2280 common/models.py:2281
-#: common/models.py:2537 common/models.py:2538 part/models.py:2997
+#: InvenTree/models.py:426 InvenTree/models.py:427 common/models.py:2070
+#: common/models.py:2071 common/models.py:2294 common/models.py:2295
+#: common/models.py:2551 common/models.py:2552 part/models.py:2997
#: part/models.py:3085 part/models.py:3164 part/models.py:3184
#: plugin/models.py:270 plugin/models.py:271
#: report/templates/report/inventree_test_report_base.html:105
@@ -292,7 +296,7 @@ msgstr ""
msgid "Invalid choice"
msgstr "选择无效"
-#: InvenTree/models.py:571 InvenTree/models.py:572 common/models.py:2266
+#: InvenTree/models.py:571 InvenTree/models.py:572 common/models.py:2280
#: company/models.py:387 label/models.py:102 part/models.py:838
#: part/models.py:3332 plugin/models.py:94 report/models.py:158
#: templates/InvenTree/settings/mixins/urls.html:13
@@ -315,7 +319,7 @@ msgstr "名称"
#: company/models.py:547 company/templates/company/company_base.html:72
#: company/templates/company/manufacturer_part.html:75
#: company/templates/company/supplier_part.html:108 label/models.py:109
-#: order/models.py:199 part/admin.py:194 part/admin.py:276 part/models.py:860
+#: order/models.py:200 part/admin.py:194 part/admin.py:276 part/models.py:860
#: part/models.py:3341 part/templates/part/category.html:81
#: part/templates/part/part_base.html:172
#: part/templates/part/part_scheduling.html:12 report/models.py:171
@@ -331,11 +335,11 @@ msgstr "名称"
#: templates/js/translated/company.js:1236 templates/js/translated/part.js:1155
#: templates/js/translated/part.js:1597 templates/js/translated/part.js:1869
#: templates/js/translated/part.js:2348 templates/js/translated/part.js:2439
-#: templates/js/translated/purchase_order.js:1548
-#: templates/js/translated/purchase_order.js:1682
-#: templates/js/translated/purchase_order.js:1860
+#: templates/js/translated/purchase_order.js:1615
+#: templates/js/translated/purchase_order.js:1749
+#: templates/js/translated/purchase_order.js:1927
#: templates/js/translated/return_order.js:272
-#: templates/js/translated/sales_order.js:714
+#: templates/js/translated/sales_order.js:740
#: templates/js/translated/stock.js:1418 templates/js/translated/stock.js:1791
#: templates/js/translated/stock.js:2551 templates/js/translated/stock.js:2623
msgid "Description"
@@ -362,7 +366,7 @@ msgstr "条码数据"
msgid "Third party barcode data"
msgstr "第三方条形码数据"
-#: InvenTree/models.py:702 order/serializers.py:503
+#: InvenTree/models.py:702
msgid "Barcode Hash"
msgstr "条码哈希"
@@ -374,11 +378,11 @@ msgstr "条码数据的唯一哈希"
msgid "Existing barcode found"
msgstr "发现现有条码"
-#: InvenTree/models.py:801
+#: InvenTree/models.py:802
msgid "Server Error"
msgstr "服务器错误"
-#: InvenTree/models.py:802
+#: InvenTree/models.py:803
msgid "An error has been logged by the server."
msgstr "服务器记录了一个错误。"
@@ -459,107 +463,107 @@ msgstr "远程图像文件的 URL"
msgid "Downloading images from remote URL is not enabled"
msgstr "未启用从远程 URL下载图像"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:708
msgid "Czech"
msgstr "捷克语"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:709
msgid "Danish"
msgstr "丹麦语"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:710
msgid "German"
msgstr "德语"
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:711
msgid "Greek"
msgstr "希腊语"
-#: InvenTree/settings.py:709
+#: InvenTree/settings.py:712
msgid "English"
msgstr "英语"
-#: InvenTree/settings.py:710
+#: InvenTree/settings.py:713
msgid "Spanish"
msgstr "西班牙语"
-#: InvenTree/settings.py:711
+#: InvenTree/settings.py:714
msgid "Spanish (Mexican)"
msgstr "西班牙语(墨西哥)"
-#: InvenTree/settings.py:712
+#: InvenTree/settings.py:715
msgid "Farsi / Persian"
msgstr "波斯语"
-#: InvenTree/settings.py:713
+#: InvenTree/settings.py:716
msgid "French"
msgstr "法语"
-#: InvenTree/settings.py:714
+#: InvenTree/settings.py:717
msgid "Hebrew"
msgstr "希伯来语"
-#: InvenTree/settings.py:715
+#: InvenTree/settings.py:718
msgid "Hungarian"
msgstr "匈牙利语"
-#: InvenTree/settings.py:716
+#: InvenTree/settings.py:719
msgid "Italian"
msgstr "意大利语"
-#: InvenTree/settings.py:717
+#: InvenTree/settings.py:720
msgid "Japanese"
msgstr "日语"
-#: InvenTree/settings.py:718
+#: InvenTree/settings.py:721
msgid "Korean"
msgstr "韩语"
-#: InvenTree/settings.py:719
+#: InvenTree/settings.py:722
msgid "Dutch"
msgstr "荷兰语"
-#: InvenTree/settings.py:720
+#: InvenTree/settings.py:723
msgid "Norwegian"
msgstr "挪威语"
-#: InvenTree/settings.py:721
+#: InvenTree/settings.py:724
msgid "Polish"
msgstr "波兰语"
-#: InvenTree/settings.py:722
+#: InvenTree/settings.py:725
msgid "Portuguese"
msgstr "葡萄牙语"
-#: InvenTree/settings.py:723
+#: InvenTree/settings.py:726
msgid "Portuguese (Brazilian)"
msgstr "葡萄牙语 (巴西)"
-#: InvenTree/settings.py:724
+#: InvenTree/settings.py:727
msgid "Russian"
msgstr "俄语"
-#: InvenTree/settings.py:725
+#: InvenTree/settings.py:728
msgid "Slovenian"
msgstr "斯洛文尼亚"
-#: InvenTree/settings.py:726
+#: InvenTree/settings.py:729
msgid "Swedish"
msgstr "瑞典语"
-#: InvenTree/settings.py:727
+#: InvenTree/settings.py:730
msgid "Thai"
msgstr "泰语"
-#: InvenTree/settings.py:728
+#: InvenTree/settings.py:731
msgid "Turkish"
msgstr "土耳其语"
-#: InvenTree/settings.py:729
+#: InvenTree/settings.py:732
msgid "Vietnamese"
msgstr "越南语"
-#: InvenTree/settings.py:730
+#: InvenTree/settings.py:733
msgid "Chinese"
msgstr "中文(简体)"
@@ -575,198 +579,199 @@ msgstr "未配置电子邮件后端"
msgid "InvenTree system health checks failed"
msgstr "InventTree系统健康检查失败"
-#: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140
-#: InvenTree/status_codes.py:313 InvenTree/status_codes.py:350
-#: InvenTree/status_codes.py:385 templates/js/translated/table_filters.js:417
+#: InvenTree/status_codes.py:139 InvenTree/status_codes.py:181
+#: InvenTree/status_codes.py:357 InvenTree/status_codes.py:394
+#: InvenTree/status_codes.py:429 templates/js/translated/table_filters.js:417
msgid "Pending"
msgstr "待定"
-#: InvenTree/status_codes.py:100
+#: InvenTree/status_codes.py:140
msgid "Placed"
msgstr "已添加"
-#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:316
-#: InvenTree/status_codes.py:352 order/templates/order/order_base.html:142
-#: order/templates/order/sales_order_base.html:133
+#: InvenTree/status_codes.py:141 InvenTree/status_codes.py:360
+#: InvenTree/status_codes.py:396 order/templates/order/order_base.html:161
+#: order/templates/order/sales_order_base.html:161
msgid "Complete"
msgstr "完成"
-#: InvenTree/status_codes.py:102 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:315 InvenTree/status_codes.py:353
+#: InvenTree/status_codes.py:142 InvenTree/status_codes.py:184
+#: InvenTree/status_codes.py:359 InvenTree/status_codes.py:397
msgid "Cancelled"
msgstr "已取消"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:143
-#: InvenTree/status_codes.py:183
+#: InvenTree/status_codes.py:143 InvenTree/status_codes.py:185
+#: InvenTree/status_codes.py:227
msgid "Lost"
msgstr "丢失"
-#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:186
+#: InvenTree/status_codes.py:144 InvenTree/status_codes.py:186
+#: InvenTree/status_codes.py:230
msgid "Returned"
msgstr "已退回"
-#: InvenTree/status_codes.py:141 order/models.py:1260
-#: templates/js/translated/sales_order.js:1503
-#: templates/js/translated/sales_order.js:1818
+#: InvenTree/status_codes.py:182 InvenTree/status_codes.py:395
+msgid "In Progress"
+msgstr ""
+
+#: InvenTree/status_codes.py:183 order/models.py:1295
+#: templates/js/translated/sales_order.js:1418
+#: templates/js/translated/sales_order.js:1542
+#: templates/js/translated/sales_order.js:1846
msgid "Shipped"
msgstr "已发货"
-#: InvenTree/status_codes.py:179
+#: InvenTree/status_codes.py:223
msgid "OK"
msgstr "OK"
-#: InvenTree/status_codes.py:180
+#: InvenTree/status_codes.py:224
msgid "Attention needed"
msgstr "需要关注"
-#: InvenTree/status_codes.py:181
+#: InvenTree/status_codes.py:225
msgid "Damaged"
msgstr "破损"
-#: InvenTree/status_codes.py:182
+#: InvenTree/status_codes.py:226
msgid "Destroyed"
msgstr "已销毁"
-#: InvenTree/status_codes.py:184
+#: InvenTree/status_codes.py:228
msgid "Rejected"
msgstr "已拒绝"
-#: InvenTree/status_codes.py:185
+#: InvenTree/status_codes.py:229
msgid "Quarantined"
msgstr "隔离"
-#: InvenTree/status_codes.py:263
+#: InvenTree/status_codes.py:307
msgid "Legacy stock tracking entry"
msgstr "旧库存跟踪条目"
-#: InvenTree/status_codes.py:265
+#: InvenTree/status_codes.py:309
msgid "Stock item created"
msgstr "库存项已创建"
-#: InvenTree/status_codes.py:267
+#: InvenTree/status_codes.py:311
msgid "Edited stock item"
msgstr "已编辑库存项"
-#: InvenTree/status_codes.py:268
+#: InvenTree/status_codes.py:312
msgid "Assigned serial number"
msgstr "已分配序列号"
-#: InvenTree/status_codes.py:270
+#: InvenTree/status_codes.py:314
msgid "Stock counted"
msgstr "库存计数"
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:315
msgid "Stock manually added"
msgstr "已手动添加库存"
-#: InvenTree/status_codes.py:272
+#: InvenTree/status_codes.py:316
msgid "Stock manually removed"
msgstr "库存手动删除"
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:318
msgid "Location changed"
msgstr "仓储地点已更改"
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:320
msgid "Installed into assembly"
msgstr "安装到组装中"
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:321
msgid "Removed from assembly"
msgstr "已从组装中删除"
-#: InvenTree/status_codes.py:279
+#: InvenTree/status_codes.py:323
msgid "Installed component item"
msgstr "已安装组件项"
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:324
msgid "Removed component item"
msgstr "已删除组件项"
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:326
msgid "Split from parent item"
msgstr "从父项拆分"
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:327
msgid "Split child item"
msgstr "拆分子项"
-#: InvenTree/status_codes.py:285 templates/js/translated/stock.js:2213
+#: InvenTree/status_codes.py:329 templates/js/translated/stock.js:2213
msgid "Merged stock items"
msgstr "合并的库存项目"
-#: InvenTree/status_codes.py:287
+#: InvenTree/status_codes.py:331
msgid "Converted to variant"
msgstr "转换为变量"
-#: InvenTree/status_codes.py:289 templates/js/translated/table_filters.js:273
+#: InvenTree/status_codes.py:333 templates/js/translated/table_filters.js:273
msgid "Sent to customer"
msgstr "发送给客户"
-#: InvenTree/status_codes.py:290
+#: InvenTree/status_codes.py:334
msgid "Returned from customer"
msgstr "从客户退货"
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:336
msgid "Build order output created"
msgstr "已创建生产订单输出"
-#: InvenTree/status_codes.py:293
+#: InvenTree/status_codes.py:337
msgid "Build order output completed"
msgstr "生产订单输出已完成"
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:338
msgid "Consumed by build order"
msgstr "被生产订单消耗"
-#: InvenTree/status_codes.py:296
+#: InvenTree/status_codes.py:340
#, fuzzy
#| msgid "Received against purchase order"
msgid "Shipped against Sales Order"
msgstr "收到定购单"
-#: InvenTree/status_codes.py:298
+#: InvenTree/status_codes.py:342
#, fuzzy
#| msgid "Received against purchase order"
msgid "Received against Purchase Order"
msgstr "收到定购单"
-#: InvenTree/status_codes.py:300
+#: InvenTree/status_codes.py:344
#, fuzzy
#| msgid "Received against purchase order"
msgid "Returned against Return Order"
msgstr "收到定购单"
-#: InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:358
msgid "Production"
msgstr "生产中"
-#: InvenTree/status_codes.py:351
-msgid "In Progress"
-msgstr ""
-
-#: InvenTree/status_codes.py:386
+#: InvenTree/status_codes.py:430
#, fuzzy
#| msgid "Returned"
msgid "Return"
msgstr "已退回"
-#: InvenTree/status_codes.py:387
+#: InvenTree/status_codes.py:431
msgid "Repair"
msgstr ""
-#: InvenTree/status_codes.py:388
+#: InvenTree/status_codes.py:432
msgid "Refund"
msgstr ""
-#: InvenTree/status_codes.py:389
+#: InvenTree/status_codes.py:433
#, fuzzy
#| msgid "Placed"
msgid "Replace"
msgstr "已添加"
-#: InvenTree/status_codes.py:390
+#: InvenTree/status_codes.py:434
#, fuzzy
#| msgid "Rejected"
msgid "Reject"
@@ -812,7 +817,7 @@ msgstr "系统信息"
msgid "About InvenTree"
msgstr "关于 InventTree"
-#: build/api.py:245
+#: build/api.py:221
msgid "Build must be cancelled before it can be deleted"
msgstr "在删除前必须取消生产"
@@ -832,7 +837,7 @@ msgstr "生产订单"
#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:141
#: templates/InvenTree/settings/sidebar.html:49
-#: templates/js/translated/search.js:214 users/models.py:42
+#: templates/js/translated/search.js:216 users/models.py:42
msgid "Build Orders"
msgstr "生产订单"
@@ -844,27 +849,29 @@ msgstr "上级生产选项无效"
msgid "Build Order Reference"
msgstr "相关生产订单"
-#: build/models.py:158 order/models.py:326 order/models.py:722
-#: order/models.py:1027 order/models.py:1638 part/admin.py:278
+#: build/models.py:158 order/models.py:327 order/models.py:734
+#: order/models.py:1056 order/models.py:1673 part/admin.py:278
#: part/models.py:3602 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_po_report_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:26
#: report/templates/report/inventree_so_report_base.html:28
#: templates/js/translated/bom.js:739 templates/js/translated/bom.js:913
-#: templates/js/translated/build.js:1847 templates/js/translated/order.js:269
+#: templates/js/translated/build.js:1847 templates/js/translated/order.js:272
#: templates/js/translated/pricing.js:368
-#: templates/js/translated/purchase_order.js:1903
-#: templates/js/translated/return_order.js:668
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/return_order.js:671
+#: templates/js/translated/sales_order.js:1710
msgid "Reference"
msgstr "引用"
#: build/models.py:169
-msgid "Brief description of the build"
+#, fuzzy
+#| msgid "Brief description of the build"
+msgid "Brief description of the build (optional)"
msgstr "生产的简短描述."
-#: build/models.py:177 build/templates/build/build_base.html:172
+#: build/models.py:177 build/templates/build/build_base.html:189
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "上级生产"
@@ -873,9 +880,9 @@ msgstr "上级生产"
msgid "BuildOrder to which this build is allocated"
msgstr "此次生产匹配的订单"
-#: build/models.py:183 build/templates/build/build_base.html:80
+#: build/models.py:183 build/templates/build/build_base.html:98
#: build/templates/build/detail.html:29 company/models.py:720
-#: order/models.py:1123 order/models.py:1239 order/models.py:1240
+#: order/models.py:1158 order/models.py:1274 order/models.py:1275
#: part/models.py:382 part/models.py:2849 part/models.py:2963
#: part/models.py:3103 part/models.py:3122 part/models.py:3141
#: part/models.py:3162 part/models.py:3254 part/models.py:3375
@@ -896,7 +903,7 @@ msgstr "此次生产匹配的订单"
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
#: templates/email/overdue_build_order.html:16
-#: templates/js/translated/barcode.js:502 templates/js/translated/bom.js:601
+#: templates/js/translated/barcode.js:516 templates/js/translated/bom.js:601
#: templates/js/translated/bom.js:738 templates/js/translated/bom.js:857
#: templates/js/translated/build.js:1230 templates/js/translated/build.js:1714
#: templates/js/translated/build.js:2213 templates/js/translated/build.js:2615
@@ -906,16 +913,16 @@ msgstr "此次生产匹配的订单"
#: templates/js/translated/company.js:1154 templates/js/translated/part.js:1582
#: templates/js/translated/part.js:1648 templates/js/translated/part.js:1838
#: templates/js/translated/pricing.js:351
-#: templates/js/translated/purchase_order.js:694
-#: templates/js/translated/purchase_order.js:1195
-#: templates/js/translated/purchase_order.js:1681
-#: templates/js/translated/purchase_order.js:1845
-#: templates/js/translated/return_order.js:482
-#: templates/js/translated/return_order.js:649
-#: templates/js/translated/sales_order.js:235
-#: templates/js/translated/sales_order.js:1068
-#: templates/js/translated/sales_order.js:1454
-#: templates/js/translated/sales_order.js:1666
+#: templates/js/translated/purchase_order.js:697
+#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1748
+#: templates/js/translated/purchase_order.js:1912
+#: templates/js/translated/return_order.js:485
+#: templates/js/translated/return_order.js:652
+#: templates/js/translated/sales_order.js:239
+#: templates/js/translated/sales_order.js:1094
+#: templates/js/translated/sales_order.js:1493
+#: templates/js/translated/sales_order.js:1694
#: templates/js/translated/stock.js:622 templates/js/translated/stock.js:788
#: templates/js/translated/stock.js:1000 templates/js/translated/stock.js:1747
#: templates/js/translated/stock.js:2649 templates/js/translated/stock.js:2873
@@ -935,9 +942,9 @@ msgstr "相关销售订单"
msgid "SalesOrder to which this build is allocated"
msgstr "此次生产匹配的销售订单"
-#: build/models.py:205 build/serializers.py:825
+#: build/models.py:205 build/serializers.py:828
#: templates/js/translated/build.js:2201
-#: templates/js/translated/sales_order.js:1056
+#: templates/js/translated/sales_order.js:1082
msgid "Source Location"
msgstr "来源地点"
@@ -977,19 +984,19 @@ msgstr "生产状态"
msgid "Build status code"
msgstr "生产状态代码"
-#: build/models.py:248 build/serializers.py:226 order/serializers.py:481
-#: stock/models.py:731 templates/js/translated/purchase_order.js:1058
+#: build/models.py:248 build/serializers.py:229 order/serializers.py:487
+#: stock/models.py:732 templates/js/translated/purchase_order.js:1048
msgid "Batch Code"
msgstr "批量代码"
-#: build/models.py:252 build/serializers.py:227
+#: build/models.py:252 build/serializers.py:230
msgid "Batch code for this build output"
msgstr "此生产产出的批量代码"
-#: build/models.py:255 order/models.py:209 part/models.py:1028
-#: part/templates/part/part_base.html:319
+#: build/models.py:255 order/models.py:210 part/models.py:1028
+#: part/templates/part/part_base.html:312
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:727
+#: templates/js/translated/sales_order.js:753
msgid "Creation Date"
msgstr "创建日期"
@@ -1001,7 +1008,7 @@ msgstr "预计完成日期"
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "生产完成的目标日期。生产将在此日期之后逾期。"
-#: build/models.py:263 order/models.py:376 order/models.py:1681
+#: build/models.py:263 order/models.py:377 order/models.py:1716
#: templates/js/translated/build.js:2700
msgid "Completion Date"
msgstr "完成日期:"
@@ -1018,15 +1025,15 @@ msgstr "发布者"
msgid "User who issued this build order"
msgstr "发布此生产订单的用户"
-#: build/models.py:286 build/templates/build/build_base.html:193
-#: build/templates/build/detail.html:122 order/models.py:223
-#: order/templates/order/order_base.html:194
-#: order/templates/order/return_order_base.html:162
-#: order/templates/order/sales_order_base.html:193 part/models.py:1032
-#: part/templates/part/part_base.html:399
+#: build/models.py:286 build/templates/build/build_base.html:210
+#: build/templates/build/detail.html:122 order/models.py:224
+#: order/templates/order/order_base.html:213
+#: order/templates/order/return_order_base.html:183
+#: order/templates/order/sales_order_base.html:221 part/models.py:1032
+#: part/templates/part/part_base.html:392
#: report/templates/report/inventree_build_order_base.html:158
#: templates/js/translated/build.js:2672
-#: templates/js/translated/purchase_order.js:1593
+#: templates/js/translated/purchase_order.js:1660
#: templates/js/translated/return_order.js:305
#: templates/js/translated/table_filters.js:391
msgid "Responsible"
@@ -1038,9 +1045,9 @@ msgstr "构建此订单的用户或组"
#: build/models.py:292 build/templates/build/detail.html:108
#: company/templates/company/manufacturer_part.html:107
-#: company/templates/company/supplier_part.html:188
-#: part/templates/part/part_base.html:392 stock/models.py:725
-#: stock/templates/stock/item_base.html:206
+#: company/templates/company/supplier_part.html:182
+#: part/templates/part/part_base.html:385 stock/models.py:726
+#: stock/templates/stock/item_base.html:201
msgid "External Link"
msgstr "外部链接"
@@ -1086,11 +1093,11 @@ msgstr "生产项必须指定生产产出,因为主部件已经被标记为可
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})"
-#: build/models.py:1209 order/models.py:1515
+#: build/models.py:1209 order/models.py:1550
msgid "Stock item is over-allocated"
msgstr "库存物品分配过度!"
-#: build/models.py:1215 order/models.py:1518
+#: build/models.py:1215 order/models.py:1553
msgid "Allocation quantity must be greater than zero"
msgstr "分配数量必须大于0"
@@ -1102,7 +1109,7 @@ msgstr "序列化库存的数量必须是 1"
msgid "Selected stock item not found in BOM"
msgstr "在BOM中找不到选定的库存项"
-#: build/models.py:1347 stock/templates/stock/item_base.html:175
+#: build/models.py:1347 stock/templates/stock/item_base.html:170
#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2588
#: templates/navbar.html:38
msgid "Build"
@@ -1112,19 +1119,19 @@ msgstr "生产"
msgid "Build to allocate parts"
msgstr "生产以分配部件"
-#: build/models.py:1364 build/serializers.py:674 order/serializers.py:1013
-#: order/serializers.py:1034 stock/serializers.py:388 stock/serializers.py:741
+#: build/models.py:1364 build/serializers.py:677 order/serializers.py:1035
+#: order/serializers.py:1056 stock/serializers.py:388 stock/serializers.py:741
#: stock/serializers.py:867 stock/templates/stock/item_base.html:10
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:200
+#: stock/templates/stock/item_base.html:195
#: templates/js/translated/build.js:801 templates/js/translated/build.js:806
#: templates/js/translated/build.js:2215 templates/js/translated/build.js:2785
-#: templates/js/translated/sales_order.js:236
-#: templates/js/translated/sales_order.js:1069
-#: templates/js/translated/sales_order.js:1367
-#: templates/js/translated/sales_order.js:1372
-#: templates/js/translated/sales_order.js:1461
-#: templates/js/translated/sales_order.js:1551
+#: templates/js/translated/sales_order.js:240
+#: templates/js/translated/sales_order.js:1095
+#: templates/js/translated/sales_order.js:1394
+#: templates/js/translated/sales_order.js:1399
+#: templates/js/translated/sales_order.js:1500
+#: templates/js/translated/sales_order.js:1590
#: templates/js/translated/stock.js:623 templates/js/translated/stock.js:789
#: templates/js/translated/stock.js:2756
msgid "Stock Item"
@@ -1134,10 +1141,10 @@ msgstr "库存项"
msgid "Source stock item"
msgstr "源库存项"
-#: build/models.py:1377 build/serializers.py:194
-#: build/templates/build/build_base.html:85
-#: build/templates/build/detail.html:34 common/models.py:2088
-#: order/models.py:1013 order/models.py:1559 order/serializers.py:1187
+#: build/models.py:1377 build/serializers.py:197
+#: build/templates/build/build_base.html:103
+#: build/templates/build/detail.html:34 common/models.py:2102
+#: order/models.py:1042 order/models.py:1594 order/serializers.py:1209
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277
#: part/forms.py:47 part/models.py:2976 part/models.py:3583
#: part/templates/part/part_pricing.html:16
@@ -1149,31 +1156,32 @@ msgstr "源库存项"
#: report/templates/report/inventree_test_report_base.html:90
#: report/templates/report/inventree_test_report_base.html:170
#: stock/admin.py:103 stock/serializers.py:281
-#: stock/templates/stock/item_base.html:293
-#: stock/templates/stock/item_base.html:301
+#: stock/templates/stock/item_base.html:288
+#: stock/templates/stock/item_base.html:296
+#: stock/templates/stock/item_base.html:343
#: templates/email/build_order_completed.html:18
-#: templates/js/translated/barcode.js:504 templates/js/translated/bom.js:740
+#: templates/js/translated/barcode.js:518 templates/js/translated/bom.js:740
#: templates/js/translated/bom.js:921 templates/js/translated/build.js:477
#: templates/js/translated/build.js:638 templates/js/translated/build.js:828
#: templates/js/translated/build.js:1252 templates/js/translated/build.js:1740
#: templates/js/translated/build.js:2216
#: templates/js/translated/company.js:1406
#: templates/js/translated/model_renderers.js:201
-#: templates/js/translated/order.js:276 templates/js/translated/part.js:878
+#: templates/js/translated/order.js:279 templates/js/translated/part.js:878
#: templates/js/translated/part.js:1446 templates/js/translated/part.js:2876
#: templates/js/translated/pricing.js:363
#: templates/js/translated/pricing.js:456
#: templates/js/translated/pricing.js:504
#: templates/js/translated/pricing.js:598
-#: templates/js/translated/purchase_order.js:697
-#: templates/js/translated/purchase_order.js:1685
-#: templates/js/translated/purchase_order.js:1909
-#: templates/js/translated/sales_order.js:252
-#: templates/js/translated/sales_order.js:1070
-#: templates/js/translated/sales_order.js:1386
-#: templates/js/translated/sales_order.js:1467
-#: templates/js/translated/sales_order.js:1557
-#: templates/js/translated/sales_order.js:1688
+#: templates/js/translated/purchase_order.js:700
+#: templates/js/translated/purchase_order.js:1752
+#: templates/js/translated/purchase_order.js:1976
+#: templates/js/translated/sales_order.js:256
+#: templates/js/translated/sales_order.js:1096
+#: templates/js/translated/sales_order.js:1413
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1596
+#: templates/js/translated/sales_order.js:1716
#: templates/js/translated/stock.js:494 templates/js/translated/stock.js:648
#: templates/js/translated/stock.js:819 templates/js/translated/stock.js:2800
#: templates/js/translated/stock.js:2885
@@ -1192,255 +1200,256 @@ msgstr "安装到"
msgid "Destination stock item"
msgstr "目标库存项"
-#: build/serializers.py:145 build/serializers.py:703
+#: build/serializers.py:148 build/serializers.py:706
#: templates/js/translated/build.js:1240
msgid "Build Output"
msgstr "生产产出"
-#: build/serializers.py:157
+#: build/serializers.py:160
msgid "Build output does not match the parent build"
msgstr "生产产出与对应生产不匹配"
-#: build/serializers.py:161
+#: build/serializers.py:164
msgid "Output part does not match BuildOrder part"
msgstr "产出部件与生产订单部件不匹配"
-#: build/serializers.py:165
+#: build/serializers.py:168
msgid "This build output has already been completed"
msgstr "此生产产出已经完成"
-#: build/serializers.py:176
+#: build/serializers.py:179
msgid "This build output is not fully allocated"
msgstr "生产产出未被完成分配"
-#: build/serializers.py:195
+#: build/serializers.py:198
msgid "Enter quantity for build output"
msgstr "输入生产产出数量"
-#: build/serializers.py:209 build/serializers.py:694 order/models.py:407
-#: order/serializers.py:354 order/serializers.py:476 part/serializers.py:1088
-#: part/serializers.py:1409 stock/models.py:585 stock/models.py:1344
+#: build/serializers.py:212 build/serializers.py:697 order/models.py:408
+#: order/serializers.py:360 order/serializers.py:482 part/serializers.py:1088
+#: part/serializers.py:1409 stock/models.py:586 stock/models.py:1370
#: stock/serializers.py:290
msgid "Quantity must be greater than zero"
msgstr "数量必须大于0"
-#: build/serializers.py:216
+#: build/serializers.py:219
msgid "Integer quantity required for trackable parts"
msgstr "对于可追踪的部件,需要整数型数值"
-#: build/serializers.py:219
+#: build/serializers.py:222
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "需要整数型数值,因为BOM包含可追踪的部件"
-#: build/serializers.py:233 order/serializers.py:489 order/serializers.py:1191
-#: stock/serializers.py:299 templates/js/translated/purchase_order.js:1069
+#: build/serializers.py:236 order/serializers.py:495 order/serializers.py:1213
+#: stock/serializers.py:299 templates/js/translated/purchase_order.js:1072
#: templates/js/translated/stock.js:301 templates/js/translated/stock.js:495
msgid "Serial Numbers"
msgstr "序列号"
-#: build/serializers.py:234
+#: build/serializers.py:237
msgid "Enter serial numbers for build outputs"
msgstr "输入生产产出的序列号"
-#: build/serializers.py:247
+#: build/serializers.py:250
msgid "Auto Allocate Serial Numbers"
msgstr "自动分配序列号"
-#: build/serializers.py:248
+#: build/serializers.py:251
msgid "Automatically allocate required items with matching serial numbers"
msgstr "自动为所需项分配对应的序列号"
-#: build/serializers.py:283 stock/api.py:647
+#: build/serializers.py:286 stock/api.py:630
msgid "The following serial numbers already exist or are invalid"
msgstr "以下序列号已存在或无效"
-#: build/serializers.py:332 build/serializers.py:401
+#: build/serializers.py:335 build/serializers.py:404
msgid "A list of build outputs must be provided"
msgstr "必须提供生产产出列表"
-#: build/serializers.py:371 order/serializers.py:462 order/serializers.py:581
-#: order/serializers.py:1540 part/serializers.py:855 stock/serializers.py:310
+#: build/serializers.py:374 order/serializers.py:468 order/serializers.py:589
+#: order/serializers.py:1562 part/serializers.py:855 stock/serializers.py:310
#: stock/serializers.py:445 stock/serializers.py:526 stock/serializers.py:902
-#: stock/serializers.py:1144 stock/templates/stock/item_base.html:391
-#: templates/js/translated/barcode.js:503
-#: templates/js/translated/barcode.js:747 templates/js/translated/build.js:813
+#: stock/serializers.py:1144 stock/templates/stock/item_base.html:384
+#: templates/js/translated/barcode.js:517
+#: templates/js/translated/barcode.js:764 templates/js/translated/build.js:813
#: templates/js/translated/build.js:1755
-#: templates/js/translated/purchase_order.js:1096
-#: templates/js/translated/sales_order.js:1379
-#: templates/js/translated/sales_order.js:1478
-#: templates/js/translated/sales_order.js:1486
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/purchase_order.js:1097
+#: templates/js/translated/purchase_order.js:1187
+#: templates/js/translated/sales_order.js:1406
+#: templates/js/translated/sales_order.js:1517
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1604
#: templates/js/translated/stock.js:624 templates/js/translated/stock.js:790
#: templates/js/translated/stock.js:1002 templates/js/translated/stock.js:1911
#: templates/js/translated/stock.js:2663
msgid "Location"
msgstr "地点"
-#: build/serializers.py:372
+#: build/serializers.py:375
msgid "Location for completed build outputs"
msgstr "已完成生产产出的仓储地点"
-#: build/serializers.py:378 build/templates/build/build_base.html:145
-#: build/templates/build/detail.html:62 order/models.py:748
-#: order/models.py:1664 order/serializers.py:499 stock/admin.py:106
-#: stock/templates/stock/item_base.html:424
-#: templates/js/translated/barcode.js:236 templates/js/translated/build.js:2644
-#: templates/js/translated/purchase_order.js:1200
-#: templates/js/translated/purchase_order.js:1552
+#: build/serializers.py:381 build/templates/build/build_base.html:157
+#: build/templates/build/detail.html:62 order/models.py:760
+#: order/models.py:1699 order/serializers.py:505 stock/admin.py:106
+#: stock/templates/stock/item_base.html:417
+#: templates/js/translated/barcode.js:239 templates/js/translated/build.js:2644
+#: templates/js/translated/purchase_order.js:1227
+#: templates/js/translated/purchase_order.js:1619
#: templates/js/translated/return_order.js:277
-#: templates/js/translated/sales_order.js:719
+#: templates/js/translated/sales_order.js:745
#: templates/js/translated/stock.js:1886 templates/js/translated/stock.js:2774
#: templates/js/translated/stock.js:2901
msgid "Status"
msgstr "状态"
-#: build/serializers.py:384
+#: build/serializers.py:387
msgid "Accept Incomplete Allocation"
msgstr "接受不完整的分配"
-#: build/serializers.py:385
+#: build/serializers.py:388
msgid "Complete outputs if stock has not been fully allocated"
msgstr "如果库存尚未完成分配,完成产出"
-#: build/serializers.py:454
+#: build/serializers.py:457
msgid "Remove Allocated Stock"
msgstr "移除已分配的库存"
-#: build/serializers.py:455
+#: build/serializers.py:458
msgid "Subtract any stock which has already been allocated to this build"
msgstr "减去已经分配至此生产的库存"
-#: build/serializers.py:461
+#: build/serializers.py:464
msgid "Remove Incomplete Outputs"
msgstr "移除未完成的产出"
-#: build/serializers.py:462
+#: build/serializers.py:465
msgid "Delete any build outputs which have not been completed"
msgstr "删除所有未完成的生产产出"
-#: build/serializers.py:490
+#: build/serializers.py:493
msgid "Accept as consumed by this build order"
msgstr "接受此构建订单所消耗的内容"
-#: build/serializers.py:491
+#: build/serializers.py:494
msgid "Deallocate before completing this build order"
msgstr "在完成此构建订单前取消分配"
-#: build/serializers.py:514
+#: build/serializers.py:517
msgid "Overallocated Stock"
msgstr "超出分配的库存"
-#: build/serializers.py:516
+#: build/serializers.py:519
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "你想如何处理分配给构建订单的额外库存物品"
-#: build/serializers.py:526
+#: build/serializers.py:529
msgid "Some stock items have been overallocated"
msgstr "一些库存项已被过度分配"
-#: build/serializers.py:531
+#: build/serializers.py:534
msgid "Accept Unallocated"
msgstr "接受未分配的"
-#: build/serializers.py:532
+#: build/serializers.py:535
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "接受库存项未被完成分配至此生产订单"
-#: build/serializers.py:542 templates/js/translated/build.js:265
+#: build/serializers.py:545 templates/js/translated/build.js:265
msgid "Required stock has not been fully allocated"
msgstr "所需库存尚未完全分配"
-#: build/serializers.py:547 order/serializers.py:237 order/serializers.py:1081
+#: build/serializers.py:550 order/serializers.py:242 order/serializers.py:1103
msgid "Accept Incomplete"
msgstr "接受未完成"
-#: build/serializers.py:548
+#: build/serializers.py:551
msgid "Accept that the required number of build outputs have not been completed"
msgstr "接受所需的生产产出未完成"
-#: build/serializers.py:558 templates/js/translated/build.js:269
+#: build/serializers.py:561 templates/js/translated/build.js:269
msgid "Required build quantity has not been completed"
msgstr "所需生产数量尚未完成"
-#: build/serializers.py:567 templates/js/translated/build.js:253
+#: build/serializers.py:570 templates/js/translated/build.js:253
msgid "Build order has incomplete outputs"
msgstr "生产订单有未完成的产出"
-#: build/serializers.py:597 build/serializers.py:651 part/models.py:3490
+#: build/serializers.py:600 build/serializers.py:654 part/models.py:3490
#: part/models.py:3873
msgid "BOM Item"
msgstr "BOM项"
-#: build/serializers.py:607
+#: build/serializers.py:610
msgid "Build output"
msgstr "生产产出"
-#: build/serializers.py:615
+#: build/serializers.py:618
msgid "Build output must point to the same build"
msgstr "生产产出必须指向相同的生产"
-#: build/serializers.py:665
+#: build/serializers.py:668
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part 必须与生产订单指向相同的部件"
-#: build/serializers.py:680 stock/serializers.py:754
+#: build/serializers.py:683 stock/serializers.py:754
msgid "Item must be in stock"
msgstr "项目必须在库存中"
-#: build/serializers.py:729 order/serializers.py:1071
+#: build/serializers.py:732 order/serializers.py:1093
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "可用量 ({q}) 超出了限制"
-#: build/serializers.py:735
+#: build/serializers.py:738
msgid "Build output must be specified for allocation of tracked parts"
msgstr "对于被追踪的部件的分配,必须指定生产产出"
-#: build/serializers.py:742
+#: build/serializers.py:745
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "对于未被追踪的部件,无法指定生产产出"
-#: build/serializers.py:747
+#: build/serializers.py:750
msgid "This stock item has already been allocated to this build output"
msgstr "此库存项已被分配至此生产产出"
-#: build/serializers.py:770 order/serializers.py:1355
+#: build/serializers.py:773 order/serializers.py:1377
msgid "Allocation items must be provided"
msgstr "必须提供分配的项"
-#: build/serializers.py:826
+#: build/serializers.py:829
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "部件来源的仓储地点(留空则可来源于任何仓储地点)"
-#: build/serializers.py:834
+#: build/serializers.py:837
msgid "Exclude Location"
msgstr "排除地点"
-#: build/serializers.py:835
+#: build/serializers.py:838
msgid "Exclude stock items from this selected location"
msgstr "从该选定的仓储地点排除库存项"
-#: build/serializers.py:840
+#: build/serializers.py:843
msgid "Interchangeable Stock"
msgstr "可互换的库存"
-#: build/serializers.py:841
+#: build/serializers.py:844
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "多处地点的库存项可以互换使用"
-#: build/serializers.py:846
+#: build/serializers.py:849
msgid "Substitute Stock"
msgstr "可替换的库存"
-#: build/serializers.py:847
+#: build/serializers.py:850
msgid "Allow allocation of substitute parts"
msgstr "允许分配可替换的部件"
-#: build/serializers.py:852
+#: build/serializers.py:855
msgid "Optional Items"
msgstr "可选项目"
-#: build/serializers.py:853
+#: build/serializers.py:856
msgid "Allocate optional BOM items to build order"
msgstr "分配可选的BOM项目来建立订单"
@@ -1458,101 +1467,141 @@ msgid "Build order {bo} is now overdue"
msgstr "生成订单 {bo} 现在已过期"
#: build/templates/build/build_base.html:39
-#: order/templates/order/order_base.html:28
-#: order/templates/order/return_order_base.html:38
-#: order/templates/order/sales_order_base.html:38
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:29
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:43
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:54
+msgid "Barcode actions"
+msgstr ""
+
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:33
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:46
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:56 templates/qr_button.html:1
+msgid "Show QR Code"
+msgstr ""
+
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:36
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:58
+#: templates/js/translated/barcode.js:466
+#: templates/js/translated/barcode.js:471
+msgid "Unlink Barcode"
+msgstr ""
+
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:38
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:51
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:60
+msgid "Link Barcode"
+msgstr ""
+
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:46
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "打印操作"
-#: build/templates/build/build_base.html:43
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "打印构建订单报告"
-#: build/templates/build/build_base.html:50
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "生产操作"
-#: build/templates/build/build_base.html:54
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "编辑生产"
-#: build/templates/build/build_base.html:56
+#: build/templates/build/build_base.html:74
msgid "Cancel Build"
msgstr "取消生产"
-#: build/templates/build/build_base.html:59
+#: build/templates/build/build_base.html:77
msgid "Duplicate Build"
msgstr "重复构件"
-#: build/templates/build/build_base.html:62
+#: build/templates/build/build_base.html:80
msgid "Delete Build"
msgstr "删除生产"
-#: build/templates/build/build_base.html:67
-#: build/templates/build/build_base.html:68
+#: build/templates/build/build_base.html:85
+#: build/templates/build/build_base.html:86
msgid "Complete Build"
msgstr "生产完成"
-#: build/templates/build/build_base.html:90
+#: build/templates/build/build_base.html:108
msgid "Build Description"
msgstr "构建描述"
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:117
msgid "No build outputs have been created for this build order"
msgstr "针对此生产订单,尚未创建生产产出"
-#: build/templates/build/build_base.html:104
-#, python-format
-msgid "This Build Order is allocated to Sales Order %(link)s"
-msgstr "此构建订单已分配给销售订单 %(link)s"
-
-#: build/templates/build/build_base.html:111
+#: build/templates/build/build_base.html:123
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr "此构建订单是 %(link)s 订单的一个子订单"
-#: build/templates/build/build_base.html:118
+#: build/templates/build/build_base.html:130
msgid "Build Order is ready to mark as completed"
msgstr "构建订单已准备好标记为已完成"
-#: build/templates/build/build_base.html:123
+#: build/templates/build/build_base.html:135
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "创建订单无法完成,因为未完成的输出"
-#: build/templates/build/build_base.html:128
+#: build/templates/build/build_base.html:140
msgid "Required build quantity has not yet been completed"
msgstr "所需生产数量尚未完成"
-#: build/templates/build/build_base.html:133
+#: build/templates/build/build_base.html:145
msgid "Stock has not been fully allocated to this Build Order"
msgstr "库存尚未被完全分配到此构建订单"
-#: build/templates/build/build_base.html:154
-#: build/templates/build/detail.html:138 order/models.py:205
-#: order/models.py:1033 order/templates/order/order_base.html:170
-#: order/templates/order/return_order_base.html:145
-#: order/templates/order/sales_order_base.html:164
+#: build/templates/build/build_base.html:166
+#: build/templates/build/detail.html:138 order/models.py:206
+#: order/models.py:1068 order/templates/order/order_base.html:189
+#: order/templates/order/return_order_base.html:166
+#: order/templates/order/sales_order_base.html:192
#: report/templates/report/inventree_build_order_base.html:125
#: templates/js/translated/build.js:2692 templates/js/translated/part.js:1465
-#: templates/js/translated/purchase_order.js:1569
-#: templates/js/translated/purchase_order.js:1985
+#: templates/js/translated/purchase_order.js:1636
+#: templates/js/translated/purchase_order.js:2052
#: templates/js/translated/return_order.js:293
-#: templates/js/translated/return_order.js:690
-#: templates/js/translated/sales_order.js:735
-#: templates/js/translated/sales_order.js:1731
+#: templates/js/translated/return_order.js:693
+#: templates/js/translated/sales_order.js:761
+#: templates/js/translated/sales_order.js:1759
msgid "Target Date"
msgstr "预计日期"
-#: build/templates/build/build_base.html:159
+#: build/templates/build/build_base.html:171
#, python-format
msgid "This build was due on %(target)s"
msgstr "此次生产的截止日期为 %(target)s"
-#: build/templates/build/build_base.html:159
-#: build/templates/build/build_base.html:211
-#: order/templates/order/order_base.html:106
-#: order/templates/order/return_order_base.html:98
-#: order/templates/order/sales_order_base.html:94
+#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:228
+#: order/templates/order/order_base.html:125
+#: order/templates/order/return_order_base.html:119
+#: order/templates/order/sales_order_base.html:122
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:384
#: templates/js/translated/table_filters.js:444
@@ -1560,43 +1609,55 @@ msgstr "此次生产的截止日期为 %(target)s"
msgid "Overdue"
msgstr "逾期"
-#: build/templates/build/build_base.html:166
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:67 build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:174
+#: order/templates/order/sales_order_base.html:202
#: templates/js/translated/table_filters.js:487
msgid "Completed"
msgstr "已完成"
-#: build/templates/build/build_base.html:179
-#: build/templates/build/detail.html:101 order/api.py:1516 order/models.py:1232
-#: order/models.py:1331 order/models.py:1465
+#: build/templates/build/build_base.html:196
+#: build/templates/build/detail.html:101 order/api.py:1422 order/models.py:1267
+#: order/models.py:1366 order/models.py:1500
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:135
#: report/templates/report/inventree_so_report_base.html:14
-#: stock/templates/stock/item_base.html:371
+#: stock/templates/stock/item_base.html:364
#: templates/email/overdue_sales_order.html:15
#: templates/js/translated/pricing.js:894
-#: templates/js/translated/sales_order.js:681
+#: templates/js/translated/sales_order.js:707
#: templates/js/translated/stock.js:2703
msgid "Sales Order"
msgstr "销售订单"
-#: build/templates/build/build_base.html:186
+#: build/templates/build/build_base.html:203
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_base.html:152
msgid "Issued By"
msgstr "发布者"
-#: build/templates/build/build_base.html:200
+#: build/templates/build/build_base.html:217
#: build/templates/build/detail.html:94 templates/js/translated/build.js:2609
msgid "Priority"
msgstr "优先级"
-#: build/templates/build/build_base.html:263
+#: build/templates/build/build_base.html:280
msgid "Delete Build Order"
msgstr "删除生产订单"
+#: build/templates/build/build_base.html:290
+#, fuzzy
+#| msgid "Build Order"
+msgid "Build Order QR Code"
+msgstr "生产订单"
+
+#: build/templates/build/build_base.html:302
+#, fuzzy
+#| msgid "Print Build Orders"
+msgid "Link Barcode to Build Order"
+msgstr "打印生产订单"
+
#: build/templates/build/detail.html:15
msgid "Build Details"
msgstr "生产详情"
@@ -1609,9 +1670,8 @@ msgstr "库存来源"
msgid "Stock can be taken from any available location."
msgstr "库存可以从任何可用的地点获得。"
-#: build/templates/build/detail.html:49 order/models.py:1150
-#: templates/js/translated/purchase_order.js:1201
-#: templates/js/translated/purchase_order.js:2027
+#: build/templates/build/detail.html:49 order/models.py:1185
+#: templates/js/translated/purchase_order.js:2094
msgid "Destination"
msgstr "目的地"
@@ -1624,9 +1684,10 @@ msgid "Allocated Parts"
msgstr "已分配的部件"
#: build/templates/build/detail.html:80 stock/admin.py:105
-#: stock/templates/stock/item_base.html:168
+#: stock/templates/stock/item_base.html:163
#: templates/js/translated/build.js:1259
#: templates/js/translated/model_renderers.js:206
+#: templates/js/translated/purchase_order.js:1193
#: templates/js/translated/stock.js:1072 templates/js/translated/stock.js:1900
#: templates/js/translated/stock.js:2908
#: templates/js/translated/table_filters.js:211
@@ -1635,9 +1696,9 @@ msgid "Batch"
msgstr "批量"
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:157
-#: order/templates/order/return_order_base.html:132
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/order_base.html:176
+#: order/templates/order/return_order_base.html:153
+#: order/templates/order/sales_order_base.html:186
#: templates/js/translated/build.js:2652
msgid "Created"
msgstr "已创建"
@@ -1690,7 +1751,7 @@ msgstr "订单所需部件"
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:86
#: part/templates/part/category.html:184
-#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:740
msgid "Order Parts"
msgstr "订购商品"
@@ -1790,23 +1851,25 @@ msgstr "未完成输出"
msgid "Completed Outputs"
msgstr "已完成输出"
-#: common/files.py:62
-msgid "Unsupported file format: {ext.upper()}"
+#: common/files.py:63
+#, fuzzy, python-brace-format
+#| msgid "Unsupported file format: {ext.upper()}"
+msgid "Unsupported file format: {fmt}"
msgstr "不支持的文件格式: {ext.uper()}"
-#: common/files.py:64
+#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "读取文件时发生错误 (无效编码)"
-#: common/files.py:69
+#: common/files.py:70
msgid "Error reading file (invalid format)"
msgstr "读取文件时发生错误 (无效编码)"
-#: common/files.py:71
+#: common/files.py:72
msgid "Error reading file (incorrect dimension)"
msgstr "读取文件时出错(不正确的尺寸)"
-#: common/files.py:73
+#: common/files.py:74
msgid "Error reading file (data could be corrupted)"
msgstr "读取文件时出错(数据可能已损坏)"
@@ -2701,7 +2764,7 @@ msgstr ""
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1670 common/models.py:2049
+#: common/models.py:1670 common/models.py:2063
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -3024,89 +3087,107 @@ msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:1983
-msgid "Show Quantity in Forms"
-msgstr "在表格中显示数量"
+#, fuzzy
+#| msgid "Search"
+msgid "Regex Search"
+msgstr "搜索"
#: common/models.py:1984
-msgid "Display available part quantity in some forms"
-msgstr "在某些表格中显示可用的商品数量"
+msgid "Enable regular expressions in search queries"
+msgstr ""
#: common/models.py:1990
-msgid "Escape Key Closes Forms"
+msgid "Whole Word Search"
msgstr ""
#: common/models.py:1991
-msgid "Use the escape key to close modal forms"
+msgid "Search queries return results for whole word matches"
msgstr ""
#: common/models.py:1997
-msgid "Fixed Navbar"
-msgstr ""
+msgid "Show Quantity in Forms"
+msgstr "在表格中显示数量"
#: common/models.py:1998
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
+msgid "Display available part quantity in some forms"
+msgstr "在某些表格中显示可用的商品数量"
#: common/models.py:2004
-msgid "Date Format"
+msgid "Escape Key Closes Forms"
msgstr ""
#: common/models.py:2005
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2011
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2012
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2018
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2019
msgid "Preferred format for displaying dates"
msgstr ""
-#: common/models.py:2019 part/templates/part/detail.html:41
+#: common/models.py:2033 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr ""
-#: common/models.py:2020
+#: common/models.py:2034
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2026 part/templates/part/detail.html:62
+#: common/models.py:2040 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2027
+#: common/models.py:2041
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2033
+#: common/models.py:2047
msgid "Table String Length"
msgstr ""
-#: common/models.py:2034
+#: common/models.py:2048
msgid "Maximimum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2089
+#: common/models.py:2103
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2096 company/serializers.py:424 order/models.py:1060
-#: order/models.py:1852 templates/js/translated/company.js:1411
+#: common/models.py:2110 company/serializers.py:424 order/models.py:1095
+#: order/models.py:1888 templates/js/translated/company.js:1411
#: templates/js/translated/part.js:1520 templates/js/translated/pricing.js:603
-#: templates/js/translated/return_order.js:680
+#: templates/js/translated/return_order.js:683
msgid "Price"
msgstr "价格"
-#: common/models.py:2097
+#: common/models.py:2111
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2257 common/models.py:2435
+#: common/models.py:2271 common/models.py:2449
msgid "Endpoint"
msgstr ""
-#: common/models.py:2258
+#: common/models.py:2272
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2267
+#: common/models.py:2281
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2272 part/admin.py:50 part/models.py:1011
+#: common/models.py:2286 part/admin.py:50 part/models.py:1011
#: plugin/models.py:100 templates/js/translated/table_filters.js:62
#: templates/js/translated/table_filters.js:144
#: templates/js/translated/table_filters.js:380
@@ -3114,97 +3195,97 @@ msgstr ""
msgid "Active"
msgstr ""
-#: common/models.py:2273
+#: common/models.py:2287
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2287
+#: common/models.py:2301
msgid "Token"
msgstr "令牌"
-#: common/models.py:2288
+#: common/models.py:2302
msgid "Token for access"
msgstr ""
-#: common/models.py:2295
+#: common/models.py:2309
msgid "Secret"
msgstr ""
-#: common/models.py:2296
+#: common/models.py:2310
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2402
+#: common/models.py:2416
msgid "Message ID"
msgstr ""
-#: common/models.py:2403
+#: common/models.py:2417
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2411
+#: common/models.py:2425
msgid "Host"
msgstr ""
-#: common/models.py:2412
+#: common/models.py:2426
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2419
+#: common/models.py:2433
msgid "Header"
msgstr ""
-#: common/models.py:2420
+#: common/models.py:2434
msgid "Header of this message"
msgstr ""
-#: common/models.py:2426
+#: common/models.py:2440
msgid "Body"
msgstr ""
-#: common/models.py:2427
+#: common/models.py:2441
msgid "Body of this message"
msgstr ""
-#: common/models.py:2436
+#: common/models.py:2450
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2441
+#: common/models.py:2455
msgid "Worked on"
msgstr ""
-#: common/models.py:2442
+#: common/models.py:2456
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:2596
+#: common/models.py:2610
msgid "Id"
msgstr ""
-#: common/models.py:2602 templates/js/translated/news.js:35
+#: common/models.py:2616 templates/js/translated/news.js:35
msgid "Title"
msgstr ""
-#: common/models.py:2612 templates/js/translated/news.js:51
+#: common/models.py:2626 templates/js/translated/news.js:51
msgid "Published"
msgstr ""
-#: common/models.py:2617 templates/InvenTree/settings/plugin.html:62
+#: common/models.py:2631 templates/InvenTree/settings/plugin.html:62
#: templates/InvenTree/settings/plugin_settings.html:33
#: templates/js/translated/news.js:47
msgid "Author"
msgstr ""
-#: common/models.py:2622 templates/js/translated/news.js:43
+#: common/models.py:2636 templates/js/translated/news.js:43
msgid "Summary"
msgstr ""
-#: common/models.py:2627
+#: common/models.py:2641
msgid "Read"
msgstr ""
-#: common/models.py:2628
+#: common/models.py:2642
msgid "Was this news item read?"
msgstr ""
@@ -3318,9 +3399,9 @@ msgid "Contact email address"
msgstr "联系人电子邮件"
#: company/models.py:126 company/templates/company/company_base.html:140
-#: order/models.py:231 order/templates/order/order_base.html:187
-#: order/templates/order/return_order_base.html:155
-#: order/templates/order/sales_order_base.html:186
+#: order/models.py:232 order/templates/order/order_base.html:206
+#: order/templates/order/return_order_base.html:176
+#: order/templates/order/sales_order_base.html:214
msgid "Contact"
msgstr "联系人"
@@ -3374,7 +3455,7 @@ msgstr "该公司使用的默认货币"
msgid "Company"
msgstr "公司"
-#: company/models.py:277 company/models.py:512 stock/models.py:667
+#: company/models.py:277 company/models.py:512 stock/models.py:668
#: stock/serializers.py:143 stock/templates/stock/item_base.html:143
#: templates/js/translated/bom.js:591
msgid "Base Part"
@@ -3386,8 +3467,8 @@ msgstr "选择商品"
#: company/models.py:292 company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:152 part/serializers.py:359
-#: stock/templates/stock/item_base.html:213
+#: company/templates/company/supplier_part.html:146 part/serializers.py:359
+#: stock/templates/stock/item_base.html:208
#: templates/js/translated/company.js:484
#: templates/js/translated/company.js:809
#: templates/js/translated/company.js:939
@@ -3401,13 +3482,13 @@ msgid "Select manufacturer"
msgstr "选择制造商"
#: company/models.py:299 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:160 part/serializers.py:365
+#: company/templates/company/supplier_part.html:154 part/serializers.py:365
#: templates/js/translated/company.js:325
#: templates/js/translated/company.js:808
#: templates/js/translated/company.js:955
#: templates/js/translated/company.js:1225 templates/js/translated/part.js:1435
-#: templates/js/translated/purchase_order.js:1684
-#: templates/js/translated/purchase_order.js:1891
+#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1958
msgid "MPN"
msgstr ""
@@ -3426,7 +3507,7 @@ msgstr "制造商商品描述"
#: company/models.py:357 company/models.py:381 company/models.py:535
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:223
+#: stock/templates/stock/item_base.html:218
msgid "Manufacturer Part"
msgstr "制造商商品"
@@ -3436,7 +3517,7 @@ msgstr "参数名称"
#: company/models.py:394
#: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2195 templates/js/translated/company.js:857
+#: stock/models.py:2222 templates/js/translated/company.js:857
#: templates/js/translated/company.js:1062 templates/js/translated/part.js:1268
#: templates/js/translated/stock.js:1425
msgid "Value"
@@ -3447,7 +3528,7 @@ msgid "Parameter value"
msgstr "参数值"
#: company/models.py:401 part/admin.py:40 part/models.py:978
-#: part/models.py:3337 part/templates/part/part_base.html:287
+#: part/models.py:3337 part/templates/part/part_base.html:286
#: templates/InvenTree/settings/settings_staff_js.html:255
#: templates/js/translated/company.js:1068 templates/js/translated/part.js:1274
msgid "Units"
@@ -3462,15 +3543,15 @@ msgid "Linked manufacturer part must reference the same base part"
msgstr ""
#: company/models.py:522 company/templates/company/company_base.html:82
-#: company/templates/company/supplier_part.html:136 order/models.py:349
-#: order/templates/order/order_base.html:120 part/bom.py:285 part/bom.py:313
-#: part/serializers.py:348 stock/templates/stock/item_base.html:230
+#: company/templates/company/supplier_part.html:130 order/models.py:350
+#: order/templates/order/order_base.html:139 part/bom.py:285 part/bom.py:313
+#: part/serializers.py:348 stock/templates/stock/item_base.html:225
#: templates/email/overdue_purchase_order.html:16
#: templates/js/translated/company.js:324
#: templates/js/translated/company.js:488
#: templates/js/translated/company.js:1179 templates/js/translated/part.js:1403
#: templates/js/translated/pricing.js:480
-#: templates/js/translated/purchase_order.js:1535
+#: templates/js/translated/purchase_order.js:1602
#: templates/js/translated/table_filters.js:510
msgid "Supplier"
msgstr "供应商"
@@ -3479,12 +3560,12 @@ msgstr "供应商"
msgid "Select supplier"
msgstr "选择供应商"
-#: company/models.py:528 company/templates/company/supplier_part.html:146
+#: company/models.py:528 company/templates/company/supplier_part.html:140
#: part/bom.py:286 part/bom.py:314 part/serializers.py:354
#: templates/js/translated/company.js:323 templates/js/translated/part.js:1421
#: templates/js/translated/pricing.js:492
-#: templates/js/translated/purchase_order.js:1683
-#: templates/js/translated/purchase_order.js:1866
+#: templates/js/translated/purchase_order.js:1750
+#: templates/js/translated/purchase_order.js:1933
msgid "SKU"
msgstr ""
@@ -3504,7 +3585,7 @@ msgstr "外部供货商商品链接URL"
msgid "Supplier part description"
msgstr "供应商商品描述"
-#: company/models.py:553 company/templates/company/supplier_part.html:181
+#: company/models.py:553 company/templates/company/supplier_part.html:175
#: part/admin.py:279 part/models.py:3605 part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_po_report_base.html:32
@@ -3522,9 +3603,9 @@ msgstr ""
msgid "Minimum charge (e.g. stocking fee)"
msgstr "最低收费(例如库存费)"
-#: company/models.py:559 company/templates/company/supplier_part.html:167
-#: stock/admin.py:119 stock/models.py:693
-#: stock/templates/stock/item_base.html:246
+#: company/models.py:559 company/templates/company/supplier_part.html:161
+#: stock/admin.py:119 stock/models.py:694
+#: stock/templates/stock/item_base.html:241
#: templates/js/translated/company.js:1241
#: templates/js/translated/stock.js:2130
msgid "Packaging"
@@ -3535,14 +3616,14 @@ msgid "Part packaging"
msgstr "商品打包"
#: company/models.py:562 company/serializers.py:319
-#: company/templates/company/supplier_part.html:174
+#: company/templates/company/supplier_part.html:168
#: templates/js/translated/company.js:1246 templates/js/translated/part.js:1456
#: templates/js/translated/part.js:1512
#: templates/js/translated/purchase_order.js:250
-#: templates/js/translated/purchase_order.js:775
-#: templates/js/translated/purchase_order.js:1032
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:1939
+#: templates/js/translated/purchase_order.js:778
+#: templates/js/translated/purchase_order.js:1022
+#: templates/js/translated/purchase_order.js:1989
+#: templates/js/translated/purchase_order.js:2006
msgid "Pack Quantity"
msgstr ""
@@ -3628,15 +3709,15 @@ msgstr "从 URL 下载图片"
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:87 order/models.py:736
-#: order/models.py:1652 order/templates/order/return_order_base.html:112
-#: order/templates/order/sales_order_base.html:116 stock/models.py:712
-#: stock/models.py:713 stock/serializers.py:796
-#: stock/templates/stock/item_base.html:402
+#: company/templates/company/company_base.html:87 order/models.py:748
+#: order/models.py:1687 order/templates/order/return_order_base.html:133
+#: order/templates/order/sales_order_base.html:144 stock/models.py:713
+#: stock/models.py:714 stock/serializers.py:796
+#: stock/templates/stock/item_base.html:395
#: templates/email/overdue_sales_order.html:16
#: templates/js/translated/company.js:480
#: templates/js/translated/return_order.js:254
-#: templates/js/translated/sales_order.js:696
+#: templates/js/translated/sales_order.js:722
#: templates/js/translated/stock.js:2738
#: templates/js/translated/table_filters.js:514
msgid "Customer"
@@ -3651,7 +3732,7 @@ msgid "Phone"
msgstr "电话"
#: company/templates/company/company_base.html:206
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:529
msgid "Remove Image"
msgstr ""
@@ -3660,25 +3741,25 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:209
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:532
#: templates/InvenTree/settings/user.html:87
#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:238
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:561
msgid "Upload Image"
msgstr "上传图片"
#: company/templates/company/company_base.html:253
-#: part/templates/part/part_base.html:623
+#: part/templates/part/part_base.html:616
msgid "Download Image"
msgstr "下载图片"
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:120 templates/js/translated/search.js:175
+#: templates/InvenTree/search.html:120 templates/js/translated/search.js:177
msgid "Supplier Parts"
msgstr "供应商商品"
@@ -3709,7 +3790,7 @@ msgid "Delete Parts"
msgstr "删除商品"
#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105
-#: templates/js/translated/search.js:179
+#: templates/js/translated/search.js:181
msgid "Manufacturer Parts"
msgstr "制造商商品"
@@ -3734,7 +3815,7 @@ msgstr "供货商库存"
#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:200
#: templates/InvenTree/settings/sidebar.html:51
-#: templates/js/translated/search.js:233 templates/navbar.html:50
+#: templates/js/translated/search.js:235 templates/navbar.html:50
#: users/models.py:43
msgid "Purchase Orders"
msgstr "采购订单"
@@ -3757,7 +3838,7 @@ msgstr "新建采购订单"
#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:220
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/search.js:247 templates/navbar.html:62
+#: templates/js/translated/search.js:249 templates/navbar.html:62
#: users/models.py:44
msgid "Sales Orders"
msgstr "销售订单"
@@ -3783,7 +3864,7 @@ msgstr ""
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:260 templates/navbar.html:65
+#: templates/js/translated/search.js:262 templates/navbar.html:65
#: users/models.py:45
#, fuzzy
#| msgid "Returned"
@@ -3827,7 +3908,7 @@ msgid "Manufacturers"
msgstr "制造商"
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:221
+#: company/templates/company/supplier_part.html:215
#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85
msgid "Order part"
msgstr "订购商品"
@@ -3867,8 +3948,8 @@ msgstr "删除供应商商品"
#: company/templates/company/manufacturer_part.html:183
#: part/templates/part/detail.html:393 part/templates/part/detail.html:423
#: templates/js/translated/forms.js:499 templates/js/translated/helpers.js:58
-#: templates/js/translated/part.js:313 templates/js/translated/stock.js:186
-#: users/models.py:243
+#: templates/js/translated/part.js:313 templates/js/translated/pricing.js:611
+#: templates/js/translated/stock.js:186 users/models.py:243
msgid "Delete"
msgstr "删除"
@@ -3918,50 +3999,21 @@ msgid "Contacts"
msgstr "联系人"
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:676
-#: stock/templates/stock/item_base.html:239
+#: company/templates/company/supplier_part.html:24 stock/models.py:677
+#: stock/templates/stock/item_base.html:234
#: templates/js/translated/company.js:1195
-#: templates/js/translated/purchase_order.js:695
+#: templates/js/translated/purchase_order.js:698
#: templates/js/translated/stock.js:1990
msgid "Supplier Part"
msgstr "供应商商品"
-#: company/templates/company/supplier_part.html:36
-#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:41
-#: stock/templates/stock/location.html:54
-msgid "Barcode actions"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:40
-#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:45
-#: stock/templates/stock/location.html:56 templates/qr_button.html:1
-msgid "Show QR Code"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:42
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:58
-#: templates/js/translated/barcode.js:453
-#: templates/js/translated/barcode.js:458
-msgid "Unlink Barcode"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:44
-#: part/templates/part/part_base.html:51
-#: stock/templates/stock/item_base.html:50
-#: stock/templates/stock/location.html:60
-msgid "Link Barcode"
-msgstr ""
-
#: company/templates/company/supplier_part.html:51
msgid "Supplier part actions"
msgstr ""
#: company/templates/company/supplier_part.html:56
#: company/templates/company/supplier_part.html:57
-#: company/templates/company/supplier_part.html:222
+#: company/templates/company/supplier_part.html:216
#: part/templates/part/detail.html:112
msgid "Order Part"
msgstr "订购商品"
@@ -3991,67 +4043,60 @@ msgstr ""
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:122
-#: part/templates/part/part_base.html:308
-#: stock/templates/stock/item_base.html:161
-#: stock/templates/stock/location.html:156
-msgid "Barcode Identifier"
-msgstr ""
-
-#: company/templates/company/supplier_part.html:140
+#: company/templates/company/supplier_part.html:134
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:200
+#: company/templates/company/supplier_part.html:194
msgid "Supplier Part Stock"
msgstr "供货商商品库存"
-#: company/templates/company/supplier_part.html:203
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:203
+#: company/templates/company/supplier_part.html:197
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:204
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:198
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198
#: templates/js/translated/stock.js:471
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:217
+#: company/templates/company/supplier_part.html:211
msgid "Supplier Part Orders"
msgstr "供应商商品订单"
-#: company/templates/company/supplier_part.html:242
+#: company/templates/company/supplier_part.html:236
msgid "Pricing Information"
msgstr "价格信息"
-#: company/templates/company/supplier_part.html:247
+#: company/templates/company/supplier_part.html:241
#: templates/js/translated/company.js:373
#: templates/js/translated/pricing.js:666
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:274
+#: company/templates/company/supplier_part.html:268
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:285
+#: company/templates/company/supplier_part.html:279
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:360
+#: company/templates/company/supplier_part.html:354
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:288
#: part/templates/part/category.html:199
#: part/templates/part/category_sidebar.html:17 stock/admin.py:47
-#: stock/templates/stock/location.html:174
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:182
+#: stock/templates/stock/location.html:194
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:977
-#: templates/js/translated/search.js:200 templates/js/translated/stock.js:2569
+#: templates/js/translated/search.js:202 templates/js/translated/stock.js:2569
#: users/models.py:41
msgid "Stock Items"
msgstr "库存项"
@@ -4077,7 +4122,7 @@ msgstr "客户信息"
msgid "New Customer"
msgstr "新建客户"
-#: company/views.py:52 templates/js/translated/search.js:220
+#: company/views.py:52 templates/js/translated/search.js:222
msgid "Companies"
msgstr "公司"
@@ -4151,375 +4196,379 @@ msgstr "查询筛选器 (逗号分隔的键值对列表"
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr "商品查询筛选器 (逗号分隔的键值对列表)"
-#: order/api.py:229
+#: order/api.py:225
msgid "No matching purchase order found"
msgstr ""
-#: order/api.py:1514 order/models.py:1106 order/models.py:1190
+#: order/api.py:1420 order/models.py:1141 order/models.py:1225
#: order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report_base.html:14
-#: stock/templates/stock/item_base.html:182
+#: stock/templates/stock/item_base.html:177
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1380 templates/js/translated/pricing.js:772
#: templates/js/translated/purchase_order.js:108
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1519
+#: templates/js/translated/purchase_order.js:699
+#: templates/js/translated/purchase_order.js:1586
#: templates/js/translated/stock.js:1970 templates/js/translated/stock.js:2685
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1518
+#: order/api.py:1424
msgid "Unknown"
msgstr ""
-#: order/models.py:66 report/templates/report/inventree_po_report_base.html:31
+#: order/models.py:67 report/templates/report/inventree_po_report_base.html:31
#: report/templates/report/inventree_so_report_base.html:31
-#: templates/js/translated/order.js:299
-#: templates/js/translated/purchase_order.js:1963
-#: templates/js/translated/sales_order.js:1711
+#: templates/js/translated/order.js:302
+#: templates/js/translated/purchase_order.js:2030
+#: templates/js/translated/sales_order.js:1739
msgid "Total Price"
msgstr ""
-#: order/models.py:67
+#: order/models.py:68
#, fuzzy
#| msgid "User or group responsible for this order"
msgid "Total price for this order"
msgstr "负责此订单的用户或群组"
-#: order/models.py:177
+#: order/models.py:178
#, fuzzy
#| msgid "Build output does not match the parent build"
msgid "Contact does not match selected company"
msgstr "生产产出与对应生产不匹配"
-#: order/models.py:199
-msgid "Order description"
-msgstr ""
+#: order/models.py:200
+#, fuzzy
+#| msgid "Description (optional)"
+msgid "Order description (optional)"
+msgstr "描述 (可选)"
-#: order/models.py:201 order/models.py:1378 order/models.py:1856
+#: order/models.py:202 order/models.py:1063 order/models.py:1413
msgid "Link to external page"
msgstr ""
-#: order/models.py:206
+#: order/models.py:207
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:215
+#: order/models.py:216
msgid "Created By"
msgstr ""
-#: order/models.py:222
+#: order/models.py:223
msgid "User or group responsible for this order"
msgstr "负责此订单的用户或群组"
-#: order/models.py:232
+#: order/models.py:233
#, fuzzy
#| msgid "Priority of this build order"
msgid "Point of contact for this order"
msgstr "此构建订单的优先级"
-#: order/models.py:236
+#: order/models.py:237
msgid "Order notes"
msgstr ""
-#: order/models.py:327 order/models.py:723
+#: order/models.py:328 order/models.py:735
msgid "Order reference"
msgstr ""
-#: order/models.py:335 order/models.py:748
+#: order/models.py:336 order/models.py:760
msgid "Purchase order status"
msgstr ""
-#: order/models.py:350
+#: order/models.py:351
msgid "Company from which the items are being ordered"
msgstr "订购该商品的公司"
-#: order/models.py:358 order/templates/order/order_base.html:132
-#: templates/js/translated/purchase_order.js:1544
+#: order/models.py:359 order/templates/order/order_base.html:151
+#: templates/js/translated/purchase_order.js:1611
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:358
+#: order/models.py:359
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:365
+#: order/models.py:366
msgid "received by"
msgstr ""
-#: order/models.py:370 order/models.py:1675
+#: order/models.py:371 order/models.py:1710
msgid "Issue Date"
msgstr ""
-#: order/models.py:371 order/models.py:1676
+#: order/models.py:372 order/models.py:1711
msgid "Date order was issued"
msgstr ""
-#: order/models.py:377 order/models.py:1682
+#: order/models.py:378 order/models.py:1717
msgid "Date order was completed"
msgstr ""
-#: order/models.py:412
+#: order/models.py:413
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:560
+#: order/models.py:566
msgid "Quantity must be a positive number"
msgstr "数量必须大于0"
-#: order/models.py:737
+#: order/models.py:749
msgid "Company to which the items are being sold"
msgstr "向其出售该商品的公司"
-#: order/models.py:756 order/models.py:1669
+#: order/models.py:768 order/models.py:1704
msgid "Customer Reference "
msgstr ""
-#: order/models.py:756 order/models.py:1670
+#: order/models.py:768 order/models.py:1705
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:758 order/models.py:1336
-#: templates/js/translated/sales_order.js:743
-#: templates/js/translated/sales_order.js:906
+#: order/models.py:770 order/models.py:1371
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:932
msgid "Shipment Date"
msgstr ""
-#: order/models.py:765
+#: order/models.py:777
msgid "shipped by"
msgstr ""
-#: order/models.py:809
+#: order/models.py:826
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
-#: order/models.py:813
-msgid "Only a pending order can be marked as complete"
-msgstr ""
+#: order/models.py:830
+#, fuzzy
+#| msgid "Build Order is ready to mark as completed"
+msgid "Only an open order can be marked as complete"
+msgstr "构建订单已准备好标记为已完成"
-#: order/models.py:816 templates/js/translated/sales_order.js:437
+#: order/models.py:833 templates/js/translated/sales_order.js:441
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:819
+#: order/models.py:836
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1014
+#: order/models.py:1043
msgid "Item quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1056
msgid "Line item reference"
msgstr ""
-#: order/models.py:1029
+#: order/models.py:1058
msgid "Line item notes"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1069
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1051
+#: order/models.py:1086
msgid "Context"
msgstr ""
-#: order/models.py:1052
+#: order/models.py:1087
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1061
+#: order/models.py:1096
msgid "Unit price"
msgstr ""
-#: order/models.py:1091
+#: order/models.py:1126
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1099
+#: order/models.py:1134
msgid "deleted"
msgstr ""
-#: order/models.py:1105 order/models.py:1190 order/models.py:1231
-#: order/models.py:1330 order/models.py:1465 order/models.py:1821
-#: order/models.py:1870 templates/js/translated/sales_order.js:1357
+#: order/models.py:1140 order/models.py:1225 order/models.py:1266
+#: order/models.py:1365 order/models.py:1500 order/models.py:1857
+#: order/models.py:1904 templates/js/translated/sales_order.js:1383
msgid "Order"
msgstr ""
-#: order/models.py:1124
+#: order/models.py:1159
msgid "Supplier part"
msgstr "供应商商品"
-#: order/models.py:1131 order/templates/order/order_base.html:180
+#: order/models.py:1166 order/templates/order/order_base.html:199
#: templates/js/translated/part.js:1504 templates/js/translated/part.js:1536
-#: templates/js/translated/purchase_order.js:1198
-#: templates/js/translated/purchase_order.js:2007
-#: templates/js/translated/return_order.js:703
+#: templates/js/translated/purchase_order.js:1225
+#: templates/js/translated/purchase_order.js:2074
+#: templates/js/translated/return_order.js:706
#: templates/js/translated/table_filters.js:48
#: templates/js/translated/table_filters.js:421
msgid "Received"
msgstr ""
-#: order/models.py:1132
+#: order/models.py:1167
msgid "Number of items received"
msgstr ""
-#: order/models.py:1139 stock/models.py:809 stock/serializers.py:229
-#: stock/templates/stock/item_base.html:189
+#: order/models.py:1174 stock/models.py:810 stock/serializers.py:229
+#: stock/templates/stock/item_base.html:184
#: templates/js/translated/stock.js:2021
msgid "Purchase Price"
msgstr "采购价格"
-#: order/models.py:1140
+#: order/models.py:1175
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1188
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:1219
+#: order/models.py:1254
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1224
+#: order/models.py:1259
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1250 part/templates/part/part_pricing.html:107
+#: order/models.py:1285 part/templates/part/part_pricing.html:107
#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:922
msgid "Sale Price"
msgstr "销售价格"
-#: order/models.py:1251
+#: order/models.py:1286
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1261
+#: order/models.py:1296
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1337
+#: order/models.py:1372
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1344
+#: order/models.py:1379
msgid "Checked By"
msgstr ""
-#: order/models.py:1345
+#: order/models.py:1380
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1352 order/models.py:1541 order/serializers.py:1202
-#: order/serializers.py:1330 templates/js/translated/model_renderers.js:403
+#: order/models.py:1387 order/models.py:1576 order/serializers.py:1224
+#: order/serializers.py:1352 templates/js/translated/model_renderers.js:409
msgid "Shipment"
msgstr ""
-#: order/models.py:1353
+#: order/models.py:1388
msgid "Shipment number"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1392
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1363
+#: order/models.py:1398
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1364
+#: order/models.py:1399
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1371
+#: order/models.py:1406
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1372
+#: order/models.py:1407
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1390
+#: order/models.py:1425
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1428
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1500 order/models.py:1502
+#: order/models.py:1535 order/models.py:1537
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1506
+#: order/models.py:1541
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1508
+#: order/models.py:1543
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1511
+#: order/models.py:1546
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1521 order/serializers.py:1064
+#: order/models.py:1556 order/serializers.py:1086
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1524
+#: order/models.py:1559
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1525
+#: order/models.py:1560
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1533
+#: order/models.py:1568
msgid "Line"
msgstr ""
-#: order/models.py:1542
+#: order/models.py:1577
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1555 order/models.py:1829
-#: templates/js/translated/return_order.js:661
+#: order/models.py:1590 order/models.py:1865
+#: templates/js/translated/return_order.js:664
msgid "Item"
msgstr ""
-#: order/models.py:1556
+#: order/models.py:1591
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1559
+#: order/models.py:1594
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:1639
+#: order/models.py:1674
#, fuzzy
#| msgid "Build Order Reference"
msgid "Return Order reference"
msgstr "相关生产订单"
-#: order/models.py:1653
+#: order/models.py:1688
#, fuzzy
#| msgid "Company from which the items are being ordered"
msgid "Company from which items are being returned"
msgstr "订购该商品的公司"
-#: order/models.py:1664
+#: order/models.py:1699
msgid "Return order status"
msgstr ""
-#: order/models.py:1814
+#: order/models.py:1850
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:1822 order/models.py:1870
+#: order/models.py:1858 order/models.py:1904
#: order/templates/order/return_order_base.html:9
#: order/templates/order/return_order_base.html:28
#: report/templates/report/inventree_return_order_report_base.html:13
@@ -4530,170 +4579,176 @@ msgstr ""
msgid "Return Order"
msgstr "已退回"
-#: order/models.py:1830
+#: order/models.py:1866
#, fuzzy
#| msgid "Returned from customer"
msgid "Select item to return from customer"
msgstr "从客户退货"
-#: order/models.py:1835
+#: order/models.py:1871
msgid "Received Date"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1872
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:1847 templates/js/translated/return_order.js:672
+#: order/models.py:1883 templates/js/translated/return_order.js:675
#: templates/js/translated/table_filters.js:51
msgid "Outcome"
msgstr ""
-#: order/models.py:1847
+#: order/models.py:1883
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:1853
+#: order/models.py:1889
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/serializers.py:223
+#: order/serializers.py:228
msgid "Order cannot be cancelled"
msgstr "无法取消订单"
-#: order/serializers.py:238 order/serializers.py:1082
+#: order/serializers.py:243 order/serializers.py:1104
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:249 order/serializers.py:1093
+#: order/serializers.py:254 order/serializers.py:1115
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:361
+#: order/serializers.py:367
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:379
+#: order/serializers.py:385
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:397
+#: order/serializers.py:403
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:402
+#: order/serializers.py:408
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:408
+#: order/serializers.py:414
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:409
+#: order/serializers.py:415
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:447 order/serializers.py:1170
+#: order/serializers.py:453 order/serializers.py:1192
msgid "Line Item"
msgstr ""
-#: order/serializers.py:453
+#: order/serializers.py:459
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:463 order/serializers.py:582 order/serializers.py:1541
+#: order/serializers.py:469 order/serializers.py:590 order/serializers.py:1563
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:482 templates/js/translated/purchase_order.js:1059
+#: order/serializers.py:488 templates/js/translated/purchase_order.js:1049
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:490 templates/js/translated/purchase_order.js:1070
+#: order/serializers.py:496 templates/js/translated/purchase_order.js:1073
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:504
-msgid "Unique identifier field"
-msgstr ""
+#: order/serializers.py:509 templates/js/translated/barcode.js:41
+msgid "Barcode"
+msgstr "条形码"
-#: order/serializers.py:518
+#: order/serializers.py:510
+#, fuzzy
+#| msgid "Scan Barcode"
+msgid "Scanned barcode"
+msgstr "扫描条形码"
+
+#: order/serializers.py:526
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:544
+#: order/serializers.py:552
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:598 order/serializers.py:1556
+#: order/serializers.py:606 order/serializers.py:1578
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:615
+#: order/serializers.py:623
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:626
+#: order/serializers.py:634
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:907
+#: order/serializers.py:929
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:962
+#: order/serializers.py:984
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1025 order/serializers.py:1179
+#: order/serializers.py:1047 order/serializers.py:1201
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1047
+#: order/serializers.py:1069
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1192
+#: order/serializers.py:1214
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1214 order/serializers.py:1338
+#: order/serializers.py:1236 order/serializers.py:1360
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1217 order/serializers.py:1341
+#: order/serializers.py:1239 order/serializers.py:1363
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1271
+#: order/serializers.py:1293
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1281
+#: order/serializers.py:1303
msgid "The following serial numbers are already allocated"
msgstr ""
-#: order/serializers.py:1507
+#: order/serializers.py:1529
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1514
+#: order/serializers.py:1536
#, fuzzy
#| msgid "Build output does not match Build Order"
msgid "Line item does not match return order"
msgstr "生产产出与订单不匹配"
-#: order/serializers.py:1517
+#: order/serializers.py:1539
#, fuzzy
#| msgid "This build output has already been completed"
msgid "Line item has already been received"
msgstr "此生产产出已经完成"
-#: order/serializers.py:1549
+#: order/serializers.py:1571
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1629
+#: order/serializers.py:1652
#, fuzzy
#| msgid "Uses default currency"
msgid "Line price currency"
@@ -4717,113 +4772,129 @@ msgstr ""
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:33
+#: order/templates/order/order_base.html:51
msgid "Print purchase order report"
msgstr ""
-#: order/templates/order/order_base.html:35
-#: order/templates/order/return_order_base.html:45
-#: order/templates/order/sales_order_base.html:45
+#: order/templates/order/order_base.html:53
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
msgid "Export order to file"
msgstr ""
-#: order/templates/order/order_base.html:41
-#: order/templates/order/return_order_base.html:55
-#: order/templates/order/sales_order_base.html:54
+#: order/templates/order/order_base.html:59
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
msgid "Order actions"
msgstr ""
-#: order/templates/order/order_base.html:46
-#: order/templates/order/return_order_base.html:59
-#: order/templates/order/sales_order_base.html:58
+#: order/templates/order/order_base.html:64
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:50
-#: order/templates/order/return_order_base.html:61
-#: order/templates/order/sales_order_base.html:61
+#: order/templates/order/order_base.html:68
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Cancel order"
msgstr "取消订单"
-#: order/templates/order/order_base.html:55
+#: order/templates/order/order_base.html:73
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:61
-#: order/templates/order/order_base.html:62
-#: order/templates/order/return_order_base.html:65
-#: order/templates/order/return_order_base.html:66
-msgid "Submit Order"
-msgstr ""
+#: order/templates/order/order_base.html:79
+#: order/templates/order/order_base.html:80
+#: order/templates/order/return_order_base.html:83
+#: order/templates/order/return_order_base.html:84
+#: order/templates/order/sales_order_base.html:84
+#: order/templates/order/sales_order_base.html:85
+#, fuzzy
+#| msgid "Build Order"
+msgid "Issue Order"
+msgstr "生产订单"
-#: order/templates/order/order_base.html:65
+#: order/templates/order/order_base.html:83
msgid "Receive items"
msgstr ""
-#: order/templates/order/order_base.html:67
+#: order/templates/order/order_base.html:85
msgid "Receive Items"
msgstr ""
-#: order/templates/order/order_base.html:69
-#: order/templates/order/return_order_base.html:69
+#: order/templates/order/order_base.html:87
+#: order/templates/order/return_order_base.html:87
msgid "Mark order as complete"
msgstr ""
-#: order/templates/order/order_base.html:70
-#: order/templates/order/return_order_base.html:70
-#: order/templates/order/sales_order_base.html:68
+#: order/templates/order/order_base.html:88
+#: order/templates/order/return_order_base.html:88
+#: order/templates/order/sales_order_base.html:94
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:92
-#: order/templates/order/return_order_base.html:84
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:110
+#: order/templates/order/return_order_base.html:102
+#: order/templates/order/sales_order_base.html:107
msgid "Order Reference"
msgstr ""
-#: order/templates/order/order_base.html:97
-#: order/templates/order/return_order_base.html:89
-#: order/templates/order/sales_order_base.html:85
+#: order/templates/order/order_base.html:115
+#: order/templates/order/return_order_base.html:107
+#: order/templates/order/sales_order_base.html:112
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:102
-#: order/templates/order/return_order_base.html:94
-#: order/templates/order/sales_order_base.html:90
+#: order/templates/order/order_base.html:121
+#: order/templates/order/return_order_base.html:115
+#: order/templates/order/sales_order_base.html:118
msgid "Order Status"
msgstr ""
-#: order/templates/order/order_base.html:125
+#: order/templates/order/order_base.html:144
msgid "No suppplier information available"
msgstr ""
-#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:129
+#: order/templates/order/order_base.html:157
+#: order/templates/order/sales_order_base.html:157
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:144
-#: order/templates/order/sales_order_base.html:135
-#: order/templates/order/sales_order_base.html:145
+#: order/templates/order/order_base.html:163
+#: order/templates/order/sales_order_base.html:163
+#: order/templates/order/sales_order_base.html:173
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:163
-#: order/templates/order/return_order_base.html:138
+#: order/templates/order/order_base.html:182
+#: order/templates/order/return_order_base.html:159
#: report/templates/report/inventree_build_order_base.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:201
+#: order/templates/order/order_base.html:220
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:205
-#: order/templates/order/return_order_base.html:173
-#: order/templates/order/sales_order_base.html:204
+#: order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:194
+#: order/templates/order/sales_order_base.html:232
msgid "Total cost could not be calculated"
msgstr ""
+#: order/templates/order/order_base.html:330
+#, fuzzy
+#| msgid "Purchase Orders"
+msgid "Purchase Order QR Code"
+msgstr "采购订单"
+
+#: order/templates/order/order_base.html:342
+#, fuzzy
+#| msgid "Create Purchase Order"
+msgid "Link Barcode to Purchase Order"
+msgstr "创建采购订单"
+
#: order/templates/order/order_wizard/match_fields.html:9
#: part/templates/part/import_wizard/ajax_match_fields.html:9
#: part/templates/part/import_wizard/match_fields.html:9
@@ -4875,10 +4946,10 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/bom.js:102 templates/js/translated/build.js:485
#: templates/js/translated/build.js:646 templates/js/translated/build.js:2097
-#: templates/js/translated/purchase_order.js:640
-#: templates/js/translated/purchase_order.js:1144
-#: templates/js/translated/return_order.js:449
-#: templates/js/translated/sales_order.js:979
+#: templates/js/translated/purchase_order.js:643
+#: templates/js/translated/purchase_order.js:1155
+#: templates/js/translated/return_order.js:452
+#: templates/js/translated/sales_order.js:1005
#: templates/js/translated/stock.js:660 templates/js/translated/stock.js:829
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -4940,9 +5011,9 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:28
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:367
-#: templates/js/translated/return_order.js:402
-#: templates/js/translated/sales_order.js:175
+#: templates/js/translated/purchase_order.js:370
+#: templates/js/translated/return_order.js:405
+#: templates/js/translated/sales_order.js:179
msgid "Add Line Item"
msgstr ""
@@ -4982,67 +5053,93 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:43
+#: order/templates/order/return_order_base.html:61
#, fuzzy
#| msgid "Print build order report"
msgid "Print return order report"
msgstr "打印构建订单报告"
-#: order/templates/order/return_order_base.html:47
-#: order/templates/order/sales_order_base.html:47
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:119
-#: order/templates/order/sales_order_base.html:123
+#: order/templates/order/return_order_base.html:140
+#: order/templates/order/sales_order_base.html:151
#: templates/js/translated/return_order.js:267
-#: templates/js/translated/sales_order.js:709
+#: templates/js/translated/sales_order.js:735
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:169
-#: order/templates/order/sales_order_base.html:200
+#: order/templates/order/return_order_base.html:190
+#: order/templates/order/sales_order_base.html:228
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
#: part/templates/part/part_pricing.html:99
#: part/templates/part/part_pricing.html:114
#: templates/js/translated/part.js:989
-#: templates/js/translated/purchase_order.js:1582
+#: templates/js/translated/purchase_order.js:1649
#: templates/js/translated/return_order.js:327
-#: templates/js/translated/sales_order.js:755
+#: templates/js/translated/sales_order.js:781
msgid "Total Cost"
msgstr ""
+#: order/templates/order/return_order_base.html:258
+#, fuzzy
+#| msgid "Returned"
+msgid "Return Order QR Code"
+msgstr "已退回"
+
+#: order/templates/order/return_order_base.html:270
+#, fuzzy
+#| msgid "Create Purchase Order"
+msgid "Link Barcode to Return Order"
+msgstr "创建采购订单"
+
#: order/templates/order/return_order_sidebar.html:5
#, fuzzy
#| msgid "Build Order Details"
msgid "Order Details"
msgstr "生产订单详情"
-#: order/templates/order/sales_order_base.html:43
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
-#: templates/js/translated/sales_order.js:361
-msgid "Complete Shipments"
-msgstr ""
+#: order/templates/order/sales_order_base.html:89
+#: order/templates/order/sales_order_base.html:90
+#, fuzzy
+#| msgid "Match Items"
+msgid "Ship Items"
+msgstr "匹配项"
-#: order/templates/order/sales_order_base.html:67
-#: templates/js/translated/sales_order.js:415
+#: order/templates/order/sales_order_base.html:93
+#: templates/js/translated/sales_order.js:419
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:103
+#: order/templates/order/sales_order_base.html:131
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:141
+#: order/templates/order/sales_order_base.html:169
#: order/templates/order/sales_order_detail.html:105
#: order/templates/order/so_sidebar.html:11
msgid "Completed Shipments"
msgstr ""
+#: order/templates/order/sales_order_base.html:305
+#, fuzzy
+#| msgid "Sales Order"
+msgid "Sales Order QR Code"
+msgstr "销售订单"
+
+#: order/templates/order/sales_order_base.html:317
+#, fuzzy
+#| msgid "New Sales Order"
+msgid "Link Barcode to Sales Order"
+msgstr "新建销售订单"
+
#: order/templates/order/sales_order_detail.html:18
msgid "Sales Order Items"
msgstr ""
@@ -5098,20 +5195,20 @@ msgstr ""
msgid "Part Description"
msgstr ""
-#: part/admin.py:36 part/models.py:880 part/templates/part/part_base.html:272
+#: part/admin.py:36 part/models.py:880 part/templates/part/part_base.html:271
#: templates/js/translated/part.js:1143 templates/js/translated/part.js:1855
#: templates/js/translated/stock.js:1769
msgid "IPN"
msgstr ""
-#: part/admin.py:37 part/models.py:887 part/templates/part/part_base.html:280
+#: part/admin.py:37 part/models.py:887 part/templates/part/part_base.html:279
#: report/models.py:177 templates/js/translated/part.js:1148
#: templates/js/translated/part.js:1861
msgid "Revision"
msgstr ""
#: part/admin.py:38 part/admin.py:198 part/models.py:866
-#: part/templates/part/category.html:93 part/templates/part/part_base.html:301
+#: part/templates/part/category.html:93 part/templates/part/part_base.html:300
msgid "Keywords"
msgstr "关键词"
@@ -5131,17 +5228,17 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:47 part/models.py:971 part/templates/part/part_base.html:206
+#: part/admin.py:47 part/models.py:971 part/templates/part/part_base.html:205
msgid "Minimum Stock"
msgstr "最低库存"
-#: part/admin.py:61 part/templates/part/part_base.html:200
+#: part/admin.py:61 part/templates/part/part_base.html:199
#: templates/js/translated/company.js:1277
#: templates/js/translated/table_filters.js:253
msgid "In Stock"
msgstr ""
-#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:213
+#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212
#: templates/js/translated/bom.js:1163 templates/js/translated/build.js:1940
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1749
#: templates/js/translated/table_filters.js:96
@@ -5154,11 +5251,11 @@ msgstr ""
#: part/admin.py:64 templates/js/translated/build.js:1954
#: templates/js/translated/build.js:2214 templates/js/translated/build.js:2799
-#: templates/js/translated/sales_order.js:1790
+#: templates/js/translated/sales_order.js:1818
msgid "Allocated"
msgstr ""
-#: part/admin.py:65 part/templates/part/part_base.html:244 stock/admin.py:124
+#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124
#: templates/js/translated/part.js:635 templates/js/translated/part.js:1753
msgid "Building"
msgstr ""
@@ -5190,7 +5287,7 @@ msgstr "类别路径"
#: part/templates/part/category_sidebar.html:9
#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:84
#: templates/InvenTree/settings/sidebar.html:43
-#: templates/js/translated/part.js:2367 templates/js/translated/search.js:158
+#: templates/js/translated/part.js:2367 templates/js/translated/search.js:160
#: templates/navbar.html:24 users/models.py:38
msgid "Parts"
msgstr "商品"
@@ -5221,36 +5318,36 @@ msgstr ""
msgid "Maximum Price"
msgstr ""
-#: part/api.py:515
+#: part/api.py:495
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:535
+#: part/api.py:515
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:553
+#: part/api.py:533
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:639
+#: part/api.py:619
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:797
+#: part/api.py:767
msgid "Valid"
msgstr ""
-#: part/api.py:798
+#: part/api.py:768
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:804
+#: part/api.py:774
msgid "This option must be selected"
msgstr ""
#: part/bom.py:175 part/models.py:121 part/models.py:914
-#: part/templates/part/category.html:115 part/templates/part/part_base.html:376
+#: part/templates/part/category.html:115 part/templates/part/part_base.html:369
msgid "Default Location"
msgstr "默认仓储地点"
@@ -5258,8 +5355,8 @@ msgstr "默认仓储地点"
msgid "Total Stock"
msgstr ""
-#: part/bom.py:177 part/templates/part/part_base.html:195
-#: templates/js/translated/sales_order.js:1757
+#: part/bom.py:177 part/templates/part/part_base.html:194
+#: templates/js/translated/sales_order.js:1785
msgid "Available Stock"
msgstr "可用库存"
@@ -5273,7 +5370,7 @@ msgid "Part Category"
msgstr "商品类别"
#: part/models.py:72 part/templates/part/category.html:135
-#: templates/InvenTree/search.html:97 templates/js/translated/search.js:186
+#: templates/InvenTree/search.html:97 templates/js/translated/search.js:188
#: users/models.py:37
msgid "Part Categories"
msgstr "商品类别"
@@ -5282,7 +5379,7 @@ msgstr "商品类别"
msgid "Default location for parts in this category"
msgstr "此类别商品的默认仓储地点"
-#: part/models.py:127 stock/models.py:119 templates/js/translated/stock.js:2575
+#: part/models.py:127 stock/models.py:120 templates/js/translated/stock.js:2575
#: templates/js/translated/table_filters.js:163
#: templates/js/translated/table_filters.js:182
msgid "Structural"
@@ -5300,11 +5397,11 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr "此类别商品的默认关键字"
-#: part/models.py:138 stock/models.py:108
+#: part/models.py:138 stock/models.py:109
msgid "Icon"
msgstr ""
-#: part/models.py:139 stock/models.py:109
+#: part/models.py:139 stock/models.py:110
msgid "Icon (optional)"
msgstr ""
@@ -5358,20 +5455,22 @@ msgstr ""
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:855
+#: part/models.py:855 part/templates/part/part_base.html:179
msgid "Variant Of"
msgstr ""
#: part/models.py:861
-msgid "Part description"
-msgstr "商品描述"
+#, fuzzy
+#| msgid "Description (optional)"
+msgid "Part description (optional)"
+msgstr "描述 (可选)"
#: part/models.py:867
msgid "Part keywords to improve visibility in search results"
msgstr "提高搜索结果可见性的关键字"
#: part/models.py:874 part/models.py:3182 part/models.py:3419
-#: part/serializers.py:849 part/templates/part/part_base.html:263
+#: part/serializers.py:849 part/templates/part/part_base.html:262
#: templates/InvenTree/settings/settings_staff_js.html:132
#: templates/js/translated/notification.js:50
#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2097
@@ -5394,7 +5493,7 @@ msgstr "商品版本号"
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:957 part/templates/part/part_base.html:385
+#: part/models.py:957 part/templates/part/part_base.html:378
msgid "Default Supplier"
msgstr ""
@@ -5474,8 +5573,8 @@ msgstr "新建用户"
msgid "User responsible for this part"
msgstr ""
-#: part/models.py:1036 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:448
+#: part/models.py:1036 part/templates/part/part_base.html:341
+#: stock/templates/stock/item_base.html:441
#: templates/js/translated/part.js:1947
msgid "Last Stocktake"
msgstr ""
@@ -5632,7 +5731,7 @@ msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:368
#: templates/js/translated/part.js:1002 templates/js/translated/pricing.js:794
#: templates/js/translated/pricing.js:915
-#: templates/js/translated/purchase_order.js:1561
+#: templates/js/translated/purchase_order.js:1628
#: templates/js/translated/stock.js:2613
msgid "Date"
msgstr ""
@@ -5887,7 +5986,7 @@ msgstr ""
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:3713 stock/models.py:569
+#: part/models.py:3713 stock/models.py:570
msgid "Quantity must be integer value for trackable parts"
msgstr ""
@@ -6167,7 +6266,7 @@ msgstr ""
#: part/tasks.py:289 templates/js/translated/part.js:983
#: templates/js/translated/part.js:1456 templates/js/translated/part.js:1512
-#: templates/js/translated/purchase_order.js:1922
+#: templates/js/translated/purchase_order.js:1989
msgid "Total Quantity"
msgstr ""
@@ -6192,9 +6291,10 @@ msgid "You do not have permission to edit the BOM."
msgstr ""
#: part/templates/part/bom.html:15
-#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
-msgstr ""
+#, fuzzy
+#| msgid "Some stock items have been overallocated"
+msgid "The BOM this part has been changed, and must be validated"
+msgstr "一些库存项已被过度分配"
#: part/templates/part/bom.html:17
#, python-format
@@ -6329,7 +6429,7 @@ msgid "Refresh scheduling data"
msgstr ""
#: part/templates/part/detail.html:45 part/templates/part/prices.html:15
-#: templates/js/translated/tables.js:562
+#: templates/js/translated/tables.js:572
msgid "Refresh"
msgstr ""
@@ -6481,13 +6581,13 @@ msgstr ""
#: part/templates/part/import_wizard/part_upload.html:92
#: templates/js/translated/bom.js:278 templates/js/translated/bom.js:312
-#: templates/js/translated/order.js:109 templates/js/translated/tables.js:183
+#: templates/js/translated/order.js:112 templates/js/translated/tables.js:183
msgid "Format"
msgstr ""
#: part/templates/part/import_wizard/part_upload.html:93
#: templates/js/translated/bom.js:279 templates/js/translated/bom.js:313
-#: templates/js/translated/order.js:110
+#: templates/js/translated/order.js:113
msgid "Select file format"
msgstr ""
@@ -6572,9 +6672,10 @@ msgid "Part can be sold to customers"
msgstr "商品可以销售给客户"
#: part/templates/part/part_base.html:147
-#: part/templates/part/part_base.html:155
-msgid "Part is virtual (not a physical part)"
-msgstr "商品是虚拟的(不是实体零件)"
+#, fuzzy
+#| msgid "Print actions"
+msgid "Part is not active"
+msgstr "打印操作"
#: part/templates/part/part_base.html:148
#: templates/js/translated/company.js:930
@@ -6584,71 +6685,70 @@ msgstr "商品是虚拟的(不是实体零件)"
msgid "Inactive"
msgstr ""
+#: part/templates/part/part_base.html:155
+msgid "Part is virtual (not a physical part)"
+msgstr "商品是虚拟的(不是实体零件)"
+
#: part/templates/part/part_base.html:165
-#: part/templates/part/part_base.html:691
+#: part/templates/part/part_base.html:684
msgid "Show Part Details"
msgstr ""
-#: part/templates/part/part_base.html:183
-#, python-format
-msgid "This part is a variant of %(link)s"
-msgstr ""
-
-#: part/templates/part/part_base.html:221
-#: stock/templates/stock/item_base.html:385
+#: part/templates/part/part_base.html:220
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:230
-#: stock/templates/stock/item_base.html:378
+#: part/templates/part/part_base.html:229
+#: stock/templates/stock/item_base.html:371
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:238 templates/js/translated/bom.js:1174
+#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1174
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:294
+#: part/templates/part/part_base.html:293
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1037
+#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1037
#: templates/js/translated/part.js:1181 templates/js/translated/part.js:1920
#: templates/js/translated/pricing.js:373
#: templates/js/translated/pricing.js:1019
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:354
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:334
+#: part/templates/part/part_base.html:358
+#: stock/templates/stock/item_base.html:323
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:446
msgid "Part QR Code"
msgstr "商品二维码"
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:463
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:513
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:530
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:589
+#: part/templates/part/part_base.html:582
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:685
+#: part/templates/part/part_base.html:678
msgid "Hide Part Details"
msgstr ""
@@ -6738,7 +6838,7 @@ msgid "Refresh Part Pricing"
msgstr ""
#: part/templates/part/prices.html:25 stock/admin.py:129
-#: stock/templates/stock/item_base.html:443
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/company.js:1291
#: templates/js/translated/company.js:1301
#: templates/js/translated/stock.js:1956
@@ -6855,8 +6955,7 @@ msgid "Create new part variant"
msgstr ""
#: part/templates/part/variant_part.html:10
-#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant part from this template"
msgstr ""
#: part/templatetags/inventree_extras.py:187
@@ -6918,6 +7017,7 @@ msgid "Match found for barcode data"
msgstr "找到匹配条形码数据"
#: plugin/base/barcodes/api.py:120
+#: templates/js/translated/purchase_order.js:1321
msgid "Barcode matches existing item"
msgstr ""
@@ -6929,15 +7029,15 @@ msgstr ""
msgid "Label printing failed"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:26
+#: plugin/builtin/barcodes/inventree_barcode.py:28
msgid "InvenTree Barcodes"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:27
+#: plugin/builtin/barcodes/inventree_barcode.py:29
msgid "Provides native support for barcodes"
msgstr ""
-#: plugin/builtin/barcodes/inventree_barcode.py:29
+#: plugin/builtin/barcodes/inventree_barcode.py:31
#: plugin/builtin/integration/core_notifications.py:33
msgid "InvenTree contributors"
msgstr ""
@@ -7040,18 +7140,19 @@ msgstr ""
msgid "No date found"
msgstr ""
-#: plugin/registry.py:450
-msgid "Plugin `{plg_name}` is not compatible with the current InvenTree version {version.inventreeVersion()}!"
-msgstr ""
-
#: plugin/registry.py:452
#, python-brace-format
-msgid "Plugin requires at least version {plg_i.MIN_VERSION}"
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
msgstr ""
#: plugin/registry.py:454
#, python-brace-format
-msgid "Plugin requires at most version {plg_i.MAX_VERSION}"
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:456
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
msgstr ""
#: plugin/samples/integration/sample.py:39
@@ -7118,16 +7219,16 @@ msgstr ""
msgid "Either packagename of URL must be provided"
msgstr ""
-#: report/api.py:172
+#: report/api.py:171
msgid "No valid objects provided to template"
msgstr "没有为模板提供有效对象"
-#: report/api.py:208 report/api.py:244
+#: report/api.py:207 report/api.py:243
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
-#: report/api.py:311
+#: report/api.py:310
msgid "Test report"
msgstr ""
@@ -7233,11 +7334,11 @@ msgstr ""
#: report/templates/report/inventree_po_report_base.html:30
#: report/templates/report/inventree_so_report_base.html:30
-#: templates/js/translated/order.js:288 templates/js/translated/pricing.js:509
+#: templates/js/translated/order.js:291 templates/js/translated/pricing.js:509
#: templates/js/translated/pricing.js:578
#: templates/js/translated/pricing.js:802
-#: templates/js/translated/purchase_order.js:1953
-#: templates/js/translated/sales_order.js:1701
+#: templates/js/translated/purchase_order.js:2020
+#: templates/js/translated/sales_order.js:1729
msgid "Unit Price"
msgstr "单价"
@@ -7251,22 +7352,22 @@ msgstr "额外的生产备注"
#: report/templates/report/inventree_po_report_base.html:72
#: report/templates/report/inventree_so_report_base.html:72
-#: templates/js/translated/purchase_order.js:1855
-#: templates/js/translated/sales_order.js:1676
+#: templates/js/translated/purchase_order.js:1922
+#: templates/js/translated/sales_order.js:1704
msgid "Total"
msgstr ""
#: report/templates/report/inventree_return_order_report_base.html:25
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:717 stock/templates/stock/item_base.html:323
+#: stock/models.py:718 stock/templates/stock/item_base.html:312
#: templates/js/translated/build.js:475 templates/js/translated/build.js:636
#: templates/js/translated/build.js:1250 templates/js/translated/build.js:1738
#: templates/js/translated/model_renderers.js:195
-#: templates/js/translated/return_order.js:483
-#: templates/js/translated/return_order.js:663
-#: templates/js/translated/sales_order.js:250
-#: templates/js/translated/sales_order.js:1470
-#: templates/js/translated/sales_order.js:1555
+#: templates/js/translated/return_order.js:486
+#: templates/js/translated/return_order.js:666
+#: templates/js/translated/sales_order.js:254
+#: templates/js/translated/sales_order.js:1509
+#: templates/js/translated/sales_order.js:1594
#: templates/js/translated/stock.js:526
msgid "Serial Number"
msgstr "序列号"
@@ -7280,12 +7381,12 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:102
-#: stock/models.py:2183 templates/js/translated/stock.js:1398
+#: stock/models.py:2210 templates/js/translated/stock.js:1398
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2189
+#: stock/models.py:2216
msgid "Result"
msgstr ""
@@ -7357,8 +7458,8 @@ msgstr ""
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:114 stock/models.py:700
-#: stock/templates/stock/item_base.html:362
+#: stock/admin.py:114 stock/models.py:701
+#: stock/templates/stock/item_base.html:355
msgid "Installed In"
msgstr ""
@@ -7384,278 +7485,277 @@ msgstr ""
msgid "Delete on Deplete"
msgstr "删除模板"
-#: stock/admin.py:131 stock/models.py:773
-#: stock/templates/stock/item_base.html:430
+#: stock/admin.py:131 stock/models.py:774
+#: stock/templates/stock/item_base.html:423
#: templates/js/translated/stock.js:1940
msgid "Expiry Date"
msgstr ""
-#: stock/api.py:426 templates/js/translated/table_filters.js:325
+#: stock/api.py:409 templates/js/translated/table_filters.js:325
msgid "External Location"
msgstr ""
-#: stock/api.py:587
+#: stock/api.py:570
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:594
+#: stock/api.py:577
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:619
+#: stock/api.py:602
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:53 stock/models.py:684
+#: stock/models.py:54 stock/models.py:685
#: stock/templates/stock/location.html:17
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "仓储地点"
-#: stock/models.py:54 stock/templates/stock/location.html:183
-#: templates/InvenTree/search.html:167 templates/js/translated/search.js:206
+#: stock/models.py:55 stock/templates/stock/location.html:177
+#: templates/InvenTree/search.html:167 templates/js/translated/search.js:208
#: users/models.py:40
msgid "Stock Locations"
msgstr "仓储地点"
-#: stock/models.py:113 stock/models.py:814
-#: stock/templates/stock/item_base.html:253
+#: stock/models.py:114 stock/models.py:815
+#: stock/templates/stock/item_base.html:248
msgid "Owner"
msgstr ""
-#: stock/models.py:114 stock/models.py:815
+#: stock/models.py:115 stock/models.py:816
msgid "Select Owner"
msgstr ""
-#: stock/models.py:121
+#: stock/models.py:122
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:127 templates/js/translated/stock.js:2584
+#: stock/models.py:128 templates/js/translated/stock.js:2584
#: templates/js/translated/table_filters.js:167
msgid "External"
msgstr ""
-#: stock/models.py:128
+#: stock/models.py:129
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:170
+#: stock/models.py:171
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:549
+#: stock/models.py:550
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:575 stock/serializers.py:151
+#: stock/models.py:576 stock/serializers.py:151
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:592
+#: stock/models.py:593
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr "商品类型 ('{pf}') 必须是 {pe}"
-#: stock/models.py:602 stock/models.py:611
+#: stock/models.py:603 stock/models.py:612
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:603
+#: stock/models.py:604
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:625
+#: stock/models.py:626
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:631
+#: stock/models.py:632
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:645
+#: stock/models.py:646
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:659
+#: stock/models.py:660
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:669
+#: stock/models.py:670
msgid "Base part"
msgstr ""
-#: stock/models.py:677
+#: stock/models.py:678
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:687
+#: stock/models.py:688
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:694
+#: stock/models.py:695
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:703
+#: stock/models.py:704
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:719
+#: stock/models.py:720
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:733
+#: stock/models.py:734
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:738
+#: stock/models.py:739
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:745
+#: stock/models.py:746
msgid "Source Build"
msgstr ""
-#: stock/models.py:747
+#: stock/models.py:748
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:758
+#: stock/models.py:759
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:762
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:767
+#: stock/models.py:768
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:774
+#: stock/models.py:775
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:790
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:790
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:802 stock/templates/stock/item.html:132
+#: stock/models.py:803 stock/templates/stock/item.html:132
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:810
+#: stock/models.py:811
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:838
+#: stock/models.py:839
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1335
+#: stock/models.py:1361
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1341
+#: stock/models.py:1367
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1347
+#: stock/models.py:1373
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1350
+#: stock/models.py:1376
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1353
+#: stock/models.py:1379
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1360
-#, python-brace-format
-msgid "Serial numbers already exist: {exists}"
-msgstr ""
+#: stock/models.py:1386 stock/serializers.py:349
+msgid "Serial numbers already exist"
+msgstr "序列号已存在"
-#: stock/models.py:1430
+#: stock/models.py:1457
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1433
+#: stock/models.py:1460
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1436
+#: stock/models.py:1463
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1439
+#: stock/models.py:1466
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1442
+#: stock/models.py:1469
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1445
+#: stock/models.py:1472
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1452 stock/serializers.py:946
+#: stock/models.py:1479 stock/serializers.py:946
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1456
+#: stock/models.py:1483
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1460
+#: stock/models.py:1487
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1464
+#: stock/models.py:1491
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1633
+#: stock/models.py:1660
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2101
+#: stock/models.py:2128
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2159
+#: stock/models.py:2186
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2165
+#: stock/models.py:2192
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2184
+#: stock/models.py:2211
msgid "Test name"
msgstr ""
-#: stock/models.py:2190
+#: stock/models.py:2217
msgid "Test result"
msgstr ""
-#: stock/models.py:2196
+#: stock/models.py:2223
msgid "Test output value"
msgstr ""
-#: stock/models.py:2203
+#: stock/models.py:2230
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2209
+#: stock/models.py:2236
msgid "Test notes"
msgstr ""
@@ -7692,10 +7792,6 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:349
-msgid "Serial numbers already exist"
-msgstr "序列号已存在"
-
#: stock/serializers.py:389
msgid "Select stock item to install"
msgstr ""
@@ -7912,129 +8008,135 @@ msgstr ""
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:194
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:212
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:257
+#: stock/templates/stock/item_base.html:252
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:258
+#: stock/templates/stock/item_base.html:253
#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:266
+#, fuzzy
+#| msgid "Stock item is over-allocated"
+msgid "This stock item is unavailable"
+msgstr "库存物品分配过度!"
+
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is in production and cannot be edited."
msgstr "此库存项目正在生产中,无法编辑。"
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:273
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:285
-msgid "This stock item has not passed all required tests"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:293
+#: stock/templates/stock/item_base.html:288
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:301
+#: stock/templates/stock/item_base.html:296
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:307
-msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
+#: stock/templates/stock/item_base.html:312
+msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted"
msgstr ""
-#: stock/templates/stock/item_base.html:329
+#: stock/templates/stock/item_base.html:318
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:329
+#: stock/templates/stock/item_base.html:318
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:338
+#: stock/templates/stock/item_base.html:327
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:338
+#: stock/templates/stock/item_base.html:327
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:351
+#: stock/templates/stock/item_base.html:341
msgid "Available Quantity"
msgstr ""
-#: stock/templates/stock/item_base.html:395
+#: stock/templates/stock/item_base.html:388
#: templates/js/translated/build.js:1764
msgid "No location set"
msgstr "未设置仓储地点"
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:403
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:434
+#: stock/templates/stock/item_base.html:409
+msgid "This stock item has not passed all required tests"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:427
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:434
+#: stock/templates/stock/item_base.html:427
#: templates/js/translated/table_filters.js:333
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:436
+#: stock/templates/stock/item_base.html:429
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:436
+#: stock/templates/stock/item_base.html:429
#: templates/js/translated/table_filters.js:339
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:452
+#: stock/templates/stock/item_base.html:445
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:530
+#: stock/templates/stock/item_base.html:523
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:538
+#: stock/templates/stock/item_base.html:532
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:550
+#: stock/templates/stock/item_base.html:543
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:607
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:617
+#: stock/templates/stock/item_base.html:610
msgid "Warning"
msgstr "警告"
-#: stock/templates/stock/item_base.html:618
+#: stock/templates/stock/item_base.html:611
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:626
+#: stock/templates/stock/item_base.html:619
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:649
msgid "Return to Stock"
msgstr ""
@@ -8094,29 +8196,29 @@ msgstr ""
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr "您不在此仓储地的所有者列表中,无法编辑此仓储地。"
-#: stock/templates/stock/location.html:169
-#: stock/templates/stock/location.html:217
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:211
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:221
+#: stock/templates/stock/location.html:215
msgid "Create new stock location"
msgstr "新建仓储地点"
-#: stock/templates/stock/location.html:222
+#: stock/templates/stock/location.html:216
msgid "New Location"
msgstr "新建仓储地点"
-#: stock/templates/stock/location.html:309
+#: stock/templates/stock/location.html:303
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:382
+#: stock/templates/stock/location.html:376
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:387
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -8658,7 +8760,7 @@ msgid "Home Page"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:15
-#: templates/js/translated/tables.js:553 templates/navbar.html:107
+#: templates/js/translated/tables.js:563 templates/navbar.html:107
#: templates/search.html:8 templates/search_form.html:6
#: templates/search_form.html:7
msgid "Search"
@@ -8706,8 +8808,8 @@ msgid "Change Password"
msgstr "更改密码"
#: templates/InvenTree/settings/user.html:23
-#: templates/js/translated/helpers.js:53 templates/notes_buttons.html:3
-#: templates/notes_buttons.html:4
+#: templates/js/translated/helpers.js:53 templates/js/translated/pricing.js:610
+#: templates/notes_buttons.html:3 templates/notes_buttons.html:4
msgid "Edit"
msgstr "编辑"
@@ -9180,6 +9282,10 @@ msgstr ""
msgid "Delete Attachments"
msgstr ""
+#: templates/barcode_data.html:5
+msgid "Barcode Identifier"
+msgstr ""
+
#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
@@ -9334,10 +9440,6 @@ msgstr ""
msgid "Enter barcode data"
msgstr "输入条形码数据"
-#: templates/js/translated/barcode.js:41
-msgid "Barcode"
-msgstr "条形码"
-
#: templates/js/translated/barcode.js:48
msgid "Scan barcode using connected webcam"
msgstr ""
@@ -9350,94 +9452,94 @@ msgstr ""
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:172
+#: templates/js/translated/barcode.js:175
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:201
+#: templates/js/translated/barcode.js:204
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:236
+#: templates/js/translated/barcode.js:239
#: templates/js/translated/modals.js:1100
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:354
+#: templates/js/translated/barcode.js:359
msgid "Scan barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:404 templates/navbar.html:114
+#: templates/js/translated/barcode.js:407 templates/navbar.html:114
msgid "Scan Barcode"
msgstr "扫描条形码"
-#: templates/js/translated/barcode.js:416
+#: templates/js/translated/barcode.js:427
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:455
+#: templates/js/translated/barcode.js:468
msgid "This will remove the link to the associated barcode"
msgstr ""
-#: templates/js/translated/barcode.js:461
+#: templates/js/translated/barcode.js:474
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:523 templates/js/translated/stock.js:1097
+#: templates/js/translated/barcode.js:537 templates/js/translated/stock.js:1097
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:566
+#: templates/js/translated/barcode.js:580
msgid "Scan Stock Items Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:568
+#: templates/js/translated/barcode.js:582
msgid "Scan stock item barcode to check in to this location"
msgstr ""
-#: templates/js/translated/barcode.js:571
-#: templates/js/translated/barcode.js:763
+#: templates/js/translated/barcode.js:585
+#: templates/js/translated/barcode.js:780
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:602
+#: templates/js/translated/barcode.js:616
msgid "No barcode provided"
msgstr ""
-#: templates/js/translated/barcode.js:642
+#: templates/js/translated/barcode.js:656
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:646
+#: templates/js/translated/barcode.js:660
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:653
+#: templates/js/translated/barcode.js:667
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:662
+#: templates/js/translated/barcode.js:676
msgid "Barcode does not match valid stock item"
msgstr ""
-#: templates/js/translated/barcode.js:679
+#: templates/js/translated/barcode.js:695
msgid "Scan Stock Container Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:681
+#: templates/js/translated/barcode.js:697
msgid "Scan stock container barcode to check in to this location"
msgstr ""
-#: templates/js/translated/barcode.js:715
+#: templates/js/translated/barcode.js:731
msgid "Barcode does not match valid stock location"
msgstr ""
-#: templates/js/translated/barcode.js:758
+#: templates/js/translated/barcode.js:775
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:826
-#: templates/js/translated/barcode.js:835
+#: templates/js/translated/barcode.js:843
+#: templates/js/translated/barcode.js:852
msgid "Barcode does not match a valid location"
msgstr ""
@@ -9456,7 +9558,7 @@ msgstr ""
#: templates/js/translated/bom.js:158 templates/js/translated/bom.js:669
#: templates/js/translated/modals.js:69 templates/js/translated/modals.js:608
#: templates/js/translated/modals.js:732 templates/js/translated/modals.js:1040
-#: templates/js/translated/purchase_order.js:739 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:742 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -9590,7 +9692,7 @@ msgid "No pricing available"
msgstr ""
#: templates/js/translated/bom.js:1143 templates/js/translated/build.js:1922
-#: templates/js/translated/sales_order.js:1771
+#: templates/js/translated/sales_order.js:1799
msgid "No Stock Available"
msgstr ""
@@ -9791,12 +9893,12 @@ msgid "No required tests for this build"
msgstr ""
#: templates/js/translated/build.js:1781 templates/js/translated/build.js:2803
-#: templates/js/translated/sales_order.js:1505
+#: templates/js/translated/sales_order.js:1544
msgid "Edit stock allocation"
msgstr ""
#: templates/js/translated/build.js:1783 templates/js/translated/build.js:2804
-#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1545
msgid "Delete stock allocation"
msgstr ""
@@ -9817,17 +9919,17 @@ msgid "Quantity Per"
msgstr ""
#: templates/js/translated/build.js:1916
-#: templates/js/translated/sales_order.js:1778
+#: templates/js/translated/sales_order.js:1806
msgid "Insufficient stock available"
msgstr ""
#: templates/js/translated/build.js:1918
-#: templates/js/translated/sales_order.js:1776
+#: templates/js/translated/sales_order.js:1804
msgid "Sufficient stock available"
msgstr ""
#: templates/js/translated/build.js:2014
-#: templates/js/translated/sales_order.js:1870
+#: templates/js/translated/sales_order.js:1905
msgid "Build stock"
msgstr ""
@@ -9836,23 +9938,23 @@ msgid "Order stock"
msgstr ""
#: templates/js/translated/build.js:2021
-#: templates/js/translated/sales_order.js:1863
+#: templates/js/translated/sales_order.js:1899
msgid "Allocate stock"
msgstr ""
#: templates/js/translated/build.js:2059
-#: templates/js/translated/purchase_order.js:564
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/purchase_order.js:567
+#: templates/js/translated/sales_order.js:1068
msgid "Select Parts"
msgstr "选择商品"
#: templates/js/translated/build.js:2060
-#: templates/js/translated/sales_order.js:1043
+#: templates/js/translated/sales_order.js:1069
msgid "You must select at least one part to allocate"
msgstr ""
#: templates/js/translated/build.js:2108
-#: templates/js/translated/sales_order.js:991
+#: templates/js/translated/sales_order.js:1017
msgid "Specify stock allocation quantity"
msgstr ""
@@ -9865,7 +9967,7 @@ msgid "All selected parts have been fully allocated"
msgstr ""
#: templates/js/translated/build.js:2202
-#: templates/js/translated/sales_order.js:1057
+#: templates/js/translated/sales_order.js:1083
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
@@ -9874,12 +9976,12 @@ msgid "Allocate Stock Items to Build Order"
msgstr ""
#: templates/js/translated/build.js:2241
-#: templates/js/translated/sales_order.js:1154
+#: templates/js/translated/sales_order.js:1180
msgid "No matching stock locations"
msgstr ""
#: templates/js/translated/build.js:2314
-#: templates/js/translated/sales_order.js:1231
+#: templates/js/translated/sales_order.js:1257
msgid "No matching stock items"
msgstr ""
@@ -10217,7 +10319,7 @@ msgstr ""
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:2010 templates/js/translated/search.js:267
+#: templates/js/translated/forms.js:2010 templates/js/translated/search.js:269
msgid "Searching"
msgstr ""
@@ -10245,7 +10347,7 @@ msgstr ""
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:460
+#: templates/js/translated/helpers.js:466
msgid "Notes updated"
msgstr ""
@@ -10378,40 +10480,40 @@ msgstr ""
msgid "Notifications will load here"
msgstr ""
-#: templates/js/translated/order.js:69
+#: templates/js/translated/order.js:72
msgid "Add Extra Line Item"
msgstr ""
-#: templates/js/translated/order.js:106
+#: templates/js/translated/order.js:109
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:219
+#: templates/js/translated/order.js:222
msgid "Duplicate Line"
msgstr ""
-#: templates/js/translated/order.js:233
+#: templates/js/translated/order.js:236
msgid "Edit Line"
msgstr ""
-#: templates/js/translated/order.js:246
+#: templates/js/translated/order.js:249
msgid "Delete Line"
msgstr ""
-#: templates/js/translated/order.js:259
-#: templates/js/translated/purchase_order.js:1828
+#: templates/js/translated/order.js:262
+#: templates/js/translated/purchase_order.js:1895
msgid "No line items found"
msgstr ""
-#: templates/js/translated/order.js:332
+#: templates/js/translated/order.js:344
msgid "Duplicate line"
msgstr ""
-#: templates/js/translated/order.js:333
+#: templates/js/translated/order.js:345
msgid "Edit line"
msgstr ""
-#: templates/js/translated/order.js:337
+#: templates/js/translated/order.js:349
msgid "Delete line"
msgstr ""
@@ -10613,19 +10715,19 @@ msgid "No variants found"
msgstr ""
#: templates/js/translated/part.js:1351
-#: templates/js/translated/purchase_order.js:1500
+#: templates/js/translated/purchase_order.js:1567
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1495
-#: templates/js/translated/purchase_order.js:1991
-#: templates/js/translated/return_order.js:695
-#: templates/js/translated/sales_order.js:1739
+#: templates/js/translated/purchase_order.js:2058
+#: templates/js/translated/return_order.js:698
+#: templates/js/translated/sales_order.js:1767
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1541
-#: templates/js/translated/purchase_order.js:2049
+#: templates/js/translated/purchase_order.js:2125
msgid "Receive line item"
msgstr ""
@@ -10759,16 +10861,6 @@ msgstr ""
msgid "No price break data available"
msgstr ""
-#: templates/js/translated/pricing.js:610
-#, python-brace-format
-msgid "Edit ${human_name}"
-msgstr ""
-
-#: templates/js/translated/pricing.js:611
-#, python-brace-format
-msgid "Delete ${human_name}"
-msgstr ""
-
#: templates/js/translated/pricing.js:737
msgid "No purchase history data available"
msgstr ""
@@ -10821,188 +10913,222 @@ msgstr ""
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:384
+#: templates/js/translated/purchase_order.js:387
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:401
+#: templates/js/translated/purchase_order.js:404
#: templates/js/translated/return_order.js:165
-#: templates/js/translated/sales_order.js:431
+#: templates/js/translated/sales_order.js:435
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:407
+#: templates/js/translated/purchase_order.js:410
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:412
+#: templates/js/translated/purchase_order.js:415
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:413
-#: templates/js/translated/sales_order.js:445
+#: templates/js/translated/purchase_order.js:416
+#: templates/js/translated/sales_order.js:449
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:436
+#: templates/js/translated/purchase_order.js:439
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:441
+#: templates/js/translated/purchase_order.js:444
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:447
+#: templates/js/translated/purchase_order.js:450
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:468
+#: templates/js/translated/purchase_order.js:471
#: templates/js/translated/return_order.js:119
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:473
+#: templates/js/translated/purchase_order.js:476
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:565
+#: templates/js/translated/purchase_order.js:568
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:590
+#: templates/js/translated/purchase_order.js:593
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:599
+#: templates/js/translated/purchase_order.js:602
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:617
+#: templates/js/translated/purchase_order.js:620
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:649
+#: templates/js/translated/purchase_order.js:652
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:793
+#: templates/js/translated/purchase_order.js:796
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:812
+#: templates/js/translated/purchase_order.js:815
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:991
+#: templates/js/translated/purchase_order.js:994
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:992
-#: templates/js/translated/return_order.js:435
+#: templates/js/translated/purchase_order.js:995
+#: templates/js/translated/return_order.js:438
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1012
-#: templates/js/translated/purchase_order.js:1125
-msgid "Add batch code"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:1018
-#: templates/js/translated/purchase_order.js:1136
-msgid "Add serial numbers"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:1033
+#: templates/js/translated/purchase_order.js:1023
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1044
+#: templates/js/translated/purchase_order.js:1034
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1108
+#: templates/js/translated/purchase_order.js:1110
#: templates/js/translated/stock.js:2273
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1196
-msgid "Order Code"
-msgstr "订单编码"
+#: templates/js/translated/purchase_order.js:1124
+#, fuzzy
+#| msgid "Barcode"
+msgid "Add barcode"
+msgstr "条形码"
-#: templates/js/translated/purchase_order.js:1197
-msgid "Ordered"
+#: templates/js/translated/purchase_order.js:1125
+#, fuzzy
+#| msgid "Remove row"
+msgid "Remove barcode"
+msgstr "移除行"
+
+#: templates/js/translated/purchase_order.js:1128
+#, fuzzy
+#| msgid "Edit location"
+msgid "Specify location"
+msgstr "编辑仓储地"
+
+#: templates/js/translated/purchase_order.js:1136
+msgid "Add batch code"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1147
+msgid "Add serial numbers"
msgstr ""
#: templates/js/translated/purchase_order.js:1199
+#, fuzzy
+#| msgid "Serial Numbers"
+msgid "Serials"
+msgstr "序列号"
+
+#: templates/js/translated/purchase_order.js:1224
+msgid "Order Code"
+msgstr "订单编码"
+
+#: templates/js/translated/purchase_order.js:1226
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1222
-#: templates/js/translated/return_order.js:500
+#: templates/js/translated/purchase_order.js:1248
+#: templates/js/translated/return_order.js:503
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1249
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1527
+#: templates/js/translated/purchase_order.js:1317
+#, fuzzy
+#| msgid "Scan Barcode"
+msgid "Scan Item Barcode"
+msgstr "扫描条形码"
+
+#: templates/js/translated/purchase_order.js:1318
+msgid "Scan barcode on incoming item (must not match any existing stock items)"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1332
+#, fuzzy
+#| msgid "Enter barcode data"
+msgid "Invalid barcode data"
+msgstr "输入条形码数据"
+
+#: templates/js/translated/purchase_order.js:1594
#: templates/js/translated/return_order.js:244
-#: templates/js/translated/sales_order.js:686
+#: templates/js/translated/sales_order.js:712
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1577
+#: templates/js/translated/purchase_order.js:1644
#: templates/js/translated/return_order.js:300
-#: templates/js/translated/sales_order.js:751
-#: templates/js/translated/sales_order.js:893
+#: templates/js/translated/sales_order.js:777
+#: templates/js/translated/sales_order.js:919
msgid "Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1676
+#: templates/js/translated/purchase_order.js:1743
#, fuzzy
#| msgid "All selected supplier parts will be deleted"
msgid "All selected Line items will be deleted"
msgstr "删除所有选定的供应商商品"
-#: templates/js/translated/purchase_order.js:1694
+#: templates/js/translated/purchase_order.js:1761
#, fuzzy
#| msgid "Allocate selected items"
msgid "Delete selected Line items?"
msgstr "分配选定项目"
-#: templates/js/translated/purchase_order.js:1754
-#: templates/js/translated/sales_order.js:1920
+#: templates/js/translated/purchase_order.js:1821
+#: templates/js/translated/sales_order.js:1959
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:1769
-#: templates/js/translated/return_order.js:419
-#: templates/js/translated/return_order.js:608
-#: templates/js/translated/sales_order.js:1933
+#: templates/js/translated/purchase_order.js:1836
+#: templates/js/translated/return_order.js:422
+#: templates/js/translated/return_order.js:611
+#: templates/js/translated/sales_order.js:1972
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:1780
-#: templates/js/translated/return_order.js:621
-#: templates/js/translated/sales_order.js:1944
+#: templates/js/translated/purchase_order.js:1847
+#: templates/js/translated/return_order.js:624
+#: templates/js/translated/sales_order.js:1983
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2053
-#: templates/js/translated/sales_order.js:1876
+#: templates/js/translated/purchase_order.js:2129
+#: templates/js/translated/sales_order.js:1913
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2054
-#: templates/js/translated/return_order.js:731
-#: templates/js/translated/sales_order.js:1877
+#: templates/js/translated/purchase_order.js:2130
+#: templates/js/translated/return_order.js:743
+#: templates/js/translated/sales_order.js:1914
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2055
-#: templates/js/translated/return_order.js:735
-#: templates/js/translated/sales_order.js:1881
+#: templates/js/translated/purchase_order.js:2131
+#: templates/js/translated/return_order.js:747
+#: templates/js/translated/sales_order.js:1920
msgid "Delete line item"
msgstr ""
@@ -11029,7 +11155,7 @@ msgid "No report templates found which match the selected items"
msgstr "没有找到与所选商品相匹配的标签"
#: templates/js/translated/return_order.js:40
-#: templates/js/translated/sales_order.js:52
+#: templates/js/translated/sales_order.js:53
msgid "Add Customer"
msgstr ""
@@ -11072,208 +11198,225 @@ msgid "No return orders found"
msgstr "无指定参数"
#: templates/js/translated/return_order.js:258
-#: templates/js/translated/sales_order.js:700
+#: templates/js/translated/sales_order.js:726
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/return_order.js:501
+#: templates/js/translated/return_order.js:504
msgid "Receive Return Order Items"
msgstr ""
-#: templates/js/translated/return_order.js:632
-#: templates/js/translated/sales_order.js:2080
+#: templates/js/translated/return_order.js:635
+#: templates/js/translated/sales_order.js:2119
msgid "No matching line items"
msgstr ""
-#: templates/js/translated/return_order.js:728
+#: templates/js/translated/return_order.js:740
msgid "Mark item as received"
msgstr ""
-#: templates/js/translated/sales_order.js:102
+#: templates/js/translated/sales_order.js:103
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:117
+#: templates/js/translated/sales_order.js:118
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:226
+#: templates/js/translated/sales_order.js:230
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:231
+#: templates/js/translated/sales_order.js:235
msgid "The following stock items will be shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:271
+#: templates/js/translated/sales_order.js:275
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:295
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:347
+#: templates/js/translated/sales_order.js:351
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:351
+#: templates/js/translated/sales_order.js:355
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:383
+#: templates/js/translated/sales_order.js:365
+msgid "Complete Shipments"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:387
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:444
+#: templates/js/translated/sales_order.js:448
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:468
+#: templates/js/translated/sales_order.js:470
+#, fuzzy
+#| msgid "New Sales Order"
+msgid "Issue this Sales Order?"
+msgstr "新建销售订单"
+
+#: templates/js/translated/sales_order.js:475
+#, fuzzy
+#| msgid "New Sales Order"
+msgid "Issue Sales Order"
+msgstr "新建销售订单"
+
+#: templates/js/translated/sales_order.js:494
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:473
+#: templates/js/translated/sales_order.js:499
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:527
+#: templates/js/translated/sales_order.js:553
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:637
+#: templates/js/translated/sales_order.js:663
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:805
+#: templates/js/translated/sales_order.js:831
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:808
+#: templates/js/translated/sales_order.js:834
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:813
+#: templates/js/translated/sales_order.js:839
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:856
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:845
+#: templates/js/translated/sales_order.js:871
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:878
+#: templates/js/translated/sales_order.js:904
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:888
+#: templates/js/translated/sales_order.js:914
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:912
+#: templates/js/translated/sales_order.js:938
+#: templates/js/translated/sales_order.js:1424
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:918
+#: templates/js/translated/sales_order.js:944
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:922
+#: templates/js/translated/sales_order.js:948
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1090
+#: templates/js/translated/sales_order.js:1116
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1141
+#: templates/js/translated/sales_order.js:1167
msgid "Confirm stock allocation"
msgstr "确认库存分配"
-#: templates/js/translated/sales_order.js:1142
+#: templates/js/translated/sales_order.js:1168
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1346
+#: templates/js/translated/sales_order.js:1372
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1425
+#: templates/js/translated/sales_order.js:1464
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1439
+#: templates/js/translated/sales_order.js:1478
msgid "Confirm Delete Operation"
msgstr "确认删除操作"
-#: templates/js/translated/sales_order.js:1440
+#: templates/js/translated/sales_order.js:1479
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1482
-#: templates/js/translated/sales_order.js:1569
+#: templates/js/translated/sales_order.js:1521
+#: templates/js/translated/sales_order.js:1608
#: templates/js/translated/stock.js:1664
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1490
-#: templates/js/translated/sales_order.js:1578
+#: templates/js/translated/sales_order.js:1529
+#: templates/js/translated/sales_order.js:1617
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/sales_order.js:1897
msgid "Allocate serial numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:1866
+#: templates/js/translated/sales_order.js:1901
msgid "Purchase stock"
msgstr ""
-#: templates/js/translated/sales_order.js:1873
-#: templates/js/translated/sales_order.js:2058
+#: templates/js/translated/sales_order.js:1910
+#: templates/js/translated/sales_order.js:2097
msgid "Calculate price"
msgstr ""
-#: templates/js/translated/sales_order.js:1885
+#: templates/js/translated/sales_order.js:1924
msgid "Cannot be deleted as items have been shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1888
+#: templates/js/translated/sales_order.js:1927
msgid "Cannot be deleted as items have been allocated"
msgstr ""
-#: templates/js/translated/sales_order.js:1959
+#: templates/js/translated/sales_order.js:1998
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2066
+#: templates/js/translated/sales_order.js:2105
msgid "Update Unit Price"
msgstr ""
-#: templates/js/translated/search.js:298
+#: templates/js/translated/search.js:300
msgid "No results"
msgstr ""
-#: templates/js/translated/search.js:320 templates/search.html:25
+#: templates/js/translated/search.js:322 templates/search.html:25
msgid "Enter search query"
msgstr ""
-#: templates/js/translated/search.js:370
+#: templates/js/translated/search.js:372
msgid "result"
msgstr ""
-#: templates/js/translated/search.js:370
+#: templates/js/translated/search.js:372
msgid "results"
msgstr ""
-#: templates/js/translated/search.js:380
+#: templates/js/translated/search.js:382
msgid "Minimize results"
msgstr ""
-#: templates/js/translated/search.js:383
+#: templates/js/translated/search.js:385
msgid "Remove results"
msgstr ""
@@ -11959,51 +12102,51 @@ msgstr ""
msgid "Select File Format"
msgstr ""
-#: templates/js/translated/tables.js:539
+#: templates/js/translated/tables.js:549
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:542
+#: templates/js/translated/tables.js:552
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:547
+#: templates/js/translated/tables.js:557
msgid "Showing all rows"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:549
+#: templates/js/translated/tables.js:559
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:556
+#: templates/js/translated/tables.js:566
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:559
+#: templates/js/translated/tables.js:569
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:565
+#: templates/js/translated/tables.js:575
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:568
+#: templates/js/translated/tables.js:578
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:571
+#: templates/js/translated/tables.js:581
msgid "All"
msgstr ""
@@ -12286,15 +12429,19 @@ msgstr "编辑项目权限"
msgid "Permission to delete items"
msgstr "删除项目权限"
+#, python-format
+#~ msgid "This Build Order is allocated to Sales Order %(link)s"
+#~ msgstr "此构建订单已分配给销售订单 %(link)s"
+
+#~ msgid "Part description"
+#~ msgstr "商品描述"
+
#~ msgid "Printing Actions"
#~ msgstr "打印操作"
#~ msgid "Print labels"
#~ msgstr "打印标签"
-#~ msgid "Print Build Orders"
-#~ msgstr "打印生产订单"
-
#~ msgid "Print Order Reports"
#~ msgstr "打印订单报表"