From 364a9d4fc112ed1de441048fca0e29bfd6e3e45b Mon Sep 17 00:00:00 2001
From: Oliver <oliver.henry.walters@gmail.com>
Date: Tue, 2 Apr 2024 16:13:15 +1100
Subject: [PATCH] New Crowdin updates (#6908)

* updated translation base

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations django.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Fix: New translations messages.po from Crowdin

* Set INVENTREE_SITE_URL

* Fix incorrect zh trans

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
 .github/workflows/check_translations.yaml     |    1 +
 InvenTree/locale/bg/LC_MESSAGES/django.po     | 1905 ++--
 InvenTree/locale/cs/LC_MESSAGES/django.po     | 1909 ++--
 InvenTree/locale/da/LC_MESSAGES/django.po     | 1907 ++--
 InvenTree/locale/de/LC_MESSAGES/django.po     | 1917 ++--
 InvenTree/locale/el/LC_MESSAGES/django.po     | 1907 ++--
 InvenTree/locale/en/LC_MESSAGES/django.po     | 2456 +++---
 InvenTree/locale/es/LC_MESSAGES/django.po     | 1915 ++--
 InvenTree/locale/es_MX/LC_MESSAGES/django.po  | 2456 +++---
 InvenTree/locale/fa/LC_MESSAGES/django.po     | 1905 ++--
 InvenTree/locale/fi/LC_MESSAGES/django.po     | 1905 ++--
 InvenTree/locale/fr/LC_MESSAGES/django.po     | 1915 ++--
 InvenTree/locale/he/LC_MESSAGES/django.po     | 1905 ++--
 InvenTree/locale/hi/LC_MESSAGES/django.po     | 1905 ++--
 InvenTree/locale/hu/LC_MESSAGES/django.po     | 1922 ++--
 InvenTree/locale/id/LC_MESSAGES/django.po     | 1907 ++--
 InvenTree/locale/it/LC_MESSAGES/django.po     | 1917 ++--
 InvenTree/locale/ja/LC_MESSAGES/django.po     | 1905 ++--
 InvenTree/locale/ko/LC_MESSAGES/django.po     | 1905 ++--
 InvenTree/locale/lv/LC_MESSAGES/django.po     | 1905 ++--
 InvenTree/locale/nl/LC_MESSAGES/django.po     | 1919 ++--
 InvenTree/locale/no/LC_MESSAGES/django.po     | 1919 ++--
 InvenTree/locale/pl/LC_MESSAGES/django.po     | 1909 ++--
 InvenTree/locale/pt/LC_MESSAGES/django.po     | 1919 ++--
 InvenTree/locale/ru/LC_MESSAGES/django.po     | 1915 ++--
 InvenTree/locale/sk/LC_MESSAGES/django.po     | 1905 ++--
 InvenTree/locale/sl/LC_MESSAGES/django.po     | 1907 ++--
 InvenTree/locale/sr/LC_MESSAGES/django.po     | 1905 ++--
 InvenTree/locale/sv/LC_MESSAGES/django.po     | 1909 ++--
 InvenTree/locale/th/LC_MESSAGES/django.po     | 1903 ++--
 InvenTree/locale/tr/LC_MESSAGES/django.po     | 1907 ++--
 InvenTree/locale/vi/LC_MESSAGES/django.po     | 1919 ++--
 InvenTree/locale/zh/LC_MESSAGES/django.po     | 7826 +++++++++--------
 .../locale/zh_Hans/LC_MESSAGES/django.po      | 2472 +++---
 src/frontend/src/locales/bg/messages.po       |  524 +-
 src/frontend/src/locales/cs/messages.po       |  524 +-
 src/frontend/src/locales/da/messages.po       |  524 +-
 src/frontend/src/locales/de/messages.po       |  524 +-
 src/frontend/src/locales/el/messages.po       |  524 +-
 src/frontend/src/locales/en/messages.po       | 1038 +--
 src/frontend/src/locales/es-mx/messages.po    | 1034 +--
 src/frontend/src/locales/es/messages.po       |  568 +-
 src/frontend/src/locales/fa/messages.po       |  524 +-
 src/frontend/src/locales/fi/messages.po       |  524 +-
 src/frontend/src/locales/fr/messages.po       |  524 +-
 src/frontend/src/locales/he/messages.po       |  524 +-
 src/frontend/src/locales/hi/messages.po       |  524 +-
 src/frontend/src/locales/hu/messages.po       |  524 +-
 src/frontend/src/locales/id/messages.po       |  524 +-
 src/frontend/src/locales/it/messages.po       |  524 +-
 src/frontend/src/locales/ja/messages.po       |  524 +-
 src/frontend/src/locales/ko/messages.po       |  524 +-
 src/frontend/src/locales/lv/messages.po       |  524 +-
 src/frontend/src/locales/nl/messages.po       |  524 +-
 src/frontend/src/locales/no/messages.po       |  526 +-
 src/frontend/src/locales/pl/messages.po       |  524 +-
 .../src/locales/pseudo-LOCALE/messages.po     | 1034 +--
 src/frontend/src/locales/pt-br/messages.po    | 1034 +--
 src/frontend/src/locales/pt/messages.po       |  526 +-
 src/frontend/src/locales/ru/messages.po       |  524 +-
 src/frontend/src/locales/sk/messages.po       |  524 +-
 src/frontend/src/locales/sl/messages.po       |  524 +-
 src/frontend/src/locales/sr/messages.po       |  524 +-
 src/frontend/src/locales/sv/messages.po       |  524 +-
 src/frontend/src/locales/th/messages.po       |  524 +-
 src/frontend/src/locales/tr/messages.po       |  524 +-
 src/frontend/src/locales/vi/messages.po       |  524 +-
 src/frontend/src/locales/zh-hans/messages.po  | 1034 +--
 src/frontend/src/locales/zh-hant/messages.po  | 1034 +--
 src/frontend/src/locales/zh/messages.po       |  524 +-
 70 files changed, 47163 insertions(+), 45416 deletions(-)

diff --git a/.github/workflows/check_translations.yaml b/.github/workflows/check_translations.yaml
index 7e97eba8fa4f..2ff23a7b8f11 100644
--- a/.github/workflows/check_translations.yaml
+++ b/.github/workflows/check_translations.yaml
@@ -27,6 +27,7 @@ jobs:
       INVENTREE_MEDIA_ROOT: ./media
       INVENTREE_STATIC_ROOT: ./static
       INVENTREE_BACKUP_DIR: ./backup
+      INVENTREE_SITE_URL: http://localhost:8000
 
     steps:
       - name: Checkout Code
diff --git a/InvenTree/locale/bg/LC_MESSAGES/django.po b/InvenTree/locale/bg/LC_MESSAGES/django.po
index 0f182961421b..66f6d3a6e826 100644
--- a/InvenTree/locale/bg/LC_MESSAGES/django.po
+++ b/InvenTree/locale/bg/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Bulgarian\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Не е зададена стойност"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Преобразуването на {original} в {unit} не беше успешно"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Зададено е недопустимо количество"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Зададено е недопустимо количество ({exc})"
@@ -59,10 +59,10 @@ msgstr "Въведи дата"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Въведеният домейн на електронната поща
 msgid "Registration is disabled."
 msgstr "Регистрацията е деактивирана."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Въведена е недопустима стойност"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Липсва сериен номер"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Повтарящ се сериен номер"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Невалиден диапазон от групи: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Не са открити серийни номера"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Премахнете HTML маркерите от тази стойност"
 
@@ -405,10 +405,10 @@ msgstr ""
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr ""
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr ""
@@ -436,10 +436,10 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr ""
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr ""
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Върнат"
 msgid "In Progress"
 msgstr "Изпълнява се"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1008,17 +1008,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr "Част"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4869,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr "Цялостна наличност"
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8250,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr "Място в склада"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Места в склада"
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po
index ef7861daac00..79e99076a058 100644
--- a/InvenTree/locale/cs/LC_MESSAGES/django.po
+++ b/InvenTree/locale/cs/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Czech\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Není k dispozici žádná hodnota"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Nelze převést {original} na {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Vyplněno neplatné množství"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Vyplněno neplatné množství ({exc})"
@@ -59,10 +59,10 @@ msgstr "Zadejte datum"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Zadaná e-mailová doména není povolena."
 msgid "Registration is disabled."
 msgstr "Registrace vypnuta."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Vyplněno neplatné množství"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Nevyplněné výrobní číslo"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Duplicitní výrobní číslo"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Neplatný rozsah skupiny: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Rozsah skupiny {group} překračuje povolené množství ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Neplatná sekvence skupiny: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Nenalezena žádná výrobní čísla"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Počet jedinečných sériových čísel ({len(serials)}) musí odpovídat množství ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Odstranit HTML tagy z této hodnoty"
 
@@ -405,10 +405,10 @@ msgstr "Příloha"
 msgid "Select file to attach"
 msgstr "Vyberte soubor k přiložení"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Vyberte soubor k přiložení"
 msgid "Link"
 msgstr "Odkaz"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Odkaz na externí URL"
@@ -436,10 +436,10 @@ msgstr "Komentář"
 msgid "File comment"
 msgstr "Komentář k souboru"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Duplicitní názvy nemohou existovat pod stejným nadřazeným názvem"
 msgid "Invalid choice"
 msgstr "Neplatný výběr"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Neplatný výběr"
 msgid "Name"
 msgstr "Název"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Chyba serveru"
 msgid "An error has been logged by the server."
 msgstr "Server zaznamenal chybu."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Musí být platné číslo"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Vráceno"
 msgid "In Progress"
 msgstr "Zpracovává se"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "O InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Sestavení musí být zrušeno před odstraněním"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Spotřební materiál"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Vytvořit objednávku"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Vytvořené objednávky"
 
@@ -1008,17 +1008,21 @@ msgstr "Vytvořené objednávky"
 msgid "Invalid choice for parent build"
 msgstr "Neplatná volba nadřazeného sestavení"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Díly obědnávky sestavení nemohou být změněny"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Referenční číslo objednávky"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Referenční číslo objednávky"
 msgid "Reference"
 msgstr "Reference"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Stručný popis sestavení (nepovinné)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Nadřazená sestava"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Příkaz sestavení pro který je toto sestavení přiděleno"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno"
 msgid "Part"
 msgstr "Díl"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Vyber téma, které chceš stavět"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Referenční číslo prodejní objednávky"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Prodejní příkaz, kterému je tato verze přidělena"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Umístění lokace"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Vyberte lokaci, ze které chcete provést inventuru pro sestavu. (nechte prázdné, chcete-li provést inventuru z libovolné lokace)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Cílová lokace"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Vyberte lokaci, kde budou dokončené položky uloženy"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Množství sestav"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Počet skladových položek k sestavení"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Dokončené položky"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Počet skladových položek, které byly dokončeny"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Stav sestavení"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Stavový kód sestavení"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Kód dávky"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Dávkový kód pro tento výstup sestavení"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Datum vytvoření"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Cílové datum dokončení"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Cílové datum dokončení sestavení. Sestavení bude po tomto datu v prodlení."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Datum dokončení"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "dokončil"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Vystavil"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Uživatel, který vydal tento příkaz k sestavení"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr "Uživatel, který vydal tento příkaz k sestavení"
 msgid "Responsible"
 msgstr "Odpovědný"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Uživatel nebo skupina odpovědná za tento příkaz k sestavení"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr "Uživatel nebo skupina odpovědná za tento příkaz k sestavení"
 msgid "External Link"
 msgstr "Externí odkaz"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Priorita sestavení"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Priorita tohoto příkazu k sestavení"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr "Priorita tohoto příkazu k sestavení"
 msgid "Project Code"
 msgstr "Kód projektu"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Kód projektu pro objednávku sestavení"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Příkaz k sestavení {build} byl dokončen"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Příkaz k sestavení byl dokončen"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Nebyl specifikováno žádný výstup sestavení"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Výstup sestavení je již dokončen"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Výstup sestavení neodpovídá příkazu sestavení"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Množství musí být vyšší než nula"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "Množství nemůže být větší než výstupní množství"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Vytvořit objekt"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr "Vytvořit objekt"
 msgid "Quantity"
 msgstr "Množství"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Vyžadované množství pro objednávku"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Položka sestavení musí specifikovat výstup sestavení, protože hlavní díl je označen jako sledovatelný"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "Zabrané množství ({q}) nesmí překročit dostupné skladové množství ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Skladová položka je nadměrně zabrána"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Zabrané množství musí být větší než nula"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Množství musí být 1 pro zřetězený sklad"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "Vybraná položka zásob neodpovídá řádku BOM"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr "Vybraná položka zásob neodpovídá řádku BOM"
 msgid "Stock Item"
 msgstr "Skladové položky"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Zdrojová skladová položka"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Skladové množství pro sestavení"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Instalovat do"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr "Automaticky zvolit sériová čísla"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr "Volitelné položky"
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1564 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Jméno společnosti"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Výchozí měna"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Stáhnout z URL"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Možné zakoupit"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Díly jsou zakoupitelné ve výchozím nastavení"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Prodejné"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Díly jsou prodejné ve výchozím nastavení"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Sledovatelné"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Díly jsou sledovatelné ve výchozím nastavení"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Nehmotné (virtuální)"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Díly jsou nehmotné (virtuální) ve výchozím nastavení"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Zobrazit Import v zobrazeních"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Zobrazit související díly"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Zobrazit související díly pro díl"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr "Počáteční údaje zásob"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr "Povolit vytvoření počátečního skladu při přidání nové části"
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr "Počáteční údaje dodavatele"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr "Povolit vytvoření počátečních dat dodavatele při přidávání nového dílu"
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Formát zobrazení jména dílu"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Formát pro zobrazení názvu dílu"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr "Výchozí ikona kategorie dílu"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr "Výchozí ikona kategorie dílu (prázdné znamená bez ikony)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr "Minimální počet desetinných míst u cen"
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr "Minimální počet desetinných míst k zobrazení u cenových údajů"
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr "Maximální počet desetinných míst u cen"
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr "Maximální počet desetinných míst k zobrazení u cenových údajů"
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr "Použít ceny dodavatele"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr "Přepsání historie nákupu"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Velikost stránky"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Výchozí velikost stránky pro PDF reporty"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Povolit testovací reporty"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Povolit generování zkušebních reportů"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr "Připojit testovací reporty"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr "Při tisku testovacího reportu, připojte kopii reportu k přidružené skladové položce"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr "Sériová čísla pro skladové položky musí být globálně unikátní"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "Automaticky vyplnit sériová čísla"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr "Automaticky vyplnit sériová čísla ve formulářích"
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr "Odstranit vyčerpané zásoby"
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Determines default behaviour when a stock item is depleted"
+msgid "Determines default behavior when a stock item is depleted"
 msgstr "Určuje výchozí chování, když je vyčerpána skladová položka"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Odpovědný"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Formát data"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Cena"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr "Id"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3692,31 @@ msgstr ""
 msgid "Image"
 msgstr "Obrazek"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3883,7 @@ msgid "Contact email address"
 msgstr "Kontaktní e-mailová adresa"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3927,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Společnost"
@@ -4066,7 +4092,7 @@ msgid "Parameter value"
 msgstr "Hodnota parametru"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4116,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4152,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4162,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4196,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4274,8 @@ msgstr "Stáhnout obrázek z URL"
 msgid "Delete image"
 msgstr "Smazat obrázek"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4292,7 @@ msgstr "Zákazník"
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4372,7 @@ msgstr "Dodavatelský sklad"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Zakoupené objednávky"
 
@@ -4369,7 +4395,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4420,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4648,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4701,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4727,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4741,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4873,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4887,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4900,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5087,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5825,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5839,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5877,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5900,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5923,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5931,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5947,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5963,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6062,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6430,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7231,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8083,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8254,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8420,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8711,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8788,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10097,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Odstranit"
 
@@ -13248,7 +13274,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13917,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14154,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "Nastavení oprávnění"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Skupina"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Zobrazit"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Oprávnění k zobrazení položek"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Oprávnění přidat položky"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Změnit"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Oprávnění k úpravě položek"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Oprávnění k odstranění položek"
-
diff --git a/InvenTree/locale/da/LC_MESSAGES/django.po b/InvenTree/locale/da/LC_MESSAGES/django.po
index 62ee7ebab9c3..67f73c90da11 100644
--- a/InvenTree/locale/da/LC_MESSAGES/django.po
+++ b/InvenTree/locale/da/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Danish\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Ingen værdi angivet"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Kunne ikke konvertere {original} til {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Ugyldigt antal angivet"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Ugyldigt antal angivet ({exc})"
@@ -59,10 +59,10 @@ msgstr "Angiv dato"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Det angivne e-mail domæne er ikke godkendt."
 msgid "Registration is disabled."
 msgstr "Registrering er deaktiveret."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Ugyldigt antal angivet"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Serienummer streng er tom"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Duplikeret serienummer"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Ugyldig gruppesekvens: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Ingen serienumre fundet"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Fjern HTML-tags fra denne værdi"
 
@@ -405,10 +405,10 @@ msgstr "Vedhæftning"
 msgid "Select file to attach"
 msgstr "Vælg fil, der skal vedhæftes"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Vælg fil, der skal vedhæftes"
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Link til ekstern URL"
@@ -436,10 +436,10 @@ msgstr "Kommentar"
 msgid "File comment"
 msgstr "Fil kommentar"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr "Ugyldigt valg"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Ugyldigt valg"
 msgid "Name"
 msgstr "Navn"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Serverfejl"
 msgid "An error has been logged by the server."
 msgstr "En fejl blev logget af serveren."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Skal være et gyldigt tal"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Returneret"
 msgid "In Progress"
 msgstr "Igangværende"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Om InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Produktion skal anulleres, før den kan slettes"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Forbrugsvare"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Produktionsordre"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Produktionsordrer"
 
@@ -1008,17 +1008,21 @@ msgstr "Produktionsordrer"
 msgid "Invalid choice for parent build"
 msgstr "Ugyldigt valg for overordnet produktion"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Byggeordre enhed kan ikke ændres"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Produktionsordre reference"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Produktionsordre reference"
 msgid "Reference"
 msgstr "Reference"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Overordnet produktion"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Produktionsordre som er tildelt denne produktion"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "Produktionsordre som er tildelt denne produktion"
 msgid "Part"
 msgstr "Del"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Vælg dele til produktion"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Salgsordrereference"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Salgsordre, som er tildelt denne produktion"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Kilde Lokation"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Vælg lokation for lager, som skal benyttes til denne produktion (lad feltet stå tomt for at benytte vilkårligt lager)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Destinations Placering"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Vælg placering, hvor de færdige elementer vil blive gemt"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Produktions antal"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Antal lagervarer som skal produceres"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Afsluttede elementer"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Antal lagervarer som er færdiggjort"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Produktions Status"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Produktions statuskode"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Batch Kode"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Batch kode til dette produktions output"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Oprettelsesdato"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Projekteret afslutningsdato"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Dato for afslutning"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "udført af"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Udstedt af"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Bruger som udstedte denne byggeordre"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr "Bruger som udstedte denne byggeordre"
 msgid "Responsible"
 msgstr "Ansvarlig"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Bruger eller gruppe ansvarlig for denne byggeordre"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr "Bruger eller gruppe ansvarlig for denne byggeordre"
 msgid "External Link"
 msgstr "Ekstern link"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Bygge Prioritet"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Prioritet af denne byggeordre"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr "Prioritet af denne byggeordre"
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Bygningsordre {build} er fuldført"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "En byggeordre er fuldført"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr "Accepter at lagervarer ikke er fuldt tildelt til denne byggeordre"
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Accepter ufuldført"
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1562 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Ansvarlig"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3690,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3881,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3925,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4090,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4114,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4150,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4160,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4194,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4272,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4290,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4370,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4393,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4418,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4646,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4699,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4725,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4739,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4871,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4885,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4898,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5085,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5823,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5837,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5875,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5898,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5921,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5929,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5945,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5961,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6060,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6428,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7229,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8081,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8252,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8418,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8709,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8786,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10095,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13272,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13915,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14152,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 4df186cf154d..346a150277a3 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-22 10:34+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-22 14:07\n"
 "Last-Translator: \n"
 "Language-Team: German\n"
@@ -34,16 +34,16 @@ msgstr "Ungültige Einheit angegeben ({unit})"
 msgid "No value provided"
 msgstr "Kein Wert angegeben"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Konnte {original} nicht in {unit} umwandeln"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Ungültige Menge"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Ungültige Menge ({exc})"
@@ -59,10 +59,10 @@ msgstr "Datum eingeben"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Die angegebene E-Mail-Domain ist nicht freigegeben."
 msgid "Registration is disabled."
 msgstr "Registrierung ist deaktiviert."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Keine gültige Menge"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Keine Seriennummer angegeben"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Duplizierter Seriennummer"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Ungültiger Gruppenbereich: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Gruppenbereich {group} überschreitet die zulässige Menge ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Ungültige Gruppensequenz: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Keine Seriennummern gefunden"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Anzahl der eindeutigen Seriennummern ({len(serials)}) muss mit der Menge übereinstimmen ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Entferne HTML-Tags von diesem Wert"
 
@@ -405,10 +405,10 @@ msgstr "Anhang"
 msgid "Select file to attach"
 msgstr "Datei zum Anhängen auswählen"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Datei zum Anhängen auswählen"
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Link zu einer externen URL"
@@ -436,10 +436,10 @@ msgstr "Kommentar"
 msgid "File comment"
 msgstr "Datei-Kommentar"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Doppelte Namen können nicht unter dem selben Elternteil existieren"
 msgid "Invalid choice"
 msgstr "Ungültige Auswahl"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Ungültige Auswahl"
 msgid "Name"
 msgstr "Name"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Serverfehler"
 msgid "An error has been logged by the server."
 msgstr "Ein Fehler wurde vom Server protokolliert."
 
-#: InvenTree/serializers.py:62 part/models.py:4165
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Muss eine gültige Nummer sein"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Zurückgegeben"
 msgid "In Progress"
 msgstr "In Bearbeitung"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Über InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Bauauftrag muss abgebrochen werden, bevor er gelöscht werden kann"
 
-#: build/api.py:281 part/models.py:4043 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Verbrauchsmaterial"
 
-#: build/api.py:282 part/models.py:4037 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Bauauftrag"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Bauaufträge"
 
@@ -1008,17 +1008,23 @@ msgstr "Bauaufträge"
 msgid "Invalid choice for parent build"
 msgstr "Ungültige Wahl für übergeordneten Bauauftrag"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+#, fuzzy
+#| msgid "Purchase order must be specified"
+msgid "Responsible user or group must be specified"
+msgstr "Bestellung muss angegeben sein"
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Teil in Bauauftrag kann nicht geändert werden"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Bauauftragsreferenz"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4058 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1038,27 @@ msgstr "Bauauftragsreferenz"
 msgid "Reference"
 msgstr "Referenz"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Kurze Beschreibung des Baus (optional)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Eltern-Bauauftrag"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3916 part/models.py:4009
-#: part/models.py:4370 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1102,107 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
 msgid "Part"
 msgstr "Teil"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Teil für den Bauauftrag wählen"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Auftrag Referenz"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Quell-Lagerort"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Entnahme-Lagerort für diesen Bauauftrag wählen (oder leer lassen für einen beliebigen Lagerort)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Ziel-Lagerort"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Lagerort an dem fertige Objekte gelagert werden auswählen"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Bau-Anzahl"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Anzahl der zu bauenden Lagerartikel"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Fertiggestellte Teile"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Anzahl der fertigen Lagerartikel"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Bauauftrags-Status"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Bau-Statuscode"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Losnummer"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Losnummer für dieses Endprodukt"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Erstelldatum"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "geplantes Fertigstellungsdatum"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Zieldatum für Bauauftrag-Fertigstellung."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Fertigstellungsdatum"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "Fertiggestellt von"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Aufgegeben von"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Nutzer der diesen Bauauftrag erstellt hat"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1213,11 @@ msgstr "Nutzer der diesen Bauauftrag erstellt hat"
 msgid "Responsible"
 msgstr "Verantwortlicher Benutzer"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Benutzer oder Gruppe verantwortlich für diesen Bauauftrag"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1229,16 @@ msgstr "Benutzer oder Gruppe verantwortlich für diesen Bauauftrag"
 msgid "External Link"
 msgstr "Externer Link"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Bauauftrags-Priorität"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Priorität dieses Bauauftrags"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1248,57 @@ msgstr "Priorität dieses Bauauftrags"
 msgid "Project Code"
 msgstr "Projektcode"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Projektcode für diesen Auftrag"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Bauauftrag {build} wurde fertiggestellt"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Ein Bauauftrag wurde fertiggestellt"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "kein Endprodukt angegeben"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Endprodukt bereits hergstellt"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Anzahl muss größer Null sein"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "Menge kann nicht größer als die Ausgangsmenge sein"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr "Build Ausgabe {serial} hat nicht alle erforderlichen Tests bestanden"
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Objekt bauen"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4031
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1340,37 @@ msgstr "Objekt bauen"
 msgid "Quantity"
 msgstr "Anzahl"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Erforderliche Menge für Auftrag"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Bauauftragsposition muss ein Endprodukt festlegen, da der übergeordnete Teil verfolgbar ist"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "Zugewiesene Menge ({q}) darf nicht verfügbare Menge ({a}) übersteigen"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "BestandObjekt ist zu oft zugewiesen"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Reserviermenge muss größer null sein"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1386,19 @@ msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein"
 msgid "Stock Item"
 msgstr "Lagerartikel"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Quell-Lagerartikel"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Installiere in"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Ziel-Lagerartikel"
 
@@ -1429,7 +1435,7 @@ msgstr "Ganzzahl für verfolgbare Teile erforderlich"
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Ganzzahl erforderlich da die Stückliste nachverfolgbare Teile enthält"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1453,7 @@ msgstr "Seriennummern automatisch zuweisen"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "Die folgenden Seriennummern existieren bereits oder sind ungültig"
 
@@ -1455,8 +1461,8 @@ msgstr "Die folgenden Seriennummern existieren bereits oder sind ungültig"
 msgid "A list of build outputs must be provided"
 msgstr "Eine Liste von Endprodukten muss angegeben werden"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1502,8 @@ msgid "Location for completed build outputs"
 msgstr "Lagerort für fertige Endprodukte"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1576,7 @@ msgstr "Akzeptieren, dass Lagerartikel diesem Bauauftrag nicht vollständig zuge
 msgid "Required stock has not been fully allocated"
 msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Unvollständig Zuweisung akzeptieren"
 
@@ -1610,7 +1616,7 @@ msgstr "bom_item.part muss auf dasselbe Teil verweisen wie der Bauauftrag"
 msgid "Item must be in stock"
 msgstr "Teil muss auf Lager sein"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Verfügbare Menge ({q}) überschritten"
@@ -1623,7 +1629,7 @@ msgstr "Für Zuweisung von verfolgten Teilen muss ein Endprodukt angegeben sein"
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "Endprodukt kann bei Zuweisung nicht-verfolgter Teile nicht angegeben werden"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "Zuweisungen müssen angegeben werden"
 
@@ -1663,8 +1669,8 @@ msgstr "Optionale Positionen"
 msgid "Allocate optional BOM items to build order"
 msgstr "Optionale Stücklisten-Positionen dem Bauauftrag hinzufügen"
 
-#: build/serializers.py:1097 part/models.py:3926 part/models.py:4362
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "Stücklisten-Position"
 
@@ -1693,15 +1699,15 @@ msgstr "In Produktion"
 msgid "Available Stock"
 msgstr "Verfügbarer Bestand"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "Bestand für Bauauftrag erforderlich"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr "Überfälliger Bauauftrag"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr "Bauauftrag {bo} ist jetzt überfällig"
@@ -1818,8 +1824,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Bestand wurde Bauauftrag noch nicht vollständig zugewiesen"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1862,8 @@ msgid "Completed Outputs"
 msgstr "Fertiggestellte Endprodukte"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1913,7 @@ msgstr "Ausgangs-Lager"
 msgid "Stock can be taken from any available location."
 msgstr "Bestand kann jedem verfügbaren Lagerort entnommen werden."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Ziel-Lager"
@@ -2121,1542 +2127,1572 @@ msgstr "Projektbeschreibung"
 msgid "User or group responsible for this project"
 msgstr "Benutzer oder Gruppe verantwortlich für dieses Projekt"
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "Einstellungs-Wert"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "Wert ist keine gültige Option"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "Wahrheitswert erforderlich"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "Nur Ganzzahl eingeben"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "Schlüsseltext muss eindeutig sein"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Keine Gruppe"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Eine leere Domain ist nicht erlaubt."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Ungültiger Domainname: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr "Kein Plugin"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Neustart erforderlich"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "Eine Einstellung wurde geändert, die einen Neustart des Servers erfordert"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr "Ausstehende Migrationen"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr "Anzahl der ausstehenden Datenbankmigrationen"
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "Name der Serverinstanz"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr "Kurze Beschreibung der Instanz"
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr "Name der Instanz verwenden"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr "Den Namen der Instanz in der Titelleiste verwenden"
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr "Anzeige von `Über` einschränken"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr "Zeige das `Über` Fenster nur Administratoren"
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Firmenname"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "interner Firmenname"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "Basis-URL"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "Basis-URL für dieses Instanz"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Standardwährung"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr "Wählen Sie die Basiswährung für Preisberechnungen aus"
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr "Währungsaktualisierungsintervall"
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr "Wie oft Wechselkurse aktualisiert werden sollen (auf Null zum Deaktivieren setzen)"
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "Tage"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr "Währungs-Aktualisierungs-Plugin"
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr "Zu verwendendes Währungs-Aktualisierungs-Plugin"
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Von URL herunterladen"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr "Download-Größenlimit"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr "Maximal zulässige Größe für heruntergeladene Bilder"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr "Benutzer-Agent zum Herunterladen von Daten"
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr "Überschreiben des Benutzer-Agenten, der verwendet wird, um Bilder und Dateien von externer Servern herunterzuladen (leer für die Standardeinstellung)"
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr "Strenge URL-Prüfung"
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr "Erfordert die Schema-Spezifikation bei der Validierung von URLs"
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Bestätigung verpflichtend"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Eine ausdrückliche Benutzerbestätigung für bestimmte Aktionen erfordern."
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr "Baumtiefe"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr "Standard Ebene für Baumansicht. Tiefere Ebenen können bei Bedarf nachgeladen werden."
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr "Prüfungsintervall aktualisieren"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr "Wie oft soll nach Updates gesucht werden? (auf 0 setzen zum Deaktivieren)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Automatische Sicherung"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Automatische Sicherung der Datenbank- und Mediendateien aktivieren"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Intervall für automatische Sicherung"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr "Anzahl der Tage zwischen automatischen Sicherungen"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr "Aufgabenlöschinterval"
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr "Ergebnisse der Hintergrundaufgabe werden nach der angegebenen Anzahl von Tagen gelöscht"
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr "Löschintervall für Fehlerprotokolle"
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr "Fehlerprotokolle werden nach der angegebenen Anzahl von Tagen gelöscht"
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr "Löschintervall für Benachrichtigungen"
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr "Benutzerbenachrichtigungen werden nach der angegebenen Anzahl von Tagen gelöscht"
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Bacode-Feature verwenden"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr "Barcode-Scanner Unterstützung im Webinterface aktivieren"
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr "Barcode-Eingabeverzögerung"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr "Verzögerungszeit bei Barcode-Eingabe"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr "Barcode Webcam-Unterstützung"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Barcode-Scannen über Webcam im Browser erlauben"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr "Artikelrevisionen"
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr "Revisions-Feld für Artikel aktivieren"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr "IPN Regex"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "RegEx Muster für die Zuordnung von Teil-IPN"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "Ändern von IPN erlaubt"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr "Teil-Stückliste kopieren"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird "
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr "Teil-Parameter kopieren"
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Parameter-Daten für dieses Teil kopieren wenn das Teil dupliziert wird"
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr "Teil-Testdaten kopieren"
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr "Test-Daten für dieses Teil kopieren wenn das Teil dupliziert wird"
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr "Kategorie-Parametervorlage kopieren"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Vorlage"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "Teile sind standardmäßig Vorlagen"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Baugruppe"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Komponente"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "Teile können standardmäßig in Baugruppen benutzt werden"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Kaufbar"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Artikel sind grundsätzlich kaufbar"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Verkäuflich"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Artikel sind grundsätzlich verkaufbar"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Nachverfolgbar"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Artikel sind grundsätzlich verfolgbar"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Virtuell"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Teile sind grundsätzlich virtuell"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Import in Ansichten anzeigen"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr "Importassistent in einigen Teil-Ansichten anzeigen"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Verwandte Teile anzeigen"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Verwandte Teile eines Teils anzeigen"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr "Initialer Lagerbestand"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr "Erstellen von Lagerbestand beim Hinzufügen eines neuen Teils erlauben"
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr "Initiale Lieferantendaten"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr "Erstellen von Lieferantendaten beim Hinzufügen eines neuen Teils erlauben"
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Anzeigeformat für Teilenamen"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Format für den Namen eines Teiles"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr "Standardsymbol der Teilkategorie"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr "Standardsymbol der Teilkategorie (leer bedeutet kein Symbol)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr "Parameter Einheiten durchsetzen"
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr "Wenn Einheiten angegeben werden, müssen die Parameterwerte mit den angegebenen Einheiten übereinstimmen"
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr "Dezimalstellen für minimalen Preis"
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr "Mindestanzahl der Dezimalstellen bei der Darstellung der Preisdaten"
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr "Dezimalstellen für maximalen Preis"
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr "Maximale Anzahl der Dezimalstellen bei der Darstellung der Preisdaten"
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr "Zulieferer-Preise verwenden"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr "Lieferanten-Staffelpreise in die Gesamt-Preisberechnungen einbeziehen"
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr "Kaufverlauf überschreiben"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr "Historische Bestellungspreise überschreiben die Lieferanten-Staffelpreise"
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr "Lagerartikel-Preis verwenden"
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr "Preise aus manuell eingegebenen Lagerdaten für Preisberechnungen verwenden"
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr "Lagerartikelpreis Alter"
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr "Lagerartikel, die älter als diese Anzahl an Tagen sind, von der Preisberechnung ausschließen"
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr "Variantenpreise verwenden"
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr "Variantenpreise in die Gesamt-Preisberechnungen einbeziehen"
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr "Nur aktive Varianten"
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr "Nur aktive Variantenteile zur Berechnung der Variantenbepreisung verwenden"
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr "Intervall für Neuberechnung von Preisen"
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr "Anzahl der Tage bis die Teile-Preisberechnungen automatisch aktualisiert werden"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Interne Preise"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr "Interne Preise für Teile aktivieren"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr "Interne Preisüberschreibung"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr "Falls verfügbar, überschreiben interne Preise Preispannenberechnungen"
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Labeldruck aktivieren"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Labeldruck über die Website aktivieren"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "Label Bild DPI"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr "DPI-Auflösung bei der Erstellung von Bilddateien für Etikettendruck-Plugins"
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Berichte aktivieren"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Berichterstellung aktivieren"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Entwickler-Modus"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Berichte im Entwickler-Modus generieren (als HTML)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr "Berichtsfehler protokollieren"
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr "Fehler, die beim Erstellen von Berichten auftreten, protokollieren"
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Seitengröße"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Standardseitenformat für PDF-Bericht"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Testberichte aktivieren"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Erstellung von Test-Berichten aktivieren"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr "Testberichte anhängen"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr "Beim Drucken eines Testberichts dem zugehörigen Lagerbestand eine Kopie des Testberichts beifügen"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr "Global einzigartige Seriennummern"
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr "Seriennummern für Lagerartikel müssen global eindeutig sein"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "Seriennummern automatisch ausfüllen"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr "Seriennummern in Formularen automatisch ausfüllen"
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr "Erschöpften Lagerartikel löschen"
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Determines default behaviour when a stock item is depleted"
+msgid "Determines default behavior when a stock item is depleted"
 msgstr "Legt das Standardverhalten fest, wenn ein Lagerartikel erschöpft ist"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr "Losnummer Vorlage"
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr "Vorlage für die Generierung von Standard-Losnummern für Lagerbestände"
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr "Bestands-Ablauf"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr "Ablaufen von Bestand ermöglichen"
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr "Abgelaufenen Bestand verkaufen"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr "Verkauf von abgelaufenem Bestand erlaubt"
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr "Bestands-Stehzeit"
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr "Anzahl an Tagen, an denen Bestand als abgestanden markiert wird, bevor sie ablaufen"
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr "Abgelaufenen Bestand verbauen"
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr "Verbauen von abgelaufenen Bestand erlaubt"
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr "Bestands-Eigentümerkontrolle"
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren"
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr "Standardsymbol für Lagerort"
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr "Standardsymbol für Lagerstandort (leer bedeutet kein Symbol)"
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr "Zeige installierte Lagerartikel"
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr "Anzeige der installierten Lagerartikel in Bestandstabellen"
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr "Prüfe BOM bei der Installation von Elementen"
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr "Installierte Lagerbestandteile müssen im BOM für den übergeordneten Teil vorhanden sein"
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr "Bauauftragsreferenz-Muster"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Bauaufträge"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Verantwortlicher Benutzer"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+#, fuzzy
+#| msgid "Only salable parts can be assigned to a sales order"
+msgid "A responsible owner must be assigned to each order"
+msgstr "Nur verkaufbare Teile können einem Auftrag zugewiesen werden"
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr "Blockieren bis Test bestanden"
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr "Verhindert die Fertigstellung bis alle erforderlichen Tests bestanden sind"
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr "Rücksendungen aktivieren"
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr "Aktivieren der Rücksendung-Funktion in der Benutzeroberfläche"
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr "Referenz Muster für Rücksendungen"
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Rücksendungen"
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr "Abgeschlossene Rücksendungen bearbeiten"
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr "Bearbeitung von Rücksendungen nach Abschluss erlauben"
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr "Auftragsreferenz-Muster"
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Aufträge"
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr "Auftrag Standardsendung"
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr "Erstelle eine Standardsendung für Aufträge"
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr "Abgeschlossene Aufträge bearbeiten"
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr "Bearbeitung von Aufträgen nach Versand oder Abschluss erlauben"
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr "Bestellungsreferenz-Muster"
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Bestellungen"
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr "Abgeschlossene Einkaufsaufträge bearbeiten"
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr "Bearbeitung von Einkaufsaufträgen nach Versand oder Abschluss erlauben"
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr "Bestellungen automatisch abschließen"
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr "Bestellung automatisch als abgeschlossen markieren, wenn der Empfang aller Artikel bestätigt wurde"
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Passwort vergessen aktivieren"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Registrierung erlauben"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "SSO aktivieren"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "SSO auf den Anmeldeseiten aktivieren"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr "SSO Selbstregistrierung aktivieren"
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr "Selbstregistrierung über SSO für Benutzer auf den Anmeldeseiten aktivieren"
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Email-Adresse erforderlich"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben"
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr "SSO-Benutzer automatisch ausfüllen"
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen"
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "E-Mail zweimal"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr "Bei der Registrierung den Benutzer zweimal nach der E-Mail-Adresse fragen"
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Passwort zweimal"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen"
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Erlaubte Domains"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr "Anmeldung auf bestimmte Domänen beschränken (kommagetrennt, beginnend mit @)"
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr "Gruppe bei Registrierung"
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden"
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "MFA erzwingen"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden."
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr "Plugins beim Start prüfen"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr "Beim Start überprüfen, ob alle Plugins installiert sind - Für Container aktivieren"
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr "Nach Plugin-Aktualisierungen suchen"
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr "Periodische Überprüfungen auf Updates für installierte Plugins aktivieren"
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr "URL-Integration aktivieren"
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr "Plugins zum Hinzufügen von URLs aktivieren"
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr "Navigations-Integration aktivieren"
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr "Plugins zur Integration in die Navigation aktivieren"
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr "App-Integration aktivieren"
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr "Plugins zum Hinzufügen von Apps aktivieren"
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr "Terminplan-Integration aktivieren"
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Geplante Aufgaben aktivieren"
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr "Ereignis-Integration aktivieren"
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren"
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr "Projektcodes aktivieren"
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr "Aktiviere Projektcodes für die Verfolgung von Projekten"
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr "Inventurfunktionen"
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr "Inventur-Funktionen zur Aufzeichnung von Lagerbeständen und zur Berechnung des Lagerwerts aktivieren"
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr "Externe Standorte ausschließen"
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr "Lagerartikeln in externen Standorten in der Berechnungen zur Bestandsaufnahme ausschließen"
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr "Automatische Inventur-Periode"
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr "Anzahl der Tage zwischen automatischen Bestandsaufnahmen (zum Deaktivieren auf Null setzen)"
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr "Löschintervall für Berichte"
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr "Inventurberichte werden nach der angegebenen Anzahl von Tagen gelöscht"
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr "Vollständige Namen von Benutzern anzeigen"
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr "Vollständigen Namen von Benutzern anstatt Benutzername anzeigen"
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr "Blockieren bis Test bestanden"
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr "Verhindert die Fertigstellung bis alle erforderlichen Tests bestanden sind"
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr "Teststation-Daten aktivieren"
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr "Teststation-Datenerfassung für Testergebnisse aktivieren"
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr "Inaktive Teile ausblenden"
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr "Ausblenden inaktiver Teile in den auf der Startseite angezeigten Ergebnissen"
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "Abonnierte Teile anzeigen"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr "Zeige abonnierte Teile auf der Startseite"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "Abonnierte Kategorien anzeigen"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr "Zeige abonnierte Teilkategorien auf der Startseite"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "Neueste Teile anzeigen"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "Zeige neueste Teile auf der Startseite"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Show unvalidated BOMs"
+msgid "Show invalid BOMs"
 msgstr "Nicht validierte Stücklisten anzeigen"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite"
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr "Neueste Bestandänderungen anzeigen"
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite"
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr "Niedrigen Bestand anzeigen"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr "Zeige geringen Bestand auf der Startseite"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr "Lerren Bestand anzeigen"
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite"
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr "Benötigten Bestand anzeigen"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Zeige Bestand für Bauaufträge auf der Startseite"
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr "Abgelaufenen Bestand anzeigen"
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr "Zeige abgelaufene Lagerbestände auf der Startseite"
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr "Alten Bestand anzeigen"
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr "Zeige überfällige Lagerartikel auf der Startseite"
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr "Ausstehende Bauaufträge anzeigen"
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr "Zeige ausstehende Bauaufträge auf der Startseite"
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr "Zeige überfällige Bauaufträge"
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr "Zeige überfällige Bauaufträge auf der Startseite"
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr "Ausstehende POs anzeigen"
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr "Zeige ausstehende POs auf der Startseite"
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr "Überfällige POs anzeigen"
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr "Zeige überfällige POs auf der Startseite"
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr "Ausstehende SOs anzeigen"
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr "Zeige ausstehende SOs auf der Startseite"
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr "Überfällige SOs anzeigen"
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr "Zeige überfällige SOs auf der Startseite"
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr "Ausstehende Versandaufträge anzeigen"
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr "Ausstehende Versandaufträge auf der Startseite anzeigen"
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Zeige Neuigkeiten"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr "Neuigkeiten auf der Startseite anzeigen"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr "Label inline anzeigen"
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "PDF-Labels im Browser anzeigen, anstatt als Datei herunterzuladen"
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr "Standard-Etikettendrucker"
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr "Einen standardmäßig ausgewählten Etikettendrucker konfigurieren"
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr "Berichte inline anzeigen"
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "PDF-Berichte im Browser anzeigen, anstatt als Datei herunterzuladen"
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Teile suchen"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr "Teile in der Suchvorschau anzeigen"
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr "Zulieferteile durchsuchen"
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr "Zuliefererteile in der Suchvorschau anzeigen"
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr "Herstellerteile durchsuchen"
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr "Herstellerteile in der Suchvorschau anzeigen"
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr "Inaktive Teile ausblenden"
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr "Inaktive Teile in der Suchvorschau ausblenden"
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr "Kategorien durchsuchen"
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr "Teilekategorien in der Suchvorschau anzeigen"
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr "Bestand durchsuchen"
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr "Lagerartikel in Suchvorschau anzeigen"
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr "Nicht verfügbare Artikel ausblenden"
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr "Nicht verfügbare Lagerartikel aus der Suchvorschau ausschließen"
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr "Lagerorte durchsuchen"
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr "Lagerorte in Suchvorschau anzeigen"
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr "Firmen durchsuchen"
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr "Firmen in der Suchvorschau anzeigen"
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr "Bauaufträge durchsuchen"
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr "Bauaufträge in der Suchvorschau anzeigen"
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr "Bestellungen durchsuchen"
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr "Bestellungen in der Suchvorschau anzeigen"
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Inaktive Bestellungen ausblenden"
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr "Inaktive Bestellungen in der Suchvorschau ausblenden"
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr "Aufträge durchsuchen"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr "Aufträge in der Suchvorschau anzeigen"
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr "Inaktive Aufträge ausblenden"
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Inaktive Aufträge in der Suchvorschau ausblenden"
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr "Suche nach Rücksendungen"
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr "Rücksendungen in der Suchvorschau anzeigen"
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr "Inaktive Rücksendungen ausblenden"
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr "Inaktive Rücksendungen in der Suchvorschau ausblenden"
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr "Anzahl Suchergebnisse"
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr "Anzahl der Ergebnisse, die in der Vorschau pro Sektion angezeigt werden sollen"
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr "Regex Suche"
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr "Reguläre Ausdrücke in Suchabfragen aktivieren"
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr "Ganzes Wort suchen"
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr "Suchabfragen liefern Ergebnisse für ganze Wortkombinationen"
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "zeige Bestand in Eingabemasken"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken"
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr "Esc-Taste schließt Formulare"
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr "Benutze die Esc-Taste, um Formulare zu schließen"
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr "Fixierter Navigationsleiste"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr "Position der Navigationsleiste am oberen Bildschirmrand fixieren"
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Datumsformat"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr "Bevorzugtes Format für die Anzeige von Daten"
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Teilzeitplanung"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr "Zeige Zeitplanung für Teile"
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr "Inventur"
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr "Zeigt Inventur-Informationen an (falls die Inventurfunktion aktiviert ist)"
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr "Zeichenkettenlänge in Tabellen"
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr "Maximale Länge für Zeichenketten, die in Tabellenansichten angezeigt werden"
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr "Standardvorlage für Teilebeschriftung"
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr "Die Teil-Etikettenvorlage, die automatisch ausgewählt werden soll"
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr "Lagerartikel-Standardvorlage"
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr "Die Lagerartikel-Etikettenvorlage soll automatisch ausgewählt werden"
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr "Standardetikettenvorlage für Lagerstandort"
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr "Die Lagerstandort-Etikettenvorlage, die automatisch ausgewählt werden soll"
 
-#: common/models.py:2410
+#: common/models.py:2462
+#, fuzzy
+#| msgid "Default stock location label template"
+msgid "Default build line label template"
+msgstr "Standardetikettenvorlage für Lagerstandort"
+
+#: common/models.py:2464
+#, fuzzy
+#| msgid "The stock item label template to be automatically selected"
+msgid "The build line label template to be automatically selected"
+msgstr "Die Lagerartikel-Etikettenvorlage soll automatisch ausgewählt werden"
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr "Fehlerberichte empfangen"
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr "Benachrichtigungen bei Systemfehlern erhalten"
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr "Zuletzt verwendete Druckmaschinen"
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr "Die zuletzt benutzten Druckmaschinen für einen Benutzer speichern"
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr "Preisstaffelungs Anzahl"
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Preis"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr "Stückpreis für die angegebene Anzahl"
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr "Endpunkt"
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr "Endpunkt, an dem dieser Webhook empfangen wird"
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr "Name für diesen Webhook"
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Aktiv"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr "Ist dieser Webhook aktiv"
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr "Token"
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr "Token für Zugang"
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Geheimnis"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr "Shared Secret für HMAC"
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "Nachrichten-ID"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr "Eindeutige Kennung für diese Nachricht"
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr "Host"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr "Host von dem diese Nachricht empfangen wurde"
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr "Kopfzeile"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr "Header dieser Nachricht"
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr "Body"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr "Body dieser Nachricht"
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr "Endpunkt, über den diese Nachricht empfangen wurde"
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr "Bearbeitet"
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?"
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr "ID"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr "Titel"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr "Veröffentlicht"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "Autor"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr "Zusammenfassung"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr "Gelesen"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr "Wurde diese Nachricht gelesen?"
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3702,31 @@ msgstr "Wurde diese Nachricht gelesen?"
 msgid "Image"
 msgstr "Bild"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr "Bilddatei"
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr "Einheitsname muss eine gültige Kennung sein"
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr "Einheitsname"
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr "Symbol"
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr "Optionales Einheitssymbol"
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr "Definition"
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr "Einheitsdefinition"
 
@@ -3857,7 +3893,7 @@ msgid "Contact email address"
 msgstr "Kontakt-Email"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3937,7 @@ msgstr "Standard-Währung für diese Firma"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Firma"
@@ -4066,7 +4102,7 @@ msgid "Parameter value"
 msgstr "Parameterwert"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4126,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren"
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4162,7 @@ msgid "Supplier part description"
 msgstr "Zuliefererbeschreibung des Teils"
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4066 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4172,11 @@ msgstr "Zuliefererbeschreibung des Teils"
 msgid "Note"
 msgstr "Notiz"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "Basiskosten"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Mindestpreis"
 
@@ -4170,7 +4206,7 @@ msgstr "Packmenge"
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr "Gesamtmenge, die in einer einzelnen Packung geliefert wird. Für Einzelstücke leer lassen."
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "Vielfache"
 
@@ -4248,8 +4284,8 @@ msgstr "Bild von URL herunterladen"
 msgid "Delete image"
 msgstr "Bild löschen"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4302,7 @@ msgstr "Kunde"
 msgid "Uses default currency"
 msgstr "verwendet Standard-Währung"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4382,7 @@ msgstr "Zulieferer-Bestand"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Bestellungen"
 
@@ -4369,7 +4405,7 @@ msgstr "Neue Bestellung"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Aufträge"
 
@@ -4394,7 +4430,7 @@ msgstr "Zugeordneter Bestand"
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr "Rücksendeaufträge"
 
@@ -4622,7 +4658,7 @@ msgstr "Verfügbarkeit der Teile aktualisieren"
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Lagerartikel"
 
@@ -4675,7 +4711,7 @@ msgstr "Label"
 msgid "Label template file"
 msgstr "Label-Vorlage-Datei"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4737,7 @@ msgstr "Höhe [mm]"
 msgid "Label height, specified in mm"
 msgstr "Label-Höhe in mm"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Dateinamen-Muster"
 
@@ -4715,8 +4751,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Filter"
 
@@ -4847,7 +4883,7 @@ msgstr "Gesamtpreis"
 msgid "No matching purchase order found"
 msgstr "Keine passende Bestellung gefunden"
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4897,7 @@ msgstr "Keine passende Bestellung gefunden"
 msgid "Purchase Order"
 msgstr "Bestellung"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4910,184 @@ msgstr "Rücksendeauftrag"
 msgid "Total price for this order"
 msgstr "Gesamtpreis für diese Bestellung"
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr "Auftragswährung"
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr "Währung für diesen Auftrag (leer lassen, um Firmenstandard zu verwenden)"
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr "Kontakt stimmt nicht mit der ausgewählten Firma überein"
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr "Auftragsbeschreibung (optional)"
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr "Projektcode für diesen Auftrag auswählen"
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Link auf externe Seite"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr "Geplantes Lieferdatum für Auftrag."
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Erstellt von"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Nutzer oder Gruppe der/die für diesen Auftrag zuständig ist/sind"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr "Ansprechpartner für diesen Auftrag"
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr "Firmenadresse für diesen Auftrag"
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Bestell-Referenz"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr "Bestellungs-Status"
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "Firma bei der die Teile bestellt werden"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr "Zulieferer-Referenz"
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr "Zulieferer Bestellreferenz"
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr "Empfangen von"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr "Aufgabedatum"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr "Datum an dem die Bestellung aufgegeben wurde"
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr "Datum an dem der Auftrag fertigstellt wurde"
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen"
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr "Anzahl muss eine positive Zahl sein"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "Firma an die die Teile verkauft werden"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr "Kundenreferenz"
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr "Bestellreferenz"
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Versanddatum"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr "Versand von"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr "Auftrag kann nicht abgeschlossen werden, da keine Teile zugewiesen wurden"
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr "Nur ein offener Auftrag kann als abgeschlossen markiert werden"
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr "Auftrag kann nicht abgeschlossen werden, da unvollständige Sendungen vorhanden sind"
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr "Auftrag kann nicht abgeschlossen werden, da es unvollständige Positionen gibt"
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr "Anzahl"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr "Position - Referenz"
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr "Position - Notizen"
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr "Zieldatum für diesen Einzelposten (leer lassen, um das Zieldatum des Auftrags zu verwenden)"
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr "Positionsbeschreibung (optional)"
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr "Kontext"
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr "Zusätzlicher Kontext für diese Zeile"
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr "Stückpreis"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr "Lieferantenteil muss mit Lieferant übereinstimmen"
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr "gelöscht"
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr "Bestellung"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr "Zuliefererteil"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5097,341 @@ msgstr "Zuliefererteil"
 msgid "Received"
 msgstr "Empfangen"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr "Empfangene Objekt-Anzahl"
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Preis"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr "Preis pro Einheit"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "Wo möchte der Käufer diesen Artikel gelagert haben?"
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr "Ein virtuelles Teil kann nicht einem Auftrag zugeordnet werden"
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr "Nur verkaufbare Teile können einem Auftrag zugewiesen werden"
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "Verkaufspreis"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Stückverkaufspreis"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr "Versendete Menge"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr "Versanddatum"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr "Lieferdatum"
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr "Versanddatum"
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr "Kontrolliert von"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr "Benutzer, der diese Sendung kontrolliert hat"
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr "Sendung"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr "Sendungsnummer"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "Sendungsverfolgungsnummer"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr "Informationen zur Sendungsverfolgung"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr "Rechnungsnummer"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr "Referenznummer für zugehörige Rechnung"
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr "Sendung wurde bereits versandt"
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr "Sendung hat keine zugewiesene Lagerartikel"
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr "Lagerartikel wurde nicht zugewiesen"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr "Kann Lagerartikel keiner Zeile mit einem anderen Teil hinzufügen"
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen"
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein"
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr "Auftrag gehört nicht zu Sendung"
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr "Sendung gehört nicht zu Auftrag"
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr "Position"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr "Sendungsnummer-Referenz"
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr "Position"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr "Lagerartikel für Zuordnung auswählen"
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr "Anzahl für Bestandszuordnung eingeben"
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr "Rücksendungsreferenz"
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr "Firma von der die Artikel zurückgeschickt werden"
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr "Status der Rücksendung"
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr "Nur serialisierte Artikel können einer Rücksendung zugeordnet werden"
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr "Artikel zur Rücksendung auswählen"
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr "Empfangsdatum"
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr "Das Datum des Empfangs dieses Rücksendeartikels"
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr "Ergebnis"
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr "Ergebnis für dieses Zeilenelement"
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr "Kosten für die Rückgabe oder Reparatur dieses Objektes"
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr "Bestellung kann nicht verworfen werden"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr "Erlaube das Schließen des Auftrags mit unvollständigen Positionen"
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr "Auftrag hat unvollständige Positionen"
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr "Der Auftrag ist nicht offen"
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr "Automatische Preisgestaltung"
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr "Kaufpreis automatisch basierend auf Lieferantenbestandsdaten berechnen"
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr "Kaufpreiswährung"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr "Elemente zusammenfügen"
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr "Zusammenführen von Elementen mit dem gleichen Teil, Ziel- und Zieldatum zu einem Zeilenelement"
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr "Zuliefererteil muss ausgewählt werden"
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr "Bestellung muss angegeben sein"
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr "Lieferant muss mit der Bestellung übereinstimmen"
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr "Die Bestellung muss mit dem Lieferant übereinstimmen"
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr "Position"
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr "Position stimmt nicht mit Kaufauftrag überein"
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr "Zielort für empfangene Teile auswählen"
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr "Losnummer für eingehende Lagerartikel"
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Seriennummern für eingehende Lagerartikel"
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Barcode"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr "Gescannter Barcode"
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr "Barcode ist bereits in Verwendung"
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Ganzzahl für verfolgbare Teile erforderlich"
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr "Positionen müssen angegeben werden"
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr "Ziel-Lagerort muss angegeben werden"
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr "Barcode muss eindeutig sein"
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr "Verkaufspreis-Währung"
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr "Keine Sendungsdetails angegeben"
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr "Position ist nicht diesem Auftrag zugeordnet"
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr "Anzahl muss positiv sein"
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr "Seriennummern zum Zuweisen eingeben"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr "Sendung wurde bereits versandt"
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr "Sendung ist nicht diesem Auftrag zugeordnet"
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr "Folgende Serienummern konnten nicht gefunden werden"
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr "Folgende Seriennummern sind bereits zugewiesen"
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr "Artikel der Bestellzeile zurücksenden"
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr "Artikel entspricht nicht der Rücksendeschrift"
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr "Artikel wurde bereits erhalten"
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr "Artikel können nur bei laufenden Bestellungen empfangen werden"
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr "Verkaufspreis-Währung"
 
@@ -5799,12 +5835,12 @@ msgstr "Stückpreis für {part} auf {price} aktualisiert"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert"
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3917 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "Teil-ID"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3918 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Name des Teils"
@@ -5813,20 +5849,20 @@ msgstr "Name des Teils"
 msgid "Part Description"
 msgstr "Beschreibung des Teils"
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr "IPN (Interne Produktnummer)"
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr "Version"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Schlüsselwörter"
@@ -5851,11 +5887,11 @@ msgstr "Standard-Standortnummer"
 msgid "Default Supplier ID"
 msgstr "Standard-Lieferantennummer"
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr "Variante von"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "Minimaler Bestand"
 
@@ -5874,12 +5910,12 @@ msgstr "Benutzt in"
 msgid "Building"
 msgstr "Im Bau"
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr "Minimale Kosten"
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr "Maximale Kosten"
@@ -5897,7 +5933,7 @@ msgstr "Name des übergeordneten Teils"
 msgid "Category Path"
 msgstr "Pfad zur Kategorie"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5941,7 @@ msgstr "Pfad zur Kategorie"
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Teile"
 
@@ -5921,7 +5957,7 @@ msgstr "Stücklisten-Position ID"
 msgid "Parent IPN"
 msgstr "Übergeordnete IPN"
 
-#: part/admin.py:408 part/models.py:3919
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr "Teil IPN"
 
@@ -5937,92 +5973,92 @@ msgstr "Niedrigster Preis"
 msgid "Maximum Price"
 msgstr "Höchster Preis"
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr "Markiert"
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr "Nach markierten Kategorien filtern"
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr "Ebenen"
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr "Filter nach Kategorietiefe"
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr "Mehrstufig"
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr "Unterkategorien in gefilterte Ergebnisse einbeziehen"
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr "Übergeordnetes"
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr "Nach übergeordneter Kategorie filtern"
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr "Baum ausschließen"
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr "Unterkategorien in der angegebenen Kategorie ausschließen"
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr "Ergebnisse"
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr "Eingehende Bestellung"
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr "Ausgehender Auftrag"
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr "Lagerartikel produziert von Bauauftrag"
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr "Lagerartikel für Bauauftrag benötigt"
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr "Gültig"
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr "Gesamte Stückliste validieren"
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr "Diese Option muss ausgewählt werden"
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3862
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Kategorie"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr "Verwendet"
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "Standard-Lagerort"
@@ -6036,363 +6072,363 @@ msgstr "Gesamtbestand"
 msgid "Input quantity for price calculation"
 msgstr "Menge für die Preisberechnung"
 
-#: part/models.py:81 part/models.py:3863 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Teil-Kategorie"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Teil-Kategorien"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Standard-Lagerort für Teile dieser Kategorie"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr "Strukturell"
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr "Teile können nicht direkt einer strukturellen Kategorie zugeordnet werden, können aber untergeordneten Kategorien zugeordnet werden."
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr "Standard Stichwörter"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr "Standard-Stichworte für Teile dieser Kategorie"
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr "Symbol"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr "Symbol (optional)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr "Sie können diese Teilekategorie nicht als strukturell festlegen, da ihr bereits Teile zugewiesen sind!"
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr "Ungültige Auswahl für übergeordnetes Teil"
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr "Teil '{self}' kann in der Stückliste nicht für '{parent}' (rekursiv) verwendet werden"
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr "Teil '{parent}' wird in der Stückliste für '{self}' (rekursiv) verwendet"
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr "IPN muss mit Regex-Muster {pattern} übereinstimmen"
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits"
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr "Teil mit diesem Namen, IPN und Revision existiert bereits."
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr "Strukturellen Teilekategorien können keine Teile zugewiesen werden!"
 
-#: part/models.py:854 part/models.py:3918
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Name des Teils"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr "Ist eine Vorlage"
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr "Ist dieses Teil eine Vorlage?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr "Ist dieses Teil eine Variante eines anderen Teils?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr "Artikelbeschreibung (optional)"
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern"
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "Teile-Kategorie"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr "Interne Teilenummer"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr "Revisions- oder Versionsnummer"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr "Wo wird dieses Teil normalerweise gelagert?"
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr "Standard Zulieferer"
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr "Standard Zuliefererteil"
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr "Standard Ablaufzeit"
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils"
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr "Minimal zulässiger Bestand"
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr "Maßeinheit für diesen Teil"
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?"
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?"
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr "Hat dieses Teil Tracking für einzelne Objekte?"
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?"
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr "Kann dieses Teil an Kunden verkauft werden?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr "Ist dieses Teil aktiv?"
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?"
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr "Prüfsumme der Stückliste"
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr "Prüfsumme der Stückliste gespeichert"
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr "Stückliste kontrolliert von"
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr "BOM Kontrolldatum"
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr "Erstellungs-Nutzer"
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr "Verantwortlicher Besitzer für dieses Teil"
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr "Letzte Inventur"
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr "Mehrere verkaufen"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr "Währung für die Berechnung der Preise im Cache"
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr "Minimale Stücklisten Kosten"
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr "Minimale Kosten für Teile"
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr "Maximale Stücklisten Kosten"
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr "Maximale Kosten für Teile"
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr "Minimale Einkaufskosten"
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr "Minimale historische Kaufkosten"
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr "Maximale Einkaufskosten"
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr "Maximale historische Einkaufskosten"
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr "Minimaler interner Preis"
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr "Minimale Kosten basierend auf den internen Staffelpreisen"
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr "Maximaler interner Preis"
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr "Maximale Kosten basierend auf internen Preisstaffeln"
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr "Minimaler Lieferantenpreis"
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr "Mindestpreis für Teil von externen Lieferanten"
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr "Maximaler Lieferantenpreis"
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr "Maximaler Preis für Teil von externen Lieferanten"
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr "Minimale Variantenkosten"
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr "Berechnete minimale Kosten für Variantenteile"
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr "Maximale Variantenkosten"
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr "Berechnete maximale Kosten für Variantenteile"
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr "Mindestkosten überschreiben"
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr "Maximale Kosten überschreiben"
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr "Berechnete Mindestkosten"
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr "Berechnete Maximalkosten"
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr "Mindestverkaufspreis"
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr "Mindestverkaufspreis basierend auf Staffelpreisen"
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr "Maximaler Verkaufspreis"
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr "Maximalverkaufspreis basierend auf Staffelpreisen"
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr "Mindestverkaufskosten"
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr "Minimaler historischer Verkaufspreis"
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr "Maximale Verkaufskosten"
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr "Maximaler historischer Verkaufspreis"
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr "Teil für die Inventur"
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr "Stückzahl"
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr "Anzahl einzelner Bestandseinträge zum Zeitpunkt der Inventur"
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr "Insgesamt verfügbarer Lagerbestand zum Zeitpunkt der Inventur"
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6440,330 @@ msgstr "Insgesamt verfügbarer Lagerbestand zum Zeitpunkt der Inventur"
 msgid "Date"
 msgstr "Datum"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr "Datum der Inventur"
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr "Zusätzliche Notizen"
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr "Benutzer, der diese Inventur durchgeführt hat"
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr "Mindestbestandswert"
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr "Geschätzter Mindestwert des vorhandenen Bestands"
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr "Maximaler Bestandswert"
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr "Geschätzter Maximalwert des vorhandenen Bestands"
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr "Bericht"
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr "Inventur-Berichtsdatei (intern generiert)"
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr "Anzahl der Teile"
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr "Anzahl der Teile, die von der Inventur abgedeckt werden"
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr "Benutzer, der diesen Inventurbericht angefordert hat"
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr "Ungültiger Vorlagenname - es muss mindestens ein alphanumerisches Zeichen enthalten sein"
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr "Test-Vorlagen können nur für verfolgbare Teile angelegt werden"
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr "Testvorlage mit demselben Schlüssel existiert bereits für Teil"
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr "Test-Name"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr "Namen für diesen Test eingeben"
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr "Testschlüssel"
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr "Vereinfachter Schlüssel zum Test"
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr "Test-Beschreibung"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr "Beschreibung für diesen Test eingeben"
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr "Ist dieser Test aktiviert?"
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr "Benötigt"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr "Muss dieser Test erfolgreich sein?"
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr "Erfordert Wert"
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr "Muss für diesen Test ein Wert für das Test-Ergebnis eingetragen werden?"
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr "Anhang muss eingegeben werden"
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr "Muss für diesen Test ein Anhang für das Test-Ergebnis hinzugefügt werden?"
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr "Checkbox-Parameter können keine Einheiten haben"
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr "Checkbox-Parameter können keine Auswahl haben"
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr "Auswahl muss einzigartig sein"
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr "Name des Parameters"
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr "Physikalische Einheiten für diesen Parameter"
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr "Parameter-Beschreibung"
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr "Checkbox"
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr "Ist dieser Parameter eine Checkbox?"
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr "Auswahlmöglichkeiten"
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr "Gültige Optionen für diesen Parameter (durch Kommas getrennt)"
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr "Ungültige Auswahl für Parameterwert"
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr "Ausgangsteil"
 
-#: part/models.py:3772 part/models.py:3870 part/models.py:3871
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr "Parameter Vorlage"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr "Wert"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr "Parameter Wert"
 
-#: part/models.py:3877 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr "Standard-Wert"
 
-#: part/models.py:3878
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr "Standard Parameter Wert"
 
-#: part/models.py:3916
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr "Teilnummer oder Teilname"
 
-#: part/models.py:3917
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr "Eindeutige Teil-ID"
 
-#: part/models.py:3919
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr "IPN-Wert des Teils"
 
-#: part/models.py:3920
+#: part/models.py:3921
 msgid "Level"
 msgstr "Stufe"
 
-#: part/models.py:3920
+#: part/models.py:3921
 msgid "BOM level"
 msgstr "Stücklistenebene"
 
-#: part/models.py:4010
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr "Ausgangsteil auswählen"
 
-#: part/models.py:4020
+#: part/models.py:4021
 msgid "Sub part"
 msgstr "Untergeordnetes Teil"
 
-#: part/models.py:4021
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr "Teil für die Nutzung in der Stückliste auswählen"
 
-#: part/models.py:4032
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
 
-#: part/models.py:4038
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr "Diese Stücklisten-Position ist optional"
 
-#: part/models.py:4044
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr "Diese Stücklisten-Position ist ein Verbrauchsartikel (sie wird nicht in Bauaufträgen verfolgt)"
 
-#: part/models.py:4051 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Überschuss"
 
-#: part/models.py:4052
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Geschätzter Ausschuss (absolut oder prozentual)"
 
-#: part/models.py:4059
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr "Referenz der Postion auf der Stückliste"
 
-#: part/models.py:4067
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr "Notizen zur Stücklisten-Position"
 
-#: part/models.py:4073
+#: part/models.py:4074
 msgid "Checksum"
 msgstr "Prüfsumme"
 
-#: part/models.py:4074
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr "Prüfsumme der Stückliste"
 
-#: part/models.py:4079 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr "überprüft"
 
-#: part/models.py:4080
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr "Diese Stücklistenposition wurde validiert"
 
-#: part/models.py:4085 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr "Wird vererbt"
 
-#: part/models.py:4086
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr "Diese Stücklisten-Position wird in die Stücklisten von Teil-Varianten vererbt"
 
-#: part/models.py:4091 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr "Varianten zulassen"
 
-#: part/models.py:4092
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr "Bestand von Varianten kann für diese Stücklisten-Position verwendet werden"
 
-#: part/models.py:4177 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr "Menge muss eine Ganzzahl sein"
 
-#: part/models.py:4187 part/models.py:4189
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr "Zuliefererteil muss festgelegt sein"
 
-#: part/models.py:4329
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr "Stücklisten Ersatzteile"
 
-#: part/models.py:4350
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein"
 
-#: part/models.py:4363
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr "Übergeordnete Stücklisten Position"
 
-#: part/models.py:4371
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr "Ersatzteil"
 
-#: part/models.py:4387
+#: part/models.py:4388
 msgid "Part 1"
 msgstr "Teil 1"
 
-#: part/models.py:4395
+#: part/models.py:4396
 msgid "Part 2"
 msgstr "Teil 2"
 
-#: part/models.py:4396
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr "verknüpftes Teil auswählen"
 
-#: part/models.py:4415
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr "Teil-Beziehung kann nicht zwischen einem Teil und sich selbst erstellt werden"
 
-#: part/models.py:4420
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr "Doppelte Beziehung existiert bereits"
 
@@ -7205,7 +7241,7 @@ msgstr "Inventurinformationen hinzufügen"
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr "Inventur"
 
@@ -8057,7 +8093,7 @@ msgstr "Rand"
 msgid "Print a border around each label"
 msgstr "Einen Rahmen um jedes Label drucken"
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr "Querformat"
 
@@ -8394,111 +8430,111 @@ msgstr "US-Legal"
 msgid "Letter"
 msgstr "US-Letter"
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr "Vorlagen Name"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr "Bericht-Vorlage Datei"
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr "Bericht-Vorlage Beschreibung"
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr "Bericht Revisionsnummer (autom. erhöht)"
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr "Seitengröße für PDF-Berichte"
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr "Bericht in Querformat anzeigen"
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr "Muster für die Erstellung von Berichtsdateinamen"
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr "Bericht-Vorlage ist ein"
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr "Lagerartikel-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr "einfügen Installiert in Tests"
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr "Test-Ergebnisse für Lagerartikel in Baugruppen einschließen"
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr "Bauauftrag Filter"
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr "Bau-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr "Teil Filter"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr "Bestellungs-Abfragefilter"
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr "Auftrags-Abfragefilter"
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr "Rückgabe von Auftragsabfragefiltern"
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr "Snippet-Datei mit diesem Namen existiert bereits"
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr "Snippet"
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr "Berichts-Snippet"
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr "Snippet-Beschreibung"
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr "Eine Datei mit diesem Namen existiert bereits"
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr "Ressource"
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr "Berichts-Ressource"
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr "Ressource-Beschreibung"
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr "Filter für standortbezogene Abfragen (kommaseparierte Liste von Schlüssel=Wert-Paaren)"
 
@@ -8685,60 +8721,60 @@ msgstr "Löschen wenn leer"
 msgid "Expiry Date"
 msgstr "Ablaufdatum"
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr "Filtern nach Standorttiefe"
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr "Unterorte in gefilterte Ergebnisse einbeziehen"
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr "Übergeordneter Ort"
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr "Filtern nach übergeordnetem Ort"
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr "Externer Standort"
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr "Teile-Baum"
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr "Gültigkeitsdauer vor"
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr "Gültigkeitsdauer nach"
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr "überfällig"
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr "Menge ist erforderlich"
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr "Gültiges Teil muss angegeben werden"
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr "Der angegebene Lieferantenartikel existiert nicht"
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr "Das Zulieferteil hat eine Packungsgröße definiert, aber das Kennzeichen use_pack_size ist nicht gesetzt"
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr "Seriennummern können für nicht verfolgbare Teile nicht angegeben werden"
 
@@ -8762,7 +8798,7 @@ msgstr "Bestand-Lagerort"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Bestand-Lagerorte"
 
@@ -10071,7 +10107,7 @@ msgstr "Bewerten"
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Löschen"
 
@@ -13248,7 +13284,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "Hinzufügen"
 
@@ -13891,7 +13927,7 @@ msgstr "Benachrichtigungen anzeigen"
 msgid "New Notifications"
 msgstr "Neue Benachrichtigungen"
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr "Admin"
 
@@ -14128,35 +14164,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "Berechtigung geändert"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Gruppe"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Ansicht"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Berechtigung Einträge anzuzeigen"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Berechtigung Einträge zu erstellen"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Ändern"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Berechtigungen Einträge zu ändern"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Berechtigung Einträge zu löschen"
-
diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po
index 6aa9caee6188..fc16a5e03487 100644
--- a/InvenTree/locale/el/LC_MESSAGES/django.po
+++ b/InvenTree/locale/el/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Greek\n"
@@ -34,16 +34,16 @@ msgstr "Η μονάδα μέτρησης δεν είναι έγκυρη ({unit})
 msgid "No value provided"
 msgstr "Δεν εισήχθη τιμή"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Δεν ήταν δυνατή η μετατροπή από {original} σε {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Δόθηκε μη έγκυρη ποσότητα"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Δόθηκε μη έγκυρη ποσότητα ({exc})"
@@ -59,10 +59,10 @@ msgstr "Εισάγετε ημερομηνία"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Ο παρεχόμενος τομέας ηλεκτρονικού ταχυ
 msgid "Registration is disabled."
 msgstr "Η εγγραφή είναι απενεργοποιημένη."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Μη έγκυρη ποσότητα"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Κενό σειριακό αριθμό συμβολοσειράς"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Διπλότυπο serial number"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Μη έγκυρο εύρος ομάδας: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Το εύρος της ομάδας {group} υπερβαίνει την επιτρεπόμενη ποσότητα ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Μη έγκυρη ακολουθία ομάδας: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Δεν βρέθηκαν σειριακοί αριθμοί"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Ο αριθμός μοναδικών σειριακών αριθμών ({len(serials)}) πρέπει να αντιστοιχεί στην ποσότητα ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Αφαιρέστε τα HTML tags από την τιμή που εισάγατε"
 
@@ -405,10 +405,10 @@ msgstr "Συνημμένο"
 msgid "Select file to attach"
 msgstr "Επιλέξτε αρχείο για επισύναψη"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Επιλέξτε αρχείο για επισύναψη"
 msgid "Link"
 msgstr "Σύνδεσμος"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Σύνδεσμος προς εξωτερική διεύθυνση URL"
@@ -436,10 +436,10 @@ msgstr "Σχόλιο"
 msgid "File comment"
 msgstr "Σχόλιο αρχείου"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Διπλότυπα ονόματα δεν μπορούν να υπάρχ
 msgid "Invalid choice"
 msgstr "Μη έγκυρη επιλογή"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Μη έγκυρη επιλογή"
 msgid "Name"
 msgstr "Όνομα"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Σφάλμα διακομιστή"
 msgid "An error has been logged by the server."
 msgstr "Ένα σφάλμα έχει καταγραφεί από το διακομιστή."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Πρέπει να είναι αριθμός"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Επιστράφηκε"
 msgid "In Progress"
 msgstr "Σε Εξέλιξη"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Σχετικά με το InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Η έκδοση πρέπει να ακυρωθεί πριν διαγραφεί"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Αναλώσιμο"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Σειρά Κατασκευής"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Δημιουργία Παραγγελιών"
 
@@ -1008,17 +1008,21 @@ msgstr "Δημιουργία Παραγγελιών"
 msgid "Invalid choice for parent build"
 msgstr "Μη έγκυρη επιλογή για γονική κατασκευή"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Εξάρτημα από εντολή κατασκευής δεν μπορεί να αλλάξει"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Αναφορά Παραγγελίας Κατασκευής"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Αναφορά Παραγγελίας Κατασκευής"
 msgid "Reference"
 msgstr "Αναφορά"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Σύντομη περιγραφή της κατασκευής (προαιρετικό)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Γονική Κατασκευή"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατασκευή"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα
 msgid "Part"
 msgstr "Εξάρτημα"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Επιλέξτε τμήμα για κατασκευή"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Κωδικός Παραγγελίας Πωλήσεων"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "SalesOrder στην οποία έχει διατεθεί αυτό το build"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Τοποθεσία Προέλευσης"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Επιλέξτε τοποθεσία από την οποία θα γίνει απόθεμα, για αυτή την κατασκευή (αφήστε κενό για να πάρετε από οποιαδήποτε θέση αποθήκευσης)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Τοποθεσία Προορισμού"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Επιλέξτε την τοποθεσία όπου θα αποθηκευτούν τα ολοκληρωμένα στοιχεία"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Ποσότητα Κατασκευής"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Αριθμός αντικειμένων για κατασκευή"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Ολοκληρωμένα αντικείμενα"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Αριθμός αντικειμένων αποθέματος που έχουν ολοκληρωθεί"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Κατάσταση Κατασκευής"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Κωδικός κατάστασης κατασκευής"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Κωδικός Παρτίδας"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Κωδικός παρτίδας για αυτήν την κατασκευή"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Ημερομηνία Δημιουργίας"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Ημερομηνία ολοκλήρωσης στόχου"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Ημερομηνία ολοκλήρωσης της κατασκευής. Η κατασκευή θα καθυστερήσει μετά από αυτή την ημερομηνία."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Ημερομηνία ολοκλήρωσης"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "ολοκληρώθηκε από"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Εκδόθηκε από"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Χρήστης που εξέδωσε αυτήν την παραγγελία κατασκευής"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr "Χρήστης που εξέδωσε αυτήν την παραγγελ
 msgid "Responsible"
 msgstr "Υπεύθυνος"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Χρήστης ή ομάδα υπεύθυνη για αυτή την εντολή κατασκευής"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr "Χρήστης ή ομάδα υπεύθυνη για αυτή την ε
 msgid "External Link"
 msgstr "Εξωτερικοί σύνδεσμοι"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Προτεραιότητα Κατασκευής"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Προτεραιότητα αυτής της εντολής κατασκευής"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr "Προτεραιότητα αυτής της εντολής κατασκ
 msgid "Project Code"
 msgstr "Κωδικός Έργου"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Κωδικός έργου για αυτήν την εντολή κατασκευής"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Η παραγγελία κατασκευής {build} έχει ολοκληρωθεί"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Δεν καθορίστηκε έξοδος κατασκευής"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "Η ποσότητα δεν μπορεί να είναι μεγαλύτερη από την παραγόμενη ποσότητα"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr "Το προϊόν κατασκευής {serial} δεν έχει περάσει όλες τις απαιτούμενες δοκιμές"
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Αντικείμενο κατασκευής"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr "Αντικείμενο κατασκευής"
 msgid "Quantity"
 msgstr "Ποσότητα"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Απαιτούμενη ποσότητα για την εντολή κατασκευής"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Το στοιχείο κατασκευής πρέπει να ορίζει μια έξοδο κατασκευής, καθώς το κύριο τμήμα επισημαίνεται ως ανιχνεύσιμο"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "Η καταχωρημένη ποσότητα ({q}) δεν πρέπει να υπερβαίνει τη διαθέσιμη ποσότητα αποθέματος ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Στοιχείο αποθέματος είναι υπερ-κατανεμημένο"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Η ποσότητα πρέπει να είναι 1 για σειριακό απόθεμα"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "Το επιλεγμένο στοιχείο αποθέματος δεν ταιριάζει με τη γραμμή ΤΥ"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr "Το επιλεγμένο στοιχείο αποθέματος δεν 
 msgid "Stock Item"
 msgstr "Στοιχείο Αποθέματος"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Στοιχείο πηγαίου αποθέματος"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Ποσότητα αποθέματος για διάθεση για κατασκευή"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Εγκατάσταση σε"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Αποθήκη προορισμού"
 
@@ -1429,7 +1433,7 @@ msgstr "Ακέραιη ποσότητα που απαιτείται για αν
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Ακέραιη ποσότητα που απαιτείται, καθώς ο λογαριασμός των υλικών περιέχει ανιχνεύσιμα μέρη"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr "Αυτόματη Κατανομή Σειριακών Αριθμών"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Αυτόματη κατανομή των απαιτούμενων στοιχείων με τους αντίστοιχους σειριακούς αριθμούς"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "Οι παρακάτω σειριακοί αριθμοί υπάρχουν ήδη ή δεν είναι έγκυροι"
 
@@ -1455,8 +1459,8 @@ msgstr "Οι παρακάτω σειριακοί αριθμοί υπάρχουν
 msgid "A list of build outputs must be provided"
 msgstr "Πρέπει να παρέχεται μια λίστα με τα αποτελέσματα κατασκευής"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr "Τοποθεσία για ολοκληρωμένα προϊόντα κατασκευής"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr "Αποδεχτείτε ότι αντικείμενα αποθέματο
 msgid "Required stock has not been fully allocated"
 msgstr "Το απαιτούμενο απόθεμα δεν έχει δεσμευτεί πλήρως"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Αποδοχή Μη Ολοκληρωμένων"
 
@@ -1610,7 +1614,7 @@ msgstr "bom_item.part πρέπει να δείχνει στο ίδιο εξάρ
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Το Απόθεμα δεν έχει κατανεμηθεί πλήρως σε αυτή την Εντολή Κατασκευής"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr "Ολοκληρωμένα Προϊόντα"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr "Προέλευση Αποθέματος"
 msgid "Stock can be taken from any available location."
 msgstr "Το απόθεμα μπορεί να ληφθεί από οποιαδήποτε διαθέσιμη τοποθεσία."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Προορισμός"
@@ -2121,1542 +2125,1562 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Υπεύθυνος"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3690,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3881,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3925,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4090,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4114,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4150,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4160,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4194,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4272,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4290,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4370,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4393,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4418,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4646,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4699,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4725,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4739,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4871,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4885,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4898,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5085,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5823,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5837,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5875,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5898,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5921,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5929,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5945,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5961,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6060,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6428,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7229,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8081,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8252,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8418,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8709,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8786,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10095,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13272,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13915,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14152,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
index 913b7a621d7a..77677682d2c1 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: 2024-03-15 22:12+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -35,16 +35,16 @@ msgstr ""
 msgid "No value provided"
 msgstr ""
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -60,15 +60,15 @@ msgstr ""
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451
-#: stock/serializers.py:487 stock/serializers.py:645 stock/serializers.py:741
-#: stock/serializers.py:791 stock/serializers.py:1100 stock/serializers.py:1189
-#: stock/serializers.py:1354 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
+#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
+#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203
+#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
 #: templates/js/translated/part.js:1080
@@ -76,7 +76,7 @@ msgstr ""
 #: templates/js/translated/return_order.js:776
 #: templates/js/translated/sales_order.js:1067
 #: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391
+#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427
 msgid "Notes"
 msgstr ""
 
@@ -133,42 +133,42 @@ msgstr ""
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr ""
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr ""
 
@@ -204,131 +204,135 @@ msgstr ""
 msgid "Supplied URL is not a valid image file"
 msgstr ""
 
-#: InvenTree/locales.py:16
+#: InvenTree/locales.py:18
 msgid "Bulgarian"
 msgstr ""
 
-#: InvenTree/locales.py:17
+#: InvenTree/locales.py:19
 msgid "Czech"
 msgstr ""
 
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
 msgid "Danish"
 msgstr ""
 
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
 msgid "German"
 msgstr ""
 
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
 msgid "Greek"
 msgstr ""
 
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
 msgid "English"
 msgstr ""
 
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
 msgid "Spanish"
 msgstr ""
 
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
 msgid "Spanish (Mexican)"
 msgstr ""
 
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
 msgid "Farsi / Persian"
 msgstr ""
 
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
 msgid "Finnish"
 msgstr ""
 
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
 msgid "French"
 msgstr ""
 
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
 msgid "Hebrew"
 msgstr ""
 
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
 msgid "Hindi"
 msgstr ""
 
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
 msgid "Hungarian"
 msgstr ""
 
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
 msgid "Italian"
 msgstr ""
 
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
 msgid "Japanese"
 msgstr ""
 
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
 msgid "Korean"
 msgstr ""
 
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
+msgid "Latvian"
+msgstr ""
+
+#: InvenTree/locales.py:36
 msgid "Dutch"
 msgstr ""
 
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:37
 msgid "Norwegian"
 msgstr ""
 
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:38
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:39
 msgid "Portuguese"
 msgstr ""
 
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:40
 msgid "Portuguese (Brazilian)"
 msgstr ""
 
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
 msgid "Russian"
 msgstr ""
 
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
 msgid "Slovak"
 msgstr ""
 
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
 msgid "Slovenian"
 msgstr ""
 
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
 msgid "Serbian"
 msgstr ""
 
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
 msgid "Swedish"
 msgstr ""
 
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
 msgid "Thai"
 msgstr ""
 
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
 msgid "Turkish"
 msgstr ""
 
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
 msgid "Vietnamese"
 msgstr ""
 
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
 msgid "Chinese (Simplified)"
 msgstr ""
 
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
 msgid "Chinese (Traditional)"
 msgstr ""
 
@@ -392,7 +396,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:559 stock/models.py:2446
+#: InvenTree/models.py:559 stock/models.py:2449
 #: templates/js/translated/attachment.js:119
 #: templates/js/translated/attachment.js:326
 msgid "Attachment"
@@ -402,10 +406,10 @@ msgstr ""
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:568 common/models.py:2955 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -419,7 +423,7 @@ msgstr ""
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr ""
@@ -433,13 +437,13 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2431
-#: common/models.py:2432 common/models.py:2656 common/models.py:2657
-#: common/models.py:2902 common/models.py:2903 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3000 users/models.py:100
+#: templates/js/translated/stock.js:3036 users/models.py:100
 msgid "User"
 msgstr ""
 
@@ -480,10 +484,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:894 common/models.py:2643 common/models.py:3041
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -496,21 +500,21 @@ msgstr ""
 #: templates/js/translated/company.js:1155
 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -532,8 +536,8 @@ msgstr ""
 #: templates/js/translated/return_order.js:314
 #: templates/js/translated/sales_order.js:802
 #: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021
-#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057
+#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831
 msgid "Description"
 msgstr ""
 
@@ -546,7 +550,7 @@ msgid "parent"
 msgstr ""
 
 #: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2721
+#: templates/js/translated/stock.js:2757
 msgid "Path"
 msgstr ""
 
@@ -582,12 +586,12 @@ msgstr ""
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr ""
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -597,85 +601,85 @@ msgstr ""
 msgid "Select currency from available options"
 msgstr ""
 
-#: InvenTree/serializers.py:436
+#: InvenTree/serializers.py:441
 msgid "You do not have permission to change this user role."
 msgstr ""
 
-#: InvenTree/serializers.py:448
+#: InvenTree/serializers.py:453
 msgid "Only superusers can create new users"
 msgstr ""
 
-#: InvenTree/serializers.py:467
+#: InvenTree/serializers.py:472
 msgid "Your account has been created."
 msgstr ""
 
-#: InvenTree/serializers.py:469
+#: InvenTree/serializers.py:474
 msgid "Please use the password reset function to login"
 msgstr ""
 
-#: InvenTree/serializers.py:476
+#: InvenTree/serializers.py:481
 msgid "Welcome to InvenTree"
 msgstr ""
 
-#: InvenTree/serializers.py:537
+#: InvenTree/serializers.py:542
 msgid "Filename"
 msgstr ""
 
-#: InvenTree/serializers.py:571
+#: InvenTree/serializers.py:576
 msgid "Invalid value"
 msgstr ""
 
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:596
 msgid "Data File"
 msgstr ""
 
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:597
 msgid "Select data file for upload"
 msgstr ""
 
-#: InvenTree/serializers.py:609
+#: InvenTree/serializers.py:614
 msgid "Unsupported file type"
 msgstr ""
 
-#: InvenTree/serializers.py:615
+#: InvenTree/serializers.py:620
 msgid "File is too large"
 msgstr ""
 
-#: InvenTree/serializers.py:636
+#: InvenTree/serializers.py:641
 msgid "No columns found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:639
+#: InvenTree/serializers.py:644
 msgid "No data rows found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:752
+#: InvenTree/serializers.py:757
 msgid "No data rows provided"
 msgstr ""
 
-#: InvenTree/serializers.py:755
+#: InvenTree/serializers.py:760
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:822
+#: InvenTree/serializers.py:827
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr ""
 
-#: InvenTree/serializers.py:831
+#: InvenTree/serializers.py:836
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr ""
 
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:859
 msgid "Remote Image"
 msgstr ""
 
-#: InvenTree/serializers.py:855
+#: InvenTree/serializers.py:860
 msgid "URL of remote image file"
 msgstr ""
 
-#: InvenTree/serializers.py:873
+#: InvenTree/serializers.py:878
 msgid "Downloading images from remote URL is not enabled"
 msgstr ""
 
@@ -728,7 +732,7 @@ msgstr ""
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -819,7 +823,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855
 msgid "Merged stock items"
 msgstr ""
 
@@ -839,7 +843,7 @@ msgstr ""
 msgid "Build order output rejected"
 msgstr ""
 
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761
 msgid "Consumed by build order"
 msgstr ""
 
@@ -939,14 +943,14 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -986,7 +990,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:105
 #: templates/email/build_order_completed.html:16
 #: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892
 msgid "Build Order"
 msgstr ""
 
@@ -997,7 +1001,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1005,17 +1009,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1029,27 +1037,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1060,7 +1068,7 @@ msgstr ""
 #: report/templates/report/inventree_return_order_report_base.html:24
 #: report/templates/report/inventree_slr_report.html:102
 #: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:253 stock/serializers.py:675
+#: stock/serializers.py:267 stock/serializers.py:689
 #: templates/InvenTree/search.html:82
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
@@ -1087,113 +1095,113 @@ msgstr ""
 #: templates/js/translated/sales_order.js:1598
 #: templates/js/translated/sales_order.js:1796
 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960
-#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054
-#: templates/js/translated/stock.js:3200
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996
+#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090
+#: templates/js/translated/stock.js:3236
 msgid "Part"
 msgstr ""
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
-#: stock/models.py:826 stock/serializers.py:1319
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
+#: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1204,11 +1212,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1220,16 +1228,16 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1239,57 +1247,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
-#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:458
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
+#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2453
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1299,7 +1307,7 @@ msgstr ""
 #: report/templates/report/inventree_so_report_base.html:29
 #: report/templates/report/inventree_test_report_base.html:90
 #: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:449
+#: stock/admin.py:160 stock/serializers.py:463
 #: stock/templates/stock/item_base.html:287
 #: stock/templates/stock/item_base.html:295
 #: stock/templates/stock/item_base.html:342
@@ -1326,43 +1334,43 @@ msgstr ""
 #: templates/js/translated/sales_order.js:1698
 #: templates/js/translated/sales_order.js:1824
 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985
-#: templates/js/translated/stock.js:3068
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021
+#: templates/js/translated/stock.js:3104
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:552 stock/serializers.py:1038
-#: stock/serializers.py:1150 stock/templates/stock/item_base.html:10
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
+#: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
 #: templates/js/translated/build.js:1742
@@ -1373,23 +1381,23 @@ msgstr ""
 #: templates/js/translated/sales_order.js:1605
 #: templates/js/translated/sales_order.js:1692
 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2941
+#: templates/js/translated/stock.js:2977
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1426,8 +1434,8 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
-#: stock/serializers.py:469 templates/js/translated/purchase_order.js:1153
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
+#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
 msgstr ""
@@ -1444,7 +1452,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1452,10 +1460,10 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
-#: stock/serializers.py:480 stock/serializers.py:640 stock/serializers.py:736
-#: stock/serializers.py:1182 stock/serializers.py:1438
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
+#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
+#: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
 #: templates/js/translated/barcode.js:547
 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1467,8 +1475,8 @@ msgstr ""
 #: templates/js/translated/sales_order.js:1627
 #: templates/js/translated/sales_order.js:1706
 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164
-#: templates/js/translated/stock.js:2835
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2871
 msgid "Location"
 msgstr ""
 
@@ -1493,17 +1501,17 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
-#: stock/serializers.py:787 stock/serializers.py:1326
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
+#: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
 #: templates/js/translated/purchase_order.js:1308
 #: templates/js/translated/purchase_order.js:1723
 #: templates/js/translated/return_order.js:331
 #: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959
-#: templates/js/translated/stock.js:3084
+#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995
+#: templates/js/translated/stock.js:3120
 msgid "Status"
 msgstr ""
 
@@ -1567,7 +1575,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1603,11 +1611,11 @@ msgstr ""
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:817 stock/serializers.py:1051
+#: build/serializers.py:817 stock/serializers.py:1065
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1620,7 +1628,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1660,8 +1668,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1690,15 +1698,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1815,8 +1823,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1853,8 +1861,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1864,7 +1872,7 @@ msgstr ""
 #: templates/js/translated/pricing.js:929
 #: templates/js/translated/sales_order.js:769
 #: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2888
+#: templates/js/translated/stock.js:2924
 msgid "Sales Order"
 msgstr ""
 
@@ -1904,7 +1912,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -1922,8 +1930,8 @@ msgstr ""
 #: templates/js/translated/build.js:1377
 #: templates/js/translated/model_renderers.js:235
 #: templates/js/translated/purchase_order.js:1274
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:3127
 #: templates/js/translated/table_filters.js:313
 #: templates/js/translated/table_filters.js:404
 msgid "Batch"
@@ -2118,1534 +2126,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:96
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
+#: common/models.py:2066
+msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
+#: common/models.py:2067
+msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2023 common/models.py:2423
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2064
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2066
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2073
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2090
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2096
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2182
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2190
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2198
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2205
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2242
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2249
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2274
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2281
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2288
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2295
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2302
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2310
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2317
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2360 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2361
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2368
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2376
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2383
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2390
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2398
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2405
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2454
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2461 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2462
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2633 common/models.py:2818
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2634
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2644
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2648 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2648
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2664 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2665
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2673
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2674
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2782
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2783
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2791
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2792
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2800
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2801
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2808
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2809
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2819
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2824
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2951
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2953 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2957 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2959 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2961 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2964
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2964
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2981 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3655,31 +3689,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2981
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3023
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3042
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3049 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3050
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3057 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3058
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3846,7 +3880,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3890,7 +3924,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -3983,7 +4017,7 @@ msgid "Link to address information (external)"
 msgstr ""
 
 #: company/models.py:484 company/models.py:785 stock/models.py:754
-#: stock/serializers.py:252 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:266 stock/templates/stock/item_base.html:142
 #: templates/js/translated/bom.js:622
 msgid "Base Part"
 msgstr ""
@@ -4044,9 +4078,9 @@ msgstr ""
 
 #: company/models.py:615
 #: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2438 templates/js/translated/company.js:1156
+#: stock/models.py:2441 templates/js/translated/company.js:1156
 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:1519
 msgid "Value"
 msgstr ""
 
@@ -4055,7 +4089,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4079,7 +4113,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4115,29 +4149,29 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
 #: report/templates/report/inventree_slr_report.html:105
 #: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:565
+#: stock/serializers.py:579
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:851 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1336
+#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350
 #: stock/templates/stock/item_base.html:240
 #: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2387
+#: templates/js/translated/stock.js:2423
 msgid "Packaging"
 msgstr ""
 
@@ -4159,7 +4193,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4237,16 +4271,16 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
-#: stock/models.py:808 stock/serializers.py:1086
+#: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
 #: templates/email/overdue_sales_order.html:16
 #: templates/js/translated/company.js:502
 #: templates/js/translated/return_order.js:296
 #: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2923
+#: templates/js/translated/stock.js:2959
 #: templates/js/translated/table_filters.js:804
 msgid "Customer"
 msgstr ""
@@ -4255,7 +4289,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4335,7 +4369,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4358,7 +4392,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4383,7 +4417,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4505,7 +4539,7 @@ msgstr ""
 #: stock/templates/stock/item_base.html:233
 #: templates/js/translated/company.js:1590
 #: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2243
+#: templates/js/translated/stock.js:2279
 msgid "Supplier Part"
 msgstr ""
 
@@ -4604,14 +4638,14 @@ msgstr ""
 #: part/serializers.py:818 part/stocktake.py:223
 #: part/templates/part/category.html:183
 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:773 stock/serializers.py:937
+#: stock/serializers.py:787 stock/serializers.py:951
 #: stock/templates/stock/location.html:170
 #: stock/templates/stock/location.html:184
 #: stock/templates/stock/location.html:196
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730
-#: users/models.py:193
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4664,7 +4698,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4690,7 +4724,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4704,8 +4738,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4836,7 +4870,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4846,16 +4880,16 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:168
 #: templates/js/translated/purchase_order.js:753
 #: templates/js/translated/purchase_order.js:1674
-#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871
+#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
 #: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/stock.js:2941
 msgid "Return Order"
 msgstr ""
 
@@ -4863,184 +4897,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5050,341 +5084,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:386
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2274
+#: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5788,12 +5822,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5802,20 +5836,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:1999
+#: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5840,11 +5874,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5863,12 +5897,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5886,7 +5920,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5894,7 +5928,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5910,7 +5944,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5926,92 +5960,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6025,363 +6059,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
-#: templates/js/translated/stock.js:2736
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
+#: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6389,334 +6423,334 @@ msgstr ""
 #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
 #: templates/js/translated/pricing.js:950
 #: templates/js/translated/purchase_order.js:1732
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:2821
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -6734,7 +6768,7 @@ msgstr ""
 msgid "Number of results recorded against this template"
 msgstr ""
 
-#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:392
+#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406
 msgid "Purchase currency of this stock item"
 msgstr ""
 
@@ -7194,7 +7228,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2179 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -7556,7 +7590,7 @@ msgstr ""
 #: templates/InvenTree/settings/sidebar.html:51
 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2033 templates/navbar.html:31
+#: templates/js/translated/stock.js:2069 templates/navbar.html:31
 msgid "Stock"
 msgstr ""
 
@@ -7602,7 +7636,7 @@ msgstr ""
 #: stock/templates/stock/item_base.html:446
 #: templates/js/translated/company.js:1693
 #: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2245
 msgid "Last Updated"
 msgstr ""
 
@@ -8046,7 +8080,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8217,7 +8251,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8383,111 +8417,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8554,12 +8588,12 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:102
-#: templates/js/translated/stock.js:1485
+#: templates/js/translated/stock.js:1492
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2432
+#: stock/models.py:2435
 msgid "Result"
 msgstr ""
 
@@ -8586,7 +8620,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:168
 #: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110
 msgid "Serial"
 msgstr ""
 
@@ -8670,64 +8704,64 @@ msgstr ""
 
 #: stock/admin.py:256 stock/models.py:886
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2193 users/models.py:113
+#: templates/js/translated/stock.js:2229 users/models.py:113
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8751,7 +8785,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -8768,7 +8802,7 @@ msgstr ""
 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
 msgstr ""
 
-#: stock/models.py:174 templates/js/translated/stock.js:2745
+#: stock/models.py:174 templates/js/translated/stock.js:2781
 #: templates/js/translated/table_filters.js:243
 msgid "External"
 msgstr ""
@@ -8777,7 +8811,7 @@ msgstr ""
 msgid "This is an external stock location"
 msgstr ""
 
-#: stock/models.py:181 templates/js/translated/stock.js:2754
+#: stock/models.py:181 templates/js/translated/stock.js:2790
 #: templates/js/translated/table_filters.js:246
 msgid "Location type"
 msgstr ""
@@ -8794,7 +8828,7 @@ msgstr ""
 msgid "Stock items cannot be located into structural stock locations!"
 msgstr ""
 
-#: stock/models.py:656 stock/serializers.py:276
+#: stock/models.py:656 stock/serializers.py:290
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
@@ -8839,7 +8873,7 @@ msgstr ""
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:786 stock/serializers.py:1337
+#: stock/models.py:786 stock/serializers.py:1351
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
@@ -8851,7 +8885,7 @@ msgstr ""
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:830 stock/serializers.py:1320
+#: stock/models.py:830 stock/serializers.py:1334
 msgid "Batch code for this stock item"
 msgstr ""
 
@@ -8928,7 +8962,7 @@ msgstr ""
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1501 stock/serializers.py:515
+#: stock/models.py:1501 stock/serializers.py:529
 msgid "Serial numbers already exist"
 msgstr ""
 
@@ -8960,7 +8994,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1639 stock/serializers.py:1226
+#: stock/models.py:1639 stock/serializers.py:1240
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -8984,208 +9018,236 @@ msgstr ""
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2399
+#: stock/models.py:2402
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2405
+#: stock/models.py:2408
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2432
+#: stock/models.py:2435
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2439
+#: stock/models.py:2442
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2447
+#: stock/models.py:2450
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2451
+#: stock/models.py:2454
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:97
+#: stock/models.py:2462 templates/js/translated/stock.js:1545
+msgid "Test station"
+msgstr ""
+
+#: stock/models.py:2463
+msgid "The identifier of the test station where the test was performed"
+msgstr ""
+
+#: stock/models.py:2469
+msgid "Started"
+msgstr ""
+
+#: stock/models.py:2470
+msgid "The timestamp of the test start"
+msgstr ""
+
+#: stock/models.py:2476
+msgid "Finished"
+msgstr ""
+
+#: stock/models.py:2477
+msgid "The timestamp of the test finish"
+msgstr ""
+
+#: stock/serializers.py:100
 msgid "Test template for this result"
 msgstr ""
 
-#: stock/serializers.py:116
+#: stock/serializers.py:119
 msgid "Template ID or test name must be provided"
 msgstr ""
 
-#: stock/serializers.py:170
+#: stock/serializers.py:151
+msgid "The test finished time cannot be earlier than the test started time"
+msgstr ""
+
+#: stock/serializers.py:184
 msgid "Serial number is too large"
 msgstr ""
 
-#: stock/serializers.py:268
+#: stock/serializers.py:282
 msgid "Use pack size when adding: the quantity defined is the number of packs"
 msgstr ""
 
-#: stock/serializers.py:388
+#: stock/serializers.py:402
 msgid "Purchase price of this stock item, per unit or pack"
 msgstr ""
 
-#: stock/serializers.py:450
+#: stock/serializers.py:464
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:463
+#: stock/serializers.py:477
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:470
+#: stock/serializers.py:484
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:481 stock/serializers.py:1183 stock/serializers.py:1439
+#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:488
+#: stock/serializers.py:502
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:498
+#: stock/serializers.py:512
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:553
+#: stock/serializers.py:567
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:560
+#: stock/serializers.py:574
 msgid "Quantity to Install"
 msgstr ""
 
-#: stock/serializers.py:561
+#: stock/serializers.py:575
 msgid "Enter the quantity of items to install"
 msgstr ""
 
-#: stock/serializers.py:566 stock/serializers.py:646 stock/serializers.py:742
-#: stock/serializers.py:792
+#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756
+#: stock/serializers.py:806
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:574
+#: stock/serializers.py:588
 msgid "Quantity to install must be at least 1"
 msgstr ""
 
-#: stock/serializers.py:582
+#: stock/serializers.py:596
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:593
+#: stock/serializers.py:607
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:606
+#: stock/serializers.py:620
 msgid "Quantity to install must not exceed available quantity"
 msgstr ""
 
-#: stock/serializers.py:641
+#: stock/serializers.py:655
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:676
+#: stock/serializers.py:690
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:689
+#: stock/serializers.py:703
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:706
+#: stock/serializers.py:720
 msgid "Cannot convert stock item with assigned SupplierPart"
 msgstr ""
 
-#: stock/serializers.py:737
+#: stock/serializers.py:751
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:774
+#: stock/serializers.py:788
 msgid "Select stock items to change status"
 msgstr ""
 
-#: stock/serializers.py:780
+#: stock/serializers.py:794
 msgid "No stock items selected"
 msgstr ""
 
-#: stock/serializers.py:876 stock/serializers.py:939
+#: stock/serializers.py:890 stock/serializers.py:953
 #: stock/templates/stock/location.html:165
 #: stock/templates/stock/location.html:213
 #: stock/templates/stock/location_sidebar.html:5
 msgid "Sublocations"
 msgstr ""
 
-#: stock/serializers.py:1055
+#: stock/serializers.py:1069
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:1059
+#: stock/serializers.py:1073
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:1063
+#: stock/serializers.py:1077
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:1087
+#: stock/serializers.py:1101
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:1093
+#: stock/serializers.py:1107
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:1101
+#: stock/serializers.py:1115
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:1111 stock/serializers.py:1365
+#: stock/serializers.py:1125 stock/serializers.py:1379
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1190
+#: stock/serializers.py:1204
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:1195
+#: stock/serializers.py:1209
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:1196
+#: stock/serializers.py:1210
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:1201
+#: stock/serializers.py:1215
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:1202
+#: stock/serializers.py:1216
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:1212
+#: stock/serializers.py:1226
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1279
+#: stock/serializers.py:1293
 msgid "No Change"
 msgstr ""
 
-#: stock/serializers.py:1308
+#: stock/serializers.py:1322
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1327
+#: stock/serializers.py:1341
 msgid "Stock item status code"
 msgstr ""
 
-#: stock/serializers.py:1355
+#: stock/serializers.py:1369
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -9210,7 +9272,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:283
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286
 msgid "Delete Test Data"
 msgstr ""
 
@@ -9226,15 +9288,15 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:271
+#: stock/templates/stock/item.html:274
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:301 templates/js/translated/stock.js:1662
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698
 msgid "Add Test Result"
 msgstr ""
 
@@ -9257,17 +9319,17 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821
 msgid "Count stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1767
+#: templates/js/translated/stock.js:1803
 msgid "Add stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1776
+#: templates/js/translated/stock.js:1812
 msgid "Remove stock"
 msgstr ""
 
@@ -9276,12 +9338,12 @@ msgid "Serialize stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830
 msgid "Transfer stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1848
+#: templates/js/translated/stock.js:1884
 msgid "Assign to customer"
 msgstr ""
 
@@ -9420,7 +9482,7 @@ msgid "No stocktake performed"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1915
+#: templates/js/translated/stock.js:1951
 msgid "stock item"
 msgstr ""
 
@@ -9525,7 +9587,7 @@ msgid "New Location"
 msgstr ""
 
 #: stock/templates/stock/location.html:287
-#: templates/js/translated/stock.js:2536
+#: templates/js/translated/stock.js:2572
 msgid "stock location"
 msgstr ""
 
@@ -10032,7 +10094,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -10119,7 +10181,7 @@ msgid "Delete Location Type"
 msgstr ""
 
 #: templates/InvenTree/settings/settings_staff_js.html:500
-#: templates/InvenTree/settings/stock.html:36
+#: templates/InvenTree/settings/stock.html:37
 msgid "New Location Type"
 msgstr ""
 
@@ -10176,7 +10238,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:32
+#: templates/InvenTree/settings/stock.html:33
 msgid "Stock Location Types"
 msgstr ""
 
@@ -11449,7 +11511,7 @@ msgstr ""
 #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480
 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674
+#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710
 msgid "Select"
 msgstr ""
 
@@ -11461,7 +11523,7 @@ msgstr ""
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006
+#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042
 msgid "No user information"
 msgstr ""
 
@@ -11522,7 +11584,7 @@ msgstr ""
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1829
+#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865
 msgid "Order stock"
 msgstr ""
 
@@ -11864,15 +11926,15 @@ msgstr ""
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:3075
+#: templates/js/translated/forms.js:3091
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:3075
+#: templates/js/translated/forms.js:3091
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:3087
+#: templates/js/translated/forms.js:3103
 msgid "Select Columns"
 msgstr ""
 
@@ -12349,7 +12411,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2633
+#: templates/js/translated/stock.js:2669
 msgid "Display as list"
 msgstr ""
 
@@ -12361,7 +12423,7 @@ msgstr ""
 msgid "No subcategories found"
 msgstr ""
 
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689
 msgid "Display as tree"
 msgstr ""
 
@@ -12381,12 +12443,12 @@ msgstr ""
 msgid "results"
 msgstr ""
 
-#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1446
+#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1447
-#: templates/js/translated/stock.js:1692
+#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454
+#: templates/js/translated/stock.js:1728
 msgid "Delete test result"
 msgstr ""
 
@@ -12967,7 +13029,7 @@ msgstr ""
 
 #: templates/js/translated/sales_order.js:1623
 #: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1737
+#: templates/js/translated/stock.js:1773
 msgid "Shipped to customer"
 msgstr ""
 
@@ -13209,7 +13271,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13225,7 +13287,7 @@ msgstr ""
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299
 msgid "Select Stock Items"
 msgstr ""
 
@@ -13249,248 +13311,256 @@ msgstr ""
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1447
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1443
+#: templates/js/translated/stock.js:1450
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1466
+#: templates/js/translated/stock.js:1473
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1530
+#: templates/js/translated/stock.js:1537
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1677
+#: templates/js/translated/stock.js:1550
+msgid "Test started"
+msgstr ""
+
+#: templates/js/translated/stock.js:1559
+msgid "Test finished"
+msgstr ""
+
+#: templates/js/translated/stock.js:1713
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1733
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1729
+#: templates/js/translated/stock.js:1765
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1733
+#: templates/js/translated/stock.js:1769
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1741
+#: templates/js/translated/stock.js:1777
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1783
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1839
 msgid "Change stock status"
 msgstr ""
 
-#: templates/js/translated/stock.js:1812
+#: templates/js/translated/stock.js:1848
 msgid "Merge stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1861
+#: templates/js/translated/stock.js:1897
 msgid "Delete stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1952
 msgid "stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:1921
+#: templates/js/translated/stock.js:1957
 msgid "Scan to location"
 msgstr ""
 
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/stock.js:1968
 msgid "Stock Actions"
 msgstr ""
 
-#: templates/js/translated/stock.js:1976
+#: templates/js/translated/stock.js:2012
 msgid "Load installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2090
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:2059
+#: templates/js/translated/stock.js:2095
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:2062
+#: templates/js/translated/stock.js:2098
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:2065
+#: templates/js/translated/stock.js:2101
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:2067
+#: templates/js/translated/stock.js:2103
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2105
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2108
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2110
 msgid "Stock item has been consumed by a build order"
 msgstr ""
 
-#: templates/js/translated/stock.js:2078
+#: templates/js/translated/stock.js:2114
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:2080
+#: templates/js/translated/stock.js:2116
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2121
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2123
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/stock.js:2125
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2093
+#: templates/js/translated/stock.js:2129
 #: templates/js/translated/table_filters.js:350
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:2258
+#: templates/js/translated/stock.js:2294
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:2305
+#: templates/js/translated/stock.js:2341
 msgid "Stock Value"
 msgstr ""
 
-#: templates/js/translated/stock.js:2433
+#: templates/js/translated/stock.js:2469
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2537
+#: templates/js/translated/stock.js:2573
 msgid "stock locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2728
 msgid "Load Sublocations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2810
+#: templates/js/translated/stock.js:2846
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2814
+#: templates/js/translated/stock.js:2850
 msgid "No changes"
 msgstr ""
 
-#: templates/js/translated/stock.js:2826
+#: templates/js/translated/stock.js:2862
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2848
+#: templates/js/translated/stock.js:2884
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2865
+#: templates/js/translated/stock.js:2901
 msgid "Build order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2880
+#: templates/js/translated/stock.js:2916
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2897
+#: templates/js/translated/stock.js:2933
 msgid "Sales Order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2914
+#: templates/js/translated/stock.js:2950
 msgid "Return Order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2969
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2951
+#: templates/js/translated/stock.js:2987
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2969
+#: templates/js/translated/stock.js:3005
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2977
+#: templates/js/translated/stock.js:3013
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:3049
+#: templates/js/translated/stock.js:3085
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139
+#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3161
+#: templates/js/translated/stock.js:3197
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:3182
+#: templates/js/translated/stock.js:3218
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3183
+#: templates/js/translated/stock.js:3219
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:3185
+#: templates/js/translated/stock.js:3221
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3222
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3223
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:3224
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:3201
+#: templates/js/translated/stock.js:3237
 msgid "Select part to install"
 msgstr ""
 
-#: templates/js/translated/stock.js:3264
+#: templates/js/translated/stock.js:3300
 msgid "Select one or more stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:3277
+#: templates/js/translated/stock.js:3313
 msgid "Selected stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3317
 msgid "Change Stock Status"
 msgstr ""
 
@@ -13844,7 +13914,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14081,34 +14151,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index d9276209212a..7dba0dd79ac5 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Spanish\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Ningún valor proporcionado"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "No se pudo convertir {original} a {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Cantidad suministrada es inválida"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Cantidad suministrada es inválida ({exc})"
@@ -59,10 +59,10 @@ msgstr "Seleccionar una fecha"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "El dominio de email proporcionado no está aprobado."
 msgid "Registration is disabled."
 msgstr "El registro ha sido desactivado."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Cantidad proporcionada no válida"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "No se ha proporcionado un número de serie"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Número de serie duplicado"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Rango de grupo inválido: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Rango del grupo {group} supera la cantidad permitida ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Secuencia de grupo inválida: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "No se ha encontrado ningún número de serie"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Los números de serie únicos ({len(serials)}) debe coincidir con la cantidad ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Eliminar etiquetas HTML de este valor"
 
@@ -405,10 +405,10 @@ msgstr "Archivo adjunto"
 msgid "Select file to attach"
 msgstr "Seleccionar archivo para adjuntar"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Seleccionar archivo para adjuntar"
 msgid "Link"
 msgstr "Enlace"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Enlace a URL externa"
@@ -436,10 +436,10 @@ msgstr "Comentario"
 msgid "File comment"
 msgstr "Comentario del archivo"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "No pueden existir nombres duplicados bajo el mismo padre"
 msgid "Invalid choice"
 msgstr "Selección no válida"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Selección no válida"
 msgid "Name"
 msgstr "Nombre"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Error del servidor"
 msgid "An error has been logged by the server."
 msgstr "Un error ha sido registrado por el servidor."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Debe ser un numero valido"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Devuelto"
 msgid "In Progress"
 msgstr "En curso"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Acerca de InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "La construcción debe cancelarse antes de que pueda ser eliminada"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Consumible"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Petición de Ensamblado"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Peticiones de Ensamblado"
 
@@ -1008,17 +1008,21 @@ msgstr "Peticiones de Ensamblado"
 msgid "Invalid choice for parent build"
 msgstr "Opción no válida para la construcción padre"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Referencia de Orden de Ensamblado"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Referencia de Orden de Ensamblado"
 msgid "Reference"
 msgstr "Referencia"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Breve descripción de la fabricación (opcional)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Construcción o Armado Superior"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Construcción de orden a la que se asigna esta versión"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "Construcción de orden a la que se asigna esta versión"
 msgid "Part"
 msgstr "Pieza"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Seleccionar parte a construir o armar"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Referencia de Pedido de Entrega"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Pedido de Entrega a la que este ensamblaje se asigna"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Ubicación de la fuente"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Seleccione la ubicación de donde tomar stock para esta construcción o armado (deje en blanco para tomar desde cualquier ubicación)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Ubicación de destino"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Seleccione la ubicación donde se almacenarán los artículos completados"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Cantidad a crear"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Número de artículos de stock a ensamblar"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Artículos completados"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Número de productos en stock que se han completado"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Estado de la construcción"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Código de estado de la fabricación"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Número de lote"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Número de lote de este producto fabricado"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Fecha de Creación"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Fecha límite de finalización"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Fecha límite para la finalización del ensamblado. El ensamblado estará vencido después de esta fecha."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Fecha de Finalización"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "terminado por"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Emitido por"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "El usuario que emitió esta orden"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr "El usuario que emitió esta orden"
 msgid "Responsible"
 msgstr "Responsable"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Usuario o grupo responsable de esta orden de fabricación"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr "Usuario o grupo responsable de esta orden de fabricación"
 msgid "External Link"
 msgstr "Enlaces Externo"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Prioridad de fabricación"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Prioridad de esta orden de fabricación"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr "Prioridad de esta orden de fabricación"
 msgid "Project Code"
 msgstr "Código de proyecto"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Código del proyecto para esta orden de fabricación"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "La orden de fabricación {build} ha sido completada"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Una orden de fabricación se ha completado"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "No se ha especificado salida de fabricación"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr "Cantidad"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Artículo de stock sobreasignado"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Cantidad asignada debe ser mayor que cero"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "La cantidad debe ser 1 para el stock serializado"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Cantidad de stock a asignar para construir"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Instalar en"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Artículo de stock de destino"
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr "Autoasignar Números de Serie"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr "Aceptar que los artículos de stock no se han asignado completamente a e
 msgid "Required stock has not been fully allocated"
 msgstr "El stock requerido no ha sido completamente asignado"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Acepta incompleto"
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr "El artículo debe estar en stock"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Cantidad disponible ({q}) excedida"
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr "Stock Disponible"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1568 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr "Restringir mostrar 'acerca de'"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Nombre de empresa"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Nombre interno de empresa"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Moneda Predeterminada"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "días"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Códigos de barras"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr "Retraso de entrada"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr "Tiempo de retraso en la lectura de códigos de barras"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr "Soporte para cámaras web"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Permitir escaneo de código de barras a través de webcam en el navegador"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr "Número de días antes de que el precio de la pieza se actualice automáticamente"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Habilitar informes"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Habilitar la generación de informes"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Modo de depuración"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Generar informes en modo de depuración (salida HTML)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Formato de papel"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Formato de papel predeterminado para informes en PDF"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
-msgstr ""
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Delete this Stock Item when stock is depleted"
+msgid "Determines default behavior when a stock item is depleted"
+msgstr "Eliminar este artículo cuando no queden más existencias"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr "Entregar Existencias Caducadas"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr "Patrón para Referencias de Orden de Ensamblado"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr "Patrón requerido para generar el campo de referencia de la Orden de Ensamblado"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Responsable"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+#, fuzzy
+#| msgid "Only salable parts can be assigned to a sales order"
+msgid "A responsible owner must be assigned to each order"
+msgstr "Sólo las piezas entregables pueden ser asignadas a un pedido de entrega"
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr "Patrón para la Referencia de los Pedidos de Entrega"
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr "Patrón requerido para generar el campo de referencia de la Petición de Entrega"
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr "Envío Predeterminado de las Peticiones de Entrega"
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr "Habilitar la creación de envío predeterminado con pedidos de entrega"
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr "Editar Pedidos Completados"
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr "Permitir la edición de pedidos después de que hayan sido enviados o completados"
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr "Patrón para Referencias de Orden de Compra"
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr "Patrón requerido para generar el campo de referencia de la Orden de Compra"
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Habilitar recuperación de contraseña"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr "Permitir a los usuarios recuperar su contraseña al iniciar sesión"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Habilitar registro"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr "Permitir a usuarios registrarse por su cuenta"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Requerir email"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr "Requerir al usuario una dirección de correo electrónico al registrarse"
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "Requerir AFM"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "Requerir a los usuarios el uso de Autenticación de Factor Múltiple"
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Show unvalidated BOMs"
+msgid "Show invalid BOMs"
 msgstr "Mostrar Lista de Materiales (BOMs) no validados"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Mostrar noticias"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr "Mostrar las últimas novedades de InvenTree en la página de inicio"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "Mostrar etiquetas PDF en el navegador, en lugar de descargar como un archivo"
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "Mostrar informes PDF en el navegador, en lugar de descargar como un archivo"
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr "Buscar Pedidos de Entrega"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr "Mostrar pedidos de entrega en la ventana de vista previa de búsqueda"
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr "Excluir Pedidos Inactivos"
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Excluir pedidos inactivos de la ventana de vista previa de búsqueda"
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Formato de Fecha"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Planificación de piezas"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr "Mostrar información de programación de piezas"
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Precio"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr "Precio unitario a la cantidad especificada"
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3696,31 @@ msgstr ""
 msgid "Image"
 msgstr "Imagen"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3887,7 @@ msgid "Contact email address"
 msgstr "Correo electrónico de contacto"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3931,7 @@ msgstr "Moneda predeterminada utilizada para esta empresa"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Empresa"
@@ -4066,7 +4096,7 @@ msgid "Parameter value"
 msgstr "Valor del parámetro"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4120,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "La parte vinculada del fabricante debe hacer referencia a la misma pieza base"
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4156,7 @@ msgid "Supplier part description"
 msgstr "Descripción de la pieza del proveedor"
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4166,11 @@ msgstr "Descripción de la pieza del proveedor"
 msgid "Note"
 msgstr "Nota"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4200,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4278,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4296,7 @@ msgstr "Cliente"
 msgid "Uses default currency"
 msgstr "Usa la moneda predeterminada"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4376,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Ordenes de Compra"
 
@@ -4369,7 +4399,7 @@ msgstr "Nueva Orden de Compra"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Pedidos de Entrega"
 
@@ -4394,7 +4424,7 @@ msgstr "Stock Asignado"
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4652,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Artículos de Stock"
 
@@ -4675,7 +4705,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4731,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4745,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4877,7 @@ msgstr "Precio Total"
 msgid "No matching purchase order found"
 msgstr "No se encontró ninguna orden de compra coincidente"
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4891,7 @@ msgstr "No se encontró ninguna orden de compra coincidente"
 msgid "Purchase Order"
 msgstr "Orden de Compra"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4904,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Enlace a página web externa"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Usuario o grupo responsable de este pedido"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Referencia del pedido"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "Empresa a la que se están encargando los artículos"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr "Referencia del Proveedor"
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "Empresa a la que se venden los artículos"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr "Referencia de Cliente "
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr "Código de referencia del pedido del cliente"
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Fecha de Envío"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr "Referencia de artículo de línea"
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr "Precio por unidad"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5091,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Precio de Compra"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr "Precio de compra por unidad"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr "Una pieza virtual no puede ser asignada a un pedido de entrega"
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr "Sólo las piezas entregables pueden ser asignadas a un pedido de entrega"
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Precio de venta por unidad"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr "El artículo de stock no ha sido asignado"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr "La petición de entrega no coincide con el envío"
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr "El envío no coincide con el pedido de entrega"
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr "Referencia del envío del pedido de entrega"
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr "Moneda del precio de compra"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr "Moneda del precio de venta"
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5829,12 @@ msgstr "Actualizado el precio unitario de {part} a {price}"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "Actualizado el precio unitario de {part} a {price} y la cantidad a {qty}"
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "ID de Pieza"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Nombre de la Pieza"
@@ -5813,20 +5843,20 @@ msgstr "Nombre de la Pieza"
 msgid "Part Description"
 msgstr "Descripción de la Pieza"
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5881,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr "Variante de"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5904,12 @@ msgstr "Usado En"
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5927,7 @@ msgstr ""
 msgid "Category Path"
 msgstr "Ruta de la Categoría"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5935,7 @@ msgstr "Ruta de la Categoría"
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Piezas"
 
@@ -5921,7 +5951,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr "IPN de la Pieza"
 
@@ -5937,92 +5967,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr "Pedidos de Entrega Salientes"
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Categoría"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6066,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Categoría de Pieza"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Categorías de Piezas"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Ubicación predeterminada para piezas de esta categoría"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr "Las piezas no pueden asignarse directamente a una categoría estructural, pero pueden asignarse a categorías hijas."
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr "Palabras clave predeterminadas"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr "Palabras clave por defecto para piezas en esta categoría"
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr "Icono"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr "Icono (opcional)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr "¡No puedes hacer que esta categoría de piezas sea estructural porque algunas piezas ya están asignadas!"
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr "Opción no válida para la pieza principal"
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "IPN duplicado no permitido en la configuración de piezas"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr "¡No se pueden asignar piezas a las categorías de piezas estructurales!"
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Nombre de la pieza"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr "¿Es esta pieza una 'pieza plantilla'?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr "¿Es esta pieza una variante de otra pieza?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr "Palabras clave para mejorar la visibilidad en los resultados de búsqueda de piezas"
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "Categoría de pieza"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr "'Part Number' Interno (IPN)"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr "Revisión de la pieza o número de versión"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Tiempo de expiración (en días) para los artículos de stock de esta pieza"
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr "¿Esta pieza tiene seguimiento de artículos únicos?"
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr "¿Se puede comprar esta pieza a proveedores externos?"
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr "¿Se puede entregar esta pieza a los clientes?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr "Último Inventario"
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr "Entrega múltiple"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr "Moneda utilizada para almacenar en caché los cálculos de precios"
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr "Precio mínimo de la pieza de proveedores externos"
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr "Precio máximo de la pieza de proveedores externos"
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6434,330 @@ msgstr ""
 msgid "Date"
 msgstr "Fecha"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr "Descripción de prueba"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr "Introduce la descripción para esta prueba"
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr "¿Esta prueba requiere un archivo adjunto al agregar un resultado de la prueba?"
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr "Descripción del parámetro"
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr "Pieza Superior"
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr "Seleccionar pieza superior"
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Exceso"
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr "Permitir Variantes"
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7235,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr "Inventario"
 
@@ -8057,7 +8087,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8258,7 @@ msgstr "Plugin"
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8424,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr "Descripción de la plantilla de informe"
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr "Filtros de búsqueda de pedidos de entrega"
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8715,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8792,7 @@ msgstr "Ubicación de Stock"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Ubicaciones de Stock"
 
@@ -10071,7 +10101,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13278,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13921,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14158,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po
index 913b7a621d7a..77677682d2c1 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: 2024-03-15 22:12+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -35,16 +35,16 @@ msgstr ""
 msgid "No value provided"
 msgstr ""
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -60,15 +60,15 @@ msgstr ""
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451
-#: stock/serializers.py:487 stock/serializers.py:645 stock/serializers.py:741
-#: stock/serializers.py:791 stock/serializers.py:1100 stock/serializers.py:1189
-#: stock/serializers.py:1354 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
+#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
+#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203
+#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
 #: templates/js/translated/part.js:1080
@@ -76,7 +76,7 @@ msgstr ""
 #: templates/js/translated/return_order.js:776
 #: templates/js/translated/sales_order.js:1067
 #: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391
+#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427
 msgid "Notes"
 msgstr ""
 
@@ -133,42 +133,42 @@ msgstr ""
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr ""
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr ""
 
@@ -204,131 +204,135 @@ msgstr ""
 msgid "Supplied URL is not a valid image file"
 msgstr ""
 
-#: InvenTree/locales.py:16
+#: InvenTree/locales.py:18
 msgid "Bulgarian"
 msgstr ""
 
-#: InvenTree/locales.py:17
+#: InvenTree/locales.py:19
 msgid "Czech"
 msgstr ""
 
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
 msgid "Danish"
 msgstr ""
 
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
 msgid "German"
 msgstr ""
 
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
 msgid "Greek"
 msgstr ""
 
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
 msgid "English"
 msgstr ""
 
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
 msgid "Spanish"
 msgstr ""
 
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
 msgid "Spanish (Mexican)"
 msgstr ""
 
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
 msgid "Farsi / Persian"
 msgstr ""
 
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
 msgid "Finnish"
 msgstr ""
 
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
 msgid "French"
 msgstr ""
 
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
 msgid "Hebrew"
 msgstr ""
 
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
 msgid "Hindi"
 msgstr ""
 
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
 msgid "Hungarian"
 msgstr ""
 
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
 msgid "Italian"
 msgstr ""
 
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
 msgid "Japanese"
 msgstr ""
 
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
 msgid "Korean"
 msgstr ""
 
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
+msgid "Latvian"
+msgstr ""
+
+#: InvenTree/locales.py:36
 msgid "Dutch"
 msgstr ""
 
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:37
 msgid "Norwegian"
 msgstr ""
 
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:38
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:39
 msgid "Portuguese"
 msgstr ""
 
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:40
 msgid "Portuguese (Brazilian)"
 msgstr ""
 
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
 msgid "Russian"
 msgstr ""
 
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
 msgid "Slovak"
 msgstr ""
 
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
 msgid "Slovenian"
 msgstr ""
 
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
 msgid "Serbian"
 msgstr ""
 
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
 msgid "Swedish"
 msgstr ""
 
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
 msgid "Thai"
 msgstr ""
 
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
 msgid "Turkish"
 msgstr ""
 
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
 msgid "Vietnamese"
 msgstr ""
 
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
 msgid "Chinese (Simplified)"
 msgstr ""
 
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
 msgid "Chinese (Traditional)"
 msgstr ""
 
@@ -392,7 +396,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:559 stock/models.py:2446
+#: InvenTree/models.py:559 stock/models.py:2449
 #: templates/js/translated/attachment.js:119
 #: templates/js/translated/attachment.js:326
 msgid "Attachment"
@@ -402,10 +406,10 @@ msgstr ""
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:568 common/models.py:2955 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -419,7 +423,7 @@ msgstr ""
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr ""
@@ -433,13 +437,13 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2431
-#: common/models.py:2432 common/models.py:2656 common/models.py:2657
-#: common/models.py:2902 common/models.py:2903 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3000 users/models.py:100
+#: templates/js/translated/stock.js:3036 users/models.py:100
 msgid "User"
 msgstr ""
 
@@ -480,10 +484,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:894 common/models.py:2643 common/models.py:3041
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -496,21 +500,21 @@ msgstr ""
 #: templates/js/translated/company.js:1155
 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -532,8 +536,8 @@ msgstr ""
 #: templates/js/translated/return_order.js:314
 #: templates/js/translated/sales_order.js:802
 #: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021
-#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057
+#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831
 msgid "Description"
 msgstr ""
 
@@ -546,7 +550,7 @@ msgid "parent"
 msgstr ""
 
 #: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2721
+#: templates/js/translated/stock.js:2757
 msgid "Path"
 msgstr ""
 
@@ -582,12 +586,12 @@ msgstr ""
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr ""
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -597,85 +601,85 @@ msgstr ""
 msgid "Select currency from available options"
 msgstr ""
 
-#: InvenTree/serializers.py:436
+#: InvenTree/serializers.py:441
 msgid "You do not have permission to change this user role."
 msgstr ""
 
-#: InvenTree/serializers.py:448
+#: InvenTree/serializers.py:453
 msgid "Only superusers can create new users"
 msgstr ""
 
-#: InvenTree/serializers.py:467
+#: InvenTree/serializers.py:472
 msgid "Your account has been created."
 msgstr ""
 
-#: InvenTree/serializers.py:469
+#: InvenTree/serializers.py:474
 msgid "Please use the password reset function to login"
 msgstr ""
 
-#: InvenTree/serializers.py:476
+#: InvenTree/serializers.py:481
 msgid "Welcome to InvenTree"
 msgstr ""
 
-#: InvenTree/serializers.py:537
+#: InvenTree/serializers.py:542
 msgid "Filename"
 msgstr ""
 
-#: InvenTree/serializers.py:571
+#: InvenTree/serializers.py:576
 msgid "Invalid value"
 msgstr ""
 
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:596
 msgid "Data File"
 msgstr ""
 
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:597
 msgid "Select data file for upload"
 msgstr ""
 
-#: InvenTree/serializers.py:609
+#: InvenTree/serializers.py:614
 msgid "Unsupported file type"
 msgstr ""
 
-#: InvenTree/serializers.py:615
+#: InvenTree/serializers.py:620
 msgid "File is too large"
 msgstr ""
 
-#: InvenTree/serializers.py:636
+#: InvenTree/serializers.py:641
 msgid "No columns found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:639
+#: InvenTree/serializers.py:644
 msgid "No data rows found in file"
 msgstr ""
 
-#: InvenTree/serializers.py:752
+#: InvenTree/serializers.py:757
 msgid "No data rows provided"
 msgstr ""
 
-#: InvenTree/serializers.py:755
+#: InvenTree/serializers.py:760
 msgid "No data columns supplied"
 msgstr ""
 
-#: InvenTree/serializers.py:822
+#: InvenTree/serializers.py:827
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr ""
 
-#: InvenTree/serializers.py:831
+#: InvenTree/serializers.py:836
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr ""
 
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:859
 msgid "Remote Image"
 msgstr ""
 
-#: InvenTree/serializers.py:855
+#: InvenTree/serializers.py:860
 msgid "URL of remote image file"
 msgstr ""
 
-#: InvenTree/serializers.py:873
+#: InvenTree/serializers.py:878
 msgid "Downloading images from remote URL is not enabled"
 msgstr ""
 
@@ -728,7 +732,7 @@ msgstr ""
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -819,7 +823,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855
 msgid "Merged stock items"
 msgstr ""
 
@@ -839,7 +843,7 @@ msgstr ""
 msgid "Build order output rejected"
 msgstr ""
 
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761
 msgid "Consumed by build order"
 msgstr ""
 
@@ -939,14 +943,14 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -986,7 +990,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:105
 #: templates/email/build_order_completed.html:16
 #: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892
 msgid "Build Order"
 msgstr ""
 
@@ -997,7 +1001,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1005,17 +1009,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1029,27 +1037,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1060,7 +1068,7 @@ msgstr ""
 #: report/templates/report/inventree_return_order_report_base.html:24
 #: report/templates/report/inventree_slr_report.html:102
 #: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:253 stock/serializers.py:675
+#: stock/serializers.py:267 stock/serializers.py:689
 #: templates/InvenTree/search.html:82
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
@@ -1087,113 +1095,113 @@ msgstr ""
 #: templates/js/translated/sales_order.js:1598
 #: templates/js/translated/sales_order.js:1796
 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960
-#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054
-#: templates/js/translated/stock.js:3200
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996
+#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090
+#: templates/js/translated/stock.js:3236
 msgid "Part"
 msgstr ""
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
-#: stock/models.py:826 stock/serializers.py:1319
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
+#: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1204,11 +1212,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1220,16 +1228,16 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1239,57 +1247,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
-#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:458
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
+#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2453
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1299,7 +1307,7 @@ msgstr ""
 #: report/templates/report/inventree_so_report_base.html:29
 #: report/templates/report/inventree_test_report_base.html:90
 #: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:449
+#: stock/admin.py:160 stock/serializers.py:463
 #: stock/templates/stock/item_base.html:287
 #: stock/templates/stock/item_base.html:295
 #: stock/templates/stock/item_base.html:342
@@ -1326,43 +1334,43 @@ msgstr ""
 #: templates/js/translated/sales_order.js:1698
 #: templates/js/translated/sales_order.js:1824
 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985
-#: templates/js/translated/stock.js:3068
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021
+#: templates/js/translated/stock.js:3104
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:552 stock/serializers.py:1038
-#: stock/serializers.py:1150 stock/templates/stock/item_base.html:10
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
+#: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
 #: templates/js/translated/build.js:1742
@@ -1373,23 +1381,23 @@ msgstr ""
 #: templates/js/translated/sales_order.js:1605
 #: templates/js/translated/sales_order.js:1692
 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2941
+#: templates/js/translated/stock.js:2977
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1426,8 +1434,8 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
-#: stock/serializers.py:469 templates/js/translated/purchase_order.js:1153
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
+#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
 msgstr ""
@@ -1444,7 +1452,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1452,10 +1460,10 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
-#: stock/serializers.py:480 stock/serializers.py:640 stock/serializers.py:736
-#: stock/serializers.py:1182 stock/serializers.py:1438
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
+#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
+#: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
 #: templates/js/translated/barcode.js:547
 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1467,8 +1475,8 @@ msgstr ""
 #: templates/js/translated/sales_order.js:1627
 #: templates/js/translated/sales_order.js:1706
 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164
-#: templates/js/translated/stock.js:2835
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2871
 msgid "Location"
 msgstr ""
 
@@ -1493,17 +1501,17 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
-#: stock/serializers.py:787 stock/serializers.py:1326
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
+#: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
 #: templates/js/translated/purchase_order.js:1308
 #: templates/js/translated/purchase_order.js:1723
 #: templates/js/translated/return_order.js:331
 #: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959
-#: templates/js/translated/stock.js:3084
+#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995
+#: templates/js/translated/stock.js:3120
 msgid "Status"
 msgstr ""
 
@@ -1567,7 +1575,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1603,11 +1611,11 @@ msgstr ""
 msgid "bom_item.part must point to the same part as the build order"
 msgstr ""
 
-#: build/serializers.py:817 stock/serializers.py:1051
+#: build/serializers.py:817 stock/serializers.py:1065
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1620,7 +1628,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1660,8 +1668,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1690,15 +1698,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1815,8 +1823,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1853,8 +1861,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1864,7 +1872,7 @@ msgstr ""
 #: templates/js/translated/pricing.js:929
 #: templates/js/translated/sales_order.js:769
 #: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2888
+#: templates/js/translated/stock.js:2924
 msgid "Sales Order"
 msgstr ""
 
@@ -1904,7 +1912,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -1922,8 +1930,8 @@ msgstr ""
 #: templates/js/translated/build.js:1377
 #: templates/js/translated/model_renderers.js:235
 #: templates/js/translated/purchase_order.js:1274
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:3127
 #: templates/js/translated/table_filters.js:313
 #: templates/js/translated/table_filters.js:404
 msgid "Batch"
@@ -2118,1534 +2126,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:96
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
+#: common/models.py:2066
+msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
+#: common/models.py:2067
+msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2023 common/models.py:2423
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2064
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2066
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2073
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2090
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2096
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2182
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2190
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2198
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2205
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2242
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2249
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2274
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2281
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2288
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2295
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2302
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2310
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2317
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2360 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2361
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2368
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2376
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2383
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2390
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2398
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2405
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2454
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2461 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2462
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2633 common/models.py:2818
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2634
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2644
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2648 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2648
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2664 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2665
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2673
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2674
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2782
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2783
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2791
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2792
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2800
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2801
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2808
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2809
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2819
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2824
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2951
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2953 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2957 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2959 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2961 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2964
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2964
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2981 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3655,31 +3689,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2981
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3023
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3042
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3049 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3050
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3057 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3058
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3846,7 +3880,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3890,7 +3924,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -3983,7 +4017,7 @@ msgid "Link to address information (external)"
 msgstr ""
 
 #: company/models.py:484 company/models.py:785 stock/models.py:754
-#: stock/serializers.py:252 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:266 stock/templates/stock/item_base.html:142
 #: templates/js/translated/bom.js:622
 msgid "Base Part"
 msgstr ""
@@ -4044,9 +4078,9 @@ msgstr ""
 
 #: company/models.py:615
 #: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2438 templates/js/translated/company.js:1156
+#: stock/models.py:2441 templates/js/translated/company.js:1156
 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:1519
 msgid "Value"
 msgstr ""
 
@@ -4055,7 +4089,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4079,7 +4113,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4115,29 +4149,29 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
 #: report/templates/report/inventree_slr_report.html:105
 #: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:565
+#: stock/serializers.py:579
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:851 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1336
+#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350
 #: stock/templates/stock/item_base.html:240
 #: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2387
+#: templates/js/translated/stock.js:2423
 msgid "Packaging"
 msgstr ""
 
@@ -4159,7 +4193,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4237,16 +4271,16 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
-#: stock/models.py:808 stock/serializers.py:1086
+#: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
 #: templates/email/overdue_sales_order.html:16
 #: templates/js/translated/company.js:502
 #: templates/js/translated/return_order.js:296
 #: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2923
+#: templates/js/translated/stock.js:2959
 #: templates/js/translated/table_filters.js:804
 msgid "Customer"
 msgstr ""
@@ -4255,7 +4289,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4335,7 +4369,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4358,7 +4392,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4383,7 +4417,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4505,7 +4539,7 @@ msgstr ""
 #: stock/templates/stock/item_base.html:233
 #: templates/js/translated/company.js:1590
 #: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2243
+#: templates/js/translated/stock.js:2279
 msgid "Supplier Part"
 msgstr ""
 
@@ -4604,14 +4638,14 @@ msgstr ""
 #: part/serializers.py:818 part/stocktake.py:223
 #: part/templates/part/category.html:183
 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:773 stock/serializers.py:937
+#: stock/serializers.py:787 stock/serializers.py:951
 #: stock/templates/stock/location.html:170
 #: stock/templates/stock/location.html:184
 #: stock/templates/stock/location.html:196
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730
-#: users/models.py:193
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4664,7 +4698,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4690,7 +4724,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4704,8 +4738,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4836,7 +4870,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4846,16 +4880,16 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:168
 #: templates/js/translated/purchase_order.js:753
 #: templates/js/translated/purchase_order.js:1674
-#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871
+#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
 #: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/stock.js:2941
 msgid "Return Order"
 msgstr ""
 
@@ -4863,184 +4897,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5050,341 +5084,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:386
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2274
+#: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5788,12 +5822,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5802,20 +5836,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:1999
+#: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5840,11 +5874,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5863,12 +5897,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5886,7 +5920,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5894,7 +5928,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5910,7 +5944,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5926,92 +5960,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6025,363 +6059,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
-#: templates/js/translated/stock.js:2736
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
+#: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6389,334 +6423,334 @@ msgstr ""
 #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
 #: templates/js/translated/pricing.js:950
 #: templates/js/translated/purchase_order.js:1732
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:2821
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -6734,7 +6768,7 @@ msgstr ""
 msgid "Number of results recorded against this template"
 msgstr ""
 
-#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:392
+#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406
 msgid "Purchase currency of this stock item"
 msgstr ""
 
@@ -7194,7 +7228,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2179 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -7556,7 +7590,7 @@ msgstr ""
 #: templates/InvenTree/settings/sidebar.html:51
 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2033 templates/navbar.html:31
+#: templates/js/translated/stock.js:2069 templates/navbar.html:31
 msgid "Stock"
 msgstr ""
 
@@ -7602,7 +7636,7 @@ msgstr ""
 #: stock/templates/stock/item_base.html:446
 #: templates/js/translated/company.js:1693
 #: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2245
 msgid "Last Updated"
 msgstr ""
 
@@ -8046,7 +8080,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8217,7 +8251,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8383,111 +8417,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8554,12 +8588,12 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:102
-#: templates/js/translated/stock.js:1485
+#: templates/js/translated/stock.js:1492
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2432
+#: stock/models.py:2435
 msgid "Result"
 msgstr ""
 
@@ -8586,7 +8620,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:168
 #: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110
 msgid "Serial"
 msgstr ""
 
@@ -8670,64 +8704,64 @@ msgstr ""
 
 #: stock/admin.py:256 stock/models.py:886
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2193 users/models.py:113
+#: templates/js/translated/stock.js:2229 users/models.py:113
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8751,7 +8785,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -8768,7 +8802,7 @@ msgstr ""
 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
 msgstr ""
 
-#: stock/models.py:174 templates/js/translated/stock.js:2745
+#: stock/models.py:174 templates/js/translated/stock.js:2781
 #: templates/js/translated/table_filters.js:243
 msgid "External"
 msgstr ""
@@ -8777,7 +8811,7 @@ msgstr ""
 msgid "This is an external stock location"
 msgstr ""
 
-#: stock/models.py:181 templates/js/translated/stock.js:2754
+#: stock/models.py:181 templates/js/translated/stock.js:2790
 #: templates/js/translated/table_filters.js:246
 msgid "Location type"
 msgstr ""
@@ -8794,7 +8828,7 @@ msgstr ""
 msgid "Stock items cannot be located into structural stock locations!"
 msgstr ""
 
-#: stock/models.py:656 stock/serializers.py:276
+#: stock/models.py:656 stock/serializers.py:290
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
@@ -8839,7 +8873,7 @@ msgstr ""
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:786 stock/serializers.py:1337
+#: stock/models.py:786 stock/serializers.py:1351
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
@@ -8851,7 +8885,7 @@ msgstr ""
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:830 stock/serializers.py:1320
+#: stock/models.py:830 stock/serializers.py:1334
 msgid "Batch code for this stock item"
 msgstr ""
 
@@ -8928,7 +8962,7 @@ msgstr ""
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1501 stock/serializers.py:515
+#: stock/models.py:1501 stock/serializers.py:529
 msgid "Serial numbers already exist"
 msgstr ""
 
@@ -8960,7 +8994,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1639 stock/serializers.py:1226
+#: stock/models.py:1639 stock/serializers.py:1240
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -8984,208 +9018,236 @@ msgstr ""
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2399
+#: stock/models.py:2402
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2405
+#: stock/models.py:2408
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2432
+#: stock/models.py:2435
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2439
+#: stock/models.py:2442
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2447
+#: stock/models.py:2450
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2451
+#: stock/models.py:2454
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:97
+#: stock/models.py:2462 templates/js/translated/stock.js:1545
+msgid "Test station"
+msgstr ""
+
+#: stock/models.py:2463
+msgid "The identifier of the test station where the test was performed"
+msgstr ""
+
+#: stock/models.py:2469
+msgid "Started"
+msgstr ""
+
+#: stock/models.py:2470
+msgid "The timestamp of the test start"
+msgstr ""
+
+#: stock/models.py:2476
+msgid "Finished"
+msgstr ""
+
+#: stock/models.py:2477
+msgid "The timestamp of the test finish"
+msgstr ""
+
+#: stock/serializers.py:100
 msgid "Test template for this result"
 msgstr ""
 
-#: stock/serializers.py:116
+#: stock/serializers.py:119
 msgid "Template ID or test name must be provided"
 msgstr ""
 
-#: stock/serializers.py:170
+#: stock/serializers.py:151
+msgid "The test finished time cannot be earlier than the test started time"
+msgstr ""
+
+#: stock/serializers.py:184
 msgid "Serial number is too large"
 msgstr ""
 
-#: stock/serializers.py:268
+#: stock/serializers.py:282
 msgid "Use pack size when adding: the quantity defined is the number of packs"
 msgstr ""
 
-#: stock/serializers.py:388
+#: stock/serializers.py:402
 msgid "Purchase price of this stock item, per unit or pack"
 msgstr ""
 
-#: stock/serializers.py:450
+#: stock/serializers.py:464
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:463
+#: stock/serializers.py:477
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:470
+#: stock/serializers.py:484
 msgid "Enter serial numbers for new items"
 msgstr ""
 
-#: stock/serializers.py:481 stock/serializers.py:1183 stock/serializers.py:1439
+#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453
 msgid "Destination stock location"
 msgstr ""
 
-#: stock/serializers.py:488
+#: stock/serializers.py:502
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:498
+#: stock/serializers.py:512
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:553
+#: stock/serializers.py:567
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:560
+#: stock/serializers.py:574
 msgid "Quantity to Install"
 msgstr ""
 
-#: stock/serializers.py:561
+#: stock/serializers.py:575
 msgid "Enter the quantity of items to install"
 msgstr ""
 
-#: stock/serializers.py:566 stock/serializers.py:646 stock/serializers.py:742
-#: stock/serializers.py:792
+#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756
+#: stock/serializers.py:806
 msgid "Add transaction note (optional)"
 msgstr ""
 
-#: stock/serializers.py:574
+#: stock/serializers.py:588
 msgid "Quantity to install must be at least 1"
 msgstr ""
 
-#: stock/serializers.py:582
+#: stock/serializers.py:596
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:593
+#: stock/serializers.py:607
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:606
+#: stock/serializers.py:620
 msgid "Quantity to install must not exceed available quantity"
 msgstr ""
 
-#: stock/serializers.py:641
+#: stock/serializers.py:655
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:676
+#: stock/serializers.py:690
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:689
+#: stock/serializers.py:703
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:706
+#: stock/serializers.py:720
 msgid "Cannot convert stock item with assigned SupplierPart"
 msgstr ""
 
-#: stock/serializers.py:737
+#: stock/serializers.py:751
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:774
+#: stock/serializers.py:788
 msgid "Select stock items to change status"
 msgstr ""
 
-#: stock/serializers.py:780
+#: stock/serializers.py:794
 msgid "No stock items selected"
 msgstr ""
 
-#: stock/serializers.py:876 stock/serializers.py:939
+#: stock/serializers.py:890 stock/serializers.py:953
 #: stock/templates/stock/location.html:165
 #: stock/templates/stock/location.html:213
 #: stock/templates/stock/location_sidebar.html:5
 msgid "Sublocations"
 msgstr ""
 
-#: stock/serializers.py:1055
+#: stock/serializers.py:1069
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:1059
+#: stock/serializers.py:1073
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:1063
+#: stock/serializers.py:1077
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:1087
+#: stock/serializers.py:1101
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:1093
+#: stock/serializers.py:1107
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:1101
+#: stock/serializers.py:1115
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:1111 stock/serializers.py:1365
+#: stock/serializers.py:1125 stock/serializers.py:1379
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1190
+#: stock/serializers.py:1204
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:1195
+#: stock/serializers.py:1209
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:1196
+#: stock/serializers.py:1210
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:1201
+#: stock/serializers.py:1215
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:1202
+#: stock/serializers.py:1216
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:1212
+#: stock/serializers.py:1226
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1279
+#: stock/serializers.py:1293
 msgid "No Change"
 msgstr ""
 
-#: stock/serializers.py:1308
+#: stock/serializers.py:1322
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1327
+#: stock/serializers.py:1341
 msgid "Stock item status code"
 msgstr ""
 
-#: stock/serializers.py:1355
+#: stock/serializers.py:1369
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -9210,7 +9272,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:283
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286
 msgid "Delete Test Data"
 msgstr ""
 
@@ -9226,15 +9288,15 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:271
+#: stock/templates/stock/item.html:274
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:301 templates/js/translated/stock.js:1662
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698
 msgid "Add Test Result"
 msgstr ""
 
@@ -9257,17 +9319,17 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821
 msgid "Count stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1767
+#: templates/js/translated/stock.js:1803
 msgid "Add stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1776
+#: templates/js/translated/stock.js:1812
 msgid "Remove stock"
 msgstr ""
 
@@ -9276,12 +9338,12 @@ msgid "Serialize stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830
 msgid "Transfer stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1848
+#: templates/js/translated/stock.js:1884
 msgid "Assign to customer"
 msgstr ""
 
@@ -9420,7 +9482,7 @@ msgid "No stocktake performed"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1915
+#: templates/js/translated/stock.js:1951
 msgid "stock item"
 msgstr ""
 
@@ -9525,7 +9587,7 @@ msgid "New Location"
 msgstr ""
 
 #: stock/templates/stock/location.html:287
-#: templates/js/translated/stock.js:2536
+#: templates/js/translated/stock.js:2572
 msgid "stock location"
 msgstr ""
 
@@ -10032,7 +10094,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -10119,7 +10181,7 @@ msgid "Delete Location Type"
 msgstr ""
 
 #: templates/InvenTree/settings/settings_staff_js.html:500
-#: templates/InvenTree/settings/stock.html:36
+#: templates/InvenTree/settings/stock.html:37
 msgid "New Location Type"
 msgstr ""
 
@@ -10176,7 +10238,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:32
+#: templates/InvenTree/settings/stock.html:33
 msgid "Stock Location Types"
 msgstr ""
 
@@ -11449,7 +11511,7 @@ msgstr ""
 #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480
 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674
+#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710
 msgid "Select"
 msgstr ""
 
@@ -11461,7 +11523,7 @@ msgstr ""
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006
+#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042
 msgid "No user information"
 msgstr ""
 
@@ -11522,7 +11584,7 @@ msgstr ""
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1829
+#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865
 msgid "Order stock"
 msgstr ""
 
@@ -11864,15 +11926,15 @@ msgstr ""
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:3075
+#: templates/js/translated/forms.js:3091
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:3075
+#: templates/js/translated/forms.js:3091
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:3087
+#: templates/js/translated/forms.js:3103
 msgid "Select Columns"
 msgstr ""
 
@@ -12349,7 +12411,7 @@ msgid "No category"
 msgstr ""
 
 #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2633
+#: templates/js/translated/stock.js:2669
 msgid "Display as list"
 msgstr ""
 
@@ -12361,7 +12423,7 @@ msgstr ""
 msgid "No subcategories found"
 msgstr ""
 
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689
 msgid "Display as tree"
 msgstr ""
 
@@ -12381,12 +12443,12 @@ msgstr ""
 msgid "results"
 msgstr ""
 
-#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1446
+#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1447
-#: templates/js/translated/stock.js:1692
+#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454
+#: templates/js/translated/stock.js:1728
 msgid "Delete test result"
 msgstr ""
 
@@ -12967,7 +13029,7 @@ msgstr ""
 
 #: templates/js/translated/sales_order.js:1623
 #: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1737
+#: templates/js/translated/stock.js:1773
 msgid "Shipped to customer"
 msgstr ""
 
@@ -13209,7 +13271,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13225,7 +13287,7 @@ msgstr ""
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299
 msgid "Select Stock Items"
 msgstr ""
 
@@ -13249,248 +13311,256 @@ msgstr ""
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1447
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1443
+#: templates/js/translated/stock.js:1450
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1466
+#: templates/js/translated/stock.js:1473
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1530
+#: templates/js/translated/stock.js:1537
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1677
+#: templates/js/translated/stock.js:1550
+msgid "Test started"
+msgstr ""
+
+#: templates/js/translated/stock.js:1559
+msgid "Test finished"
+msgstr ""
+
+#: templates/js/translated/stock.js:1713
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1733
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1729
+#: templates/js/translated/stock.js:1765
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1733
+#: templates/js/translated/stock.js:1769
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1741
+#: templates/js/translated/stock.js:1777
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1783
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1839
 msgid "Change stock status"
 msgstr ""
 
-#: templates/js/translated/stock.js:1812
+#: templates/js/translated/stock.js:1848
 msgid "Merge stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1861
+#: templates/js/translated/stock.js:1897
 msgid "Delete stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1952
 msgid "stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:1921
+#: templates/js/translated/stock.js:1957
 msgid "Scan to location"
 msgstr ""
 
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/stock.js:1968
 msgid "Stock Actions"
 msgstr ""
 
-#: templates/js/translated/stock.js:1976
+#: templates/js/translated/stock.js:2012
 msgid "Load installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2090
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:2059
+#: templates/js/translated/stock.js:2095
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:2062
+#: templates/js/translated/stock.js:2098
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:2065
+#: templates/js/translated/stock.js:2101
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:2067
+#: templates/js/translated/stock.js:2103
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2105
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2108
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2110
 msgid "Stock item has been consumed by a build order"
 msgstr ""
 
-#: templates/js/translated/stock.js:2078
+#: templates/js/translated/stock.js:2114
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:2080
+#: templates/js/translated/stock.js:2116
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2121
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2123
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/stock.js:2125
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2093
+#: templates/js/translated/stock.js:2129
 #: templates/js/translated/table_filters.js:350
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:2258
+#: templates/js/translated/stock.js:2294
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:2305
+#: templates/js/translated/stock.js:2341
 msgid "Stock Value"
 msgstr ""
 
-#: templates/js/translated/stock.js:2433
+#: templates/js/translated/stock.js:2469
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2537
+#: templates/js/translated/stock.js:2573
 msgid "stock locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2728
 msgid "Load Sublocations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2810
+#: templates/js/translated/stock.js:2846
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2814
+#: templates/js/translated/stock.js:2850
 msgid "No changes"
 msgstr ""
 
-#: templates/js/translated/stock.js:2826
+#: templates/js/translated/stock.js:2862
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2848
+#: templates/js/translated/stock.js:2884
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2865
+#: templates/js/translated/stock.js:2901
 msgid "Build order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2880
+#: templates/js/translated/stock.js:2916
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2897
+#: templates/js/translated/stock.js:2933
 msgid "Sales Order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2914
+#: templates/js/translated/stock.js:2950
 msgid "Return Order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2969
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2951
+#: templates/js/translated/stock.js:2987
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2969
+#: templates/js/translated/stock.js:3005
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2977
+#: templates/js/translated/stock.js:3013
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:3049
+#: templates/js/translated/stock.js:3085
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139
+#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3161
+#: templates/js/translated/stock.js:3197
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:3182
+#: templates/js/translated/stock.js:3218
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3183
+#: templates/js/translated/stock.js:3219
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:3185
+#: templates/js/translated/stock.js:3221
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3222
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3223
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:3224
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:3201
+#: templates/js/translated/stock.js:3237
 msgid "Select part to install"
 msgstr ""
 
-#: templates/js/translated/stock.js:3264
+#: templates/js/translated/stock.js:3300
 msgid "Select one or more stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:3277
+#: templates/js/translated/stock.js:3313
 msgid "Selected stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3317
 msgid "Change Stock Status"
 msgstr ""
 
@@ -13844,7 +13914,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14081,34 +14151,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po
index 5cd9d6dc8ebf..a3c687f17eae 100644
--- a/InvenTree/locale/fa/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fa/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:52\n"
 "Last-Translator: \n"
 "Language-Team: Persian\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "مقداری افزوده نشده"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "تعداد افزوده شده اشتباه است"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -59,10 +59,10 @@ msgstr "تاریخ را وارد کنید"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "دامنه ایمیل ارائه شده تایید نشده است."
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr ""
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr ""
 
@@ -405,10 +405,10 @@ msgstr ""
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr ""
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr ""
@@ -436,10 +436,10 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr ""
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr ""
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr ""
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1008,17 +1008,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr ""
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "مرجع سفارش فروش"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "منبع محل"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "مقصد"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4869,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8250,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/fi/LC_MESSAGES/django.po b/InvenTree/locale/fi/LC_MESSAGES/django.po
index 3e6069f40357..a3b93807fe4e 100644
--- a/InvenTree/locale/fi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fi/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Finnish\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Arvoa ei annettu"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -59,10 +59,10 @@ msgstr "Anna päivämäärä"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Annetun sähköpostiosoitteen verkkotunnusta ei hyväksytä."
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Annettu määrä on virheellinen"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Tyhjä sarjanumero"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Duplikaatti sarjanumero"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Sarjanumeroita ei löytynyt"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr ""
 
@@ -405,10 +405,10 @@ msgstr "Liite"
 msgid "Select file to attach"
 msgstr "Valitse liitettävä tiedosto"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Valitse liitettävä tiedosto"
 msgid "Link"
 msgstr "Linkki"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Linkki ulkoiseen URLiin"
@@ -436,10 +436,10 @@ msgstr "Kommentti"
 msgid "File comment"
 msgstr "Tiedoston kommentti"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr "Virheellinen valinta"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Virheellinen valinta"
 msgid "Name"
 msgstr "Nimi"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Palvelinvirhe"
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Täytyy olla kelvollinen luku"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Palautettu"
 msgid "In Progress"
 msgstr "Kesken"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Tietoja InvenTree:stä"
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1008,17 +1008,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr "Osa"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr "Ulkoinen linkki"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr "Määrä"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr "Varastotuote"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Ei ryhmää"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Verkkotunnus ei saa olla tyhjä."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Virheellinen verkkotunnus: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Uudelleenkäynnistys vaaditaan"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Yrityksen nimi"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Yrityksen sisäinen nimi"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Oletusvaluutta"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "päivää"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Automaattinen varmuuskopionti"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Ota käyttöön tietokannan ja mediatiedostojen automaattinen varmuuskopiointi"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Automaattisen varmuuskopioinnin aikaväli"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Viivakoodituki"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Komponentti"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Ostettavissa"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Seurattavissa"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Sisäiset hinnat"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr "Sisäisen hinnan ohitus"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Sivun koko"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "Täytä sarjanumerot automaattisesti"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Salli salasananpalautus"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Salli rekisteröinti"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "Salli SSO"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "Salli SSO kirjautumissivuilla"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr "Salli SSO rekisteröinti"
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Sähköposti vaaditaan"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "Sähköpostiosoite kahdesti"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Salasana kahdesti"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Sallitut verkkotunnukset"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "Pakota MFA"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Näytä uutiset"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr "Näytä uutiset kotisivulla"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Hinta"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Aktiivinen"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Salaisuus"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr "Isäntä"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr "Otsikko"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr "Julkaistu"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "Julkaisija"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr "Yhteenveto"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr "Kuva"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr "Kuvatiedosto"
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Yritys"
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr "Muistiinpano"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr "Asiakas"
 msgid "Uses default currency"
 msgstr "Käyttää oletusvaluuttaa"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr "Korkeus [mm]"
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Suodattimet"
 
@@ -4847,7 +4869,7 @@ msgstr "Hinta yhteensä"
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr "Tilauksen valuutta"
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Tilauksen viite"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr "Asiakkaan viite "
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr "Vastaanotettu"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "Seurantakoodi"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr "Laskunumero"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Viivakoodi"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Avainsanat"
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Kategoria"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr "Oletus avainsanat"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr "Kuvake"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr "Kuvake (valinnainen)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr "Päivämäärä"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr "Muut merkinnät"
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr "Raportti"
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8250,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Poista"
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr "Näytä ilmoitukset"
 msgid "New Notifications"
 msgstr "Uudet ilmoitukset"
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Ryhmä"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Näytä"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Oikeus tarkastella kohteita"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Oikeus lisätä kohteita"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Muuta"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Oikeus muokata kohteita"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Oikeus poistaa kohteita"
-
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index a08418ce8ee3..7a5a4b6637d6 100644
--- a/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-20 12:27\n"
 "Last-Translator: \n"
 "Language-Team: French\n"
@@ -34,16 +34,16 @@ msgstr "Unité fournie invalide ({unit})"
 msgid "No value provided"
 msgstr "Pas de valeur renseignée"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Impossible de convertir {original} en {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Quantité fournie invalide"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Quantité fournie invalide ({exc})"
@@ -59,10 +59,10 @@ msgstr "Entrer la date"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Le domaine e-mail fourni n'est pas approuvé."
 msgid "Registration is disabled."
 msgstr "L'enregistrement est désactivé."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Quantité fournie invalide"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Chaîne de numéro de série vide"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Numéro de série en doublon"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Plage de groupe non valide : {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "La plage de groupe {group} dépasse la quantité autorisée ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Séquence de groupe invalide : {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Aucun numéro de série trouvé"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Le nombre de numéros de série uniques ({len(serials)}) doit correspondre à la quantité ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Retirer les balises HTML de cette valeur"
 
@@ -405,10 +405,10 @@ msgstr "Pièce jointe"
 msgid "Select file to attach"
 msgstr "Sélectionnez un fichier à joindre"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Sélectionnez un fichier à joindre"
 msgid "Link"
 msgstr "Lien"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Lien vers une url externe"
@@ -436,10 +436,10 @@ msgstr "Commentaire"
 msgid "File comment"
 msgstr "Commentaire du fichier"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Les noms dupliqués ne peuvent pas exister sous le même parent"
 msgid "Invalid choice"
 msgstr "Choix invalide"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Choix invalide"
 msgid "Name"
 msgstr "Nom"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Erreur serveur"
 msgid "An error has been logged by the server."
 msgstr "Une erreur a été loguée par le serveur."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Doit être un nombre valide"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Retourné"
 msgid "In Progress"
 msgstr "En Cours"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "À propos d'InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "La construction doit être annulée avant de pouvoir être supprimée"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Consommable"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Ordre de Fabrication"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Ordres de Fabrication"
 
@@ -1008,17 +1008,21 @@ msgstr "Ordres de Fabrication"
 msgid "Invalid choice for parent build"
 msgstr "Choix invalide pour la fabrication parente"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "La pièce de commande de construction ne peut pas être changée"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Référence de l' Ordre de Fabrication"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Référence de l' Ordre de Fabrication"
 msgid "Reference"
 msgstr "Référence"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Brève description de la fabrication (optionnel)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Fabrication parente"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "BuildOrder associé a cette fabrication"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "BuildOrder associé a cette fabrication"
 msgid "Part"
 msgstr "Pièce"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Sélectionnez la pièce à construire"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Bon de commande de référence"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Commande de vente à laquelle cette construction est allouée"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Emplacement d'origine"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Sélectionner l'emplacement à partir duquel le stock doit être pris pour cette construction (laisser vide pour prendre à partir de n'importe quel emplacement de stock)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Emplacement cible"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Sélectionnez l'emplacement où les éléments complétés seront stockés"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Quantité a fabriquer"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Nombre de stock items à construire"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Articles terminés"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Nombre d'articles de stock qui ont été terminés"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "État de la construction"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Code de statut de construction"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Code de lot"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Code de lot pour ce build output"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Date de création"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Date d'achèvement cible"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Date cible pour l'achèvement de la construction. La construction sera en retard après cette date."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Date d'achèvement"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "achevé par"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Émis par"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Utilisateur ayant émis cette commande de construction"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr "Utilisateur ayant émis cette commande de construction"
 msgid "Responsible"
 msgstr "Responsable"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Utilisateur ou groupe responsable de cet ordre de construction"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr "Utilisateur ou groupe responsable de cet ordre de construction"
 msgid "External Link"
 msgstr "Lien Externe"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Priorité de fabrication"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Priorité de cet ordre de fabrication"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr "Priorité de cet ordre de fabrication"
 msgid "Project Code"
 msgstr "Code du projet"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Code de projet pour cet ordre de construction"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "La commande de construction {build} a été effectuée"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Une commande de construction a été effectuée"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Pas d'ordre de production défini"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "L'ordre de production a déjà été réalisé"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "L'ordre de production de correspond pas à l'ordre de commande"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "La quantité doit être supérieure à zéro"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "La quantité ne peut pas être supérieure à la quantité de sortie"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr "La sortie de compilation {serial} n'a pas réussi tous les tests requis"
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Création de l'objet"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr "Création de l'objet"
 msgid "Quantity"
 msgstr "Quantité"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Quantité requise pour la commande de construction"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "L'élément de construction doit spécifier une sortie de construction, la pièce maîtresse étant marquée comme objet traçable"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "La quantité allouée ({q}) ne doit pas excéder la quantité disponible ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "L'article de stock est suralloué"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "La quantité allouée doit être supérieure à zéro"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "La quantité doit être de 1 pour stock sérialisé"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "L'article de stock sélectionné ne correspond pas à la ligne BOM"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr "L'article de stock sélectionné ne correspond pas à la ligne BOM"
 msgid "Stock Item"
 msgstr "Article en stock"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Stock d'origine de l'article"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Quantité de stock à allouer à la construction"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Installer dans"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Stock de destination de l'article"
 
@@ -1429,7 +1433,7 @@ msgstr "Quantité entière requise pour les pièces à suivre"
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Quantité entière requise, car la facture de matériaux contient des pièces à puce"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr "Allouer automatiquement les numéros de série"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Affecter automatiquement les éléments requis avec les numéros de série correspondants"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "Les numéros de série suivants existent déjà, ou sont invalides"
 
@@ -1455,8 +1459,8 @@ msgstr "Les numéros de série suivants existent déjà, ou sont invalides"
 msgid "A list of build outputs must be provided"
 msgstr "Une liste d'ordre de production doit être fourni"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr "Emplacement des ordres de production achevés"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr "Accepter les articles de stock qui n'ont pas été complètement alloué
 msgid "Required stock has not been fully allocated"
 msgstr "Le stock requis n'a pas encore été totalement alloué"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Accepter les incomplèts"
 
@@ -1610,7 +1614,7 @@ msgstr "bom_item.part doit pointer sur la même pièce que l'ordre de constructi
 msgid "Item must be in stock"
 msgstr "L'article doit être en stock"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Quantité disponible ({q}) dépassée"
@@ -1623,7 +1627,7 @@ msgstr "La sortie de construction doit être spécifiée pour l'allocation des p
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "La sortie de la construction ne peut pas être spécifiée pour l'allocation des pièces non suivies"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "Les articles d'allocation doivent être fournis"
 
@@ -1663,8 +1667,8 @@ msgstr "Objets Optionnels"
 msgid "Allocate optional BOM items to build order"
 msgstr "Affecter des éléments de nomenclature facultatifs à l'ordre de fabrication"
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "Article du BOM"
 
@@ -1693,15 +1697,15 @@ msgstr "En Production"
 msgid "Available Stock"
 msgstr "Stock disponible"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "Stock requis pour la commande de construction"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr "Ordre de commande en retard"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr "L'ordre de commande {bo} est maintenant en retard"
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Le stock n'a pas été entièrement alloué à cet ordre de construction"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr "Sorties de Construction terminées"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr "Stock d'origine"
 msgid "Stock can be taken from any available location."
 msgstr "Le stock peut être pris à partir de n'importe quel endroit disponible."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Destination"
@@ -2121,1542 +2125,1570 @@ msgstr "Description du projet"
 msgid "User or group responsible for this project"
 msgstr "Utilisateur ou groupe responsable de ce projet"
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Clé du paramètre (doit être unique - insensible à la casse)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "Valeur du paramètre"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "La valeur choisie n'est pas une option valide"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "La valeur doit être une valeur booléenne"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "La valeur doit être un nombre entier"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "La chaîne de caractères constituant la clé doit être unique"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Pas de groupe"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Un domaine vide n'est pas autorisé."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Nom de domaine invalide : {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr "Pas de plugin"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Redémarrage nécessaire"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "Un paramètre a été modifié, ce qui nécessite un redémarrage du serveur"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr "Migration en attente"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr "Nombre de migrations de base de données en attente"
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "Nom de l'instance du serveur"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr "Chaîne de caractères descriptive pour l'instance serveur"
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr "Utiliser le nom de l'instance"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr "Utiliser le nom de l’instance dans la barre de titre"
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr "Limiter l'affichage de `about`"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr "Afficher la modale `about` uniquement aux super-utilisateurs"
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Nom de la société"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Nom de société interne"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "URL de base"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "URL de base pour l'instance serveur"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Devise par défaut"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr "Sélectionnez la devise de base pour les calculs de prix"
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr "Intervalle de mise à jour des devises"
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr "Fréquence de mise à jour des taux de change (définir à zéro pour désactiver)"
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "jours"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr "Plugin de mise à jour de devise"
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr "Plugin de mise à jour des devises à utiliser"
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Télécharger depuis l'URL"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Autoriser le téléchargement d'images distantes et de fichiers à partir d'URLs externes"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr "Limite du volume de téléchargement"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr "Taille maximale autorisée pour le téléchargement de l'image distante"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr "Agent utilisateur utilisé pour télécharger depuis l'URL"
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr "Permettre de remplacer l'agent utilisateur utilisé pour télécharger des images et des fichiers à partir d'URL externe (laisser vide pour la valeur par défaut)"
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr "Validation stricte d'URL"
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr "Spécification du schéma nécessaire lors de la validation des URL"
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Confirmation requise"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Exiger une confirmation explicite de l’utilisateur pour certaines actions."
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr "Profondeur de l'arborescence"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr "Profondeur de l'arborescence par défaut. Les niveaux plus profonds peuvent être chargés au fur et à mesure qu'ils sont nécessaires."
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr "Intervalle de vérification des mises à jour"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr "À quelle fréquence vérifier les mises à jour (définir à zéro pour désactiver)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Backup automatique"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Activer le backup automatique de la base de données et des fichiers médias"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Intervalle de sauvegarde automatique"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr "Spécifiez le nombre de jours entre les sauvegardes automatique"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr "Intervalle de suppression des tâches"
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr "Les résultats de la tâche en arrière-plan seront supprimés après le nombre de jours spécifié"
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr "Intervalle de suppression du journal d'erreur"
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr "Les logs d'erreur seront supprimés après le nombre de jours spécifié"
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr "Intervalle de suppression du journal de notification"
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr "Les notifications de l'utilisateur seront supprimées après le nombre de jours spécifié"
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Support des code-barres"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr "Activer le support du scanner de codes-barres dans l'interface web"
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr "Délai d'entrée du code-barres"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr "Délai de traitement du code-barres"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr "Prise en charge de la webcam code-barres"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Autoriser la numérisation de codes-barres via la webcam dans le navigateur"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr "Modifications de la pièce"
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr "Activer le champ de modification de la pièce"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr "Regex IPN"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Expression régulière pour la correspondance avec l'IPN de la Pièce"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Autoriser les IPN dupliqués"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Permettre à plusieurs pièces de partager le même IPN"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "Autoriser l'édition de l'IPN"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Permettre de modifier la valeur de l'IPN lors de l'édition d'une pièce"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr "Copier les données de la pièce"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Copier les données des paramètres par défaut lors de la duplication d'une pièce"
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr "Copier les données des paramètres de la pièce"
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Copier les données des paramètres par défaut lors de la duplication d'une pièce"
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr "Copier les données de test de la pièce"
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr "Copier les données de test par défaut lors de la duplication d'une pièce"
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr "Copier les templates de paramètres de catégorie"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr "Copier les templates de paramètres de la catégorie lors de la création d'une pièce"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Modèle"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "Les pièces sont des templates par défaut"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Assemblage"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "Les pièces peuvent être assemblées à partir d'autres composants par défaut"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Composant"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "Les pièces peuvent être utilisées comme sous-composants par défaut"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Achetable"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Les pièces sont achetables par défaut"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Vendable"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Les pièces sont vendables par défaut"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Traçable"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Les pièces sont traçables par défaut"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Virtuelle"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Les pièces sont virtuelles par défaut"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Afficher l'import dans les vues"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr "Afficher l'assistant d'importation pour certaine vues de produits"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Afficher les pièces connexes"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Afficher les pièces connexes à une pièce"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr "Stock initial"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr "Permettre la création d'un stock initial lors de l'ajout d'une nouvelle pièce"
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr "Données initiales du fournisseur"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr "Permettre la création des données initiales du fournisseur lors de l'ajout d'une nouvelle pièce"
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Format d'affichage du nom de la pièce"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Format pour afficher le nom de la pièce"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr "Icône de catégorie par défaut"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr "Icône par défaut de la catégorie de la pièce (vide signifie aucune icône)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr "Renforcer les unités des paramètres"
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr "Si des unités sont fournies, les valeurs de paramètre doivent correspondre aux unités spécifiées"
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr "Utiliser le prix fournisseur"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr "Inclure les réductions de prix dans le calcul du prix global"
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr "Remplacer l'historique des achats"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr "La tarification historique des bons de commande remplace les réductions de prix des fournisseurs"
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr "Utiliser les prix des articles en stock"
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr "Utiliser les prix des données de stock saisies manuellement pour calculer les prix"
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr "Âge de tarification des articles de stock"
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr "Exclure les articles en stock datant de plus de ce nombre de jours des calculs de prix"
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr "Utiliser les prix variants"
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr "Inclure la tarification variante dans le calcul global des prix"
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr "Variantes actives uniquement"
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr "N'utiliser que des pièces de variante actives pour calculer le prix de la variante"
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr "Intervalle de regénération des prix"
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr "Nombre de jours avant la mise à jour automatique du prix de la pièce"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Prix internes"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr "Activer les prix internes pour les pièces"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr "Substitution du prix interne"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr "Si disponible, les prix internes remplacent les calculs de la fourchette de prix"
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Activer l'impression d'étiquettes"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Activer l'impression d'étiquettes depuis l'interface Web"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "Étiquette image DPI"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr "Résolution DPI lors de la génération de fichiers image pour fournir aux plugins d'impression d'étiquettes"
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Activer les rapports"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Activer la génération de rapports"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Mode Débogage"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Générer des rapports en mode debug (sortie HTML)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Taille de la page"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Taille de page par défaut pour les rapports PDF"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Activer les rapports de test"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Activer la génération de rapports de test"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr "Joindre des rapports de test"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr "Lors de l'impression d'un rapport de test, joignez une copie du rapport de test à l'article en stock associé"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr "Numéro de Série Universellement Unique"
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr "Les numéros de série pour les articles en stock doivent être uniques au niveau global"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "Remplir automatiquement les Numéros de Série"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr "Remplir automatiquement les numéros de série dans les formulaires"
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr "Supprimer le stock épuisé"
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Determines default behaviour when a stock item is depleted"
+msgid "Determines default behavior when a stock item is depleted"
 msgstr "Détermine le comportement par défaut lorsqu'un article de stock est épuisé"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr "Modèle de code de lot"
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr "Modèle pour générer des codes par défaut pour les articles en stock"
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr "Expiration du stock"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr "Activer la fonctionnalité d'expiration du stock"
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr "Vendre le stock expiré"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr "Autoriser la vente de stock expiré"
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr "Délai de péremption du stock"
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr "Nombre de jours pendant lesquels les articles en stock sont considérés comme périmés avant d'expirer"
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr "Construction de stock expirée"
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr "Autoriser la construction avec un stock expiré"
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr "Contrôle de la propriété des stocks"
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr "Activer le contrôle de la propriété sur les emplacements de stock et les articles"
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr "Icône par défaut de l'emplacement du stock"
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr "Icône par défaut de l'emplacement du stock (vide signifie aucune icône)"
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr "Afficher les pièces en stock installées"
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr "Modèle de référence de commande de construction"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr "Modèle requis pour générer le champ de référence de l'ordre de construction"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Responsable"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+#, fuzzy
+#| msgid "Only salable parts can be assigned to a sales order"
+msgid "A responsible owner must be assigned to each order"
+msgstr "Seules les pièces vendues peuvent être attribuées à une commande"
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr "Activer les retours de commandes"
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr "Activer la fonctionnalité de retour de commande dans l'interface utilisateur"
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr "Modèle de référence de retour de commande"
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr "Modifier les retours de commandes terminées"
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr "Autoriser la modification des retours après leur enregistrement"
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr "Modèle de référence de bon de commande"
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr "Modèle requis pour générer le champ de référence du bon de commande"
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr "Expédition par défaut du bon de commande"
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr "Activer la création d'expédition par défaut avec les bons de commandes"
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr "Modifier les commandes de vente terminées"
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr "Autoriser la modification des commandes de vente après avoir été expédiées ou complétées"
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr "Modèle de référence de commande d'achat"
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr "Modèle requis pour générer le champ de référence de bon de commande"
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr "Modifier les bons de commande terminés"
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr "Autoriser la modification des bons de commande après avoir été expédiés ou complétés"
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Activer les mots de passe oubliés"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr "Activer la fonction \"Mot de passe oublié\" sur les pages de connexion"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Activer les inscriptions"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr "Activer l'auto-inscription pour les utilisateurs sur les pages de connexion"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "Activer le SSO"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "Activer le SSO sur les pages de connexion"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr "Activer l'inscription SSO"
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr "Activer l'auto-inscription via SSO pour les utilisateurs sur les pages de connexion"
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Email requis"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr "Exiger que l'utilisateur fournisse un mail lors de l'inscription"
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr "Saisie automatique des utilisateurs SSO"
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Remplir automatiquement les détails de l'utilisateur à partir des données de compte SSO"
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "Courriel en double"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mail"
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Mot de passe deux fois"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mot de passe"
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Domaines autorisés"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr "Grouper sur inscription"
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr "Groupe auquel les nouveaux utilisateurs sont assignés lors de l'inscription"
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "Forcer l'authentification multifacteurs"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "Les utilisateurs doivent utiliser l'authentification multifacteurs."
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr "Vérifier les plugins au démarrage"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr "Vérifier que tous les plugins sont installés au démarrage - activer dans les environnements conteneurs"
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr "Activer l'intégration d'URL"
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr "Autoriser les plugins à ajouter des chemins URL"
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr "Activer l'intégration de navigation"
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr "Activer les plugins à s'intégrer dans la navigation"
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr "Activer l'intégration de plugins"
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr "Activer l'intégration de plugin pour ajouter des apps"
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr "Activer l'intégration du planning"
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Autoriser les plugins à éxécuter des tâches planifiées"
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr "Activer l'intégration des évènements"
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr "Autoriser les plugins à répondre aux évènements internes"
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr "Activer les codes projet"
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr "Fonctionnalité d'inventaire"
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr "Activer la fonctionnalité d'inventaire pour enregistrer les niveaux de stock et le calcul de la valeur du stock"
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr "Période de l'inventaire automatique"
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr "Nombre de jours entre l'enregistrement automatique des stocks (définir à zéro pour désactiver)"
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr "Les rapports d'inventaire seront supprimés après le nombre de jours spécifié"
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Clé du paramètre (doit être unique - insensible à la casse)"
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "Afficher les composants suivis"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr "Afficher les composants suivis sur l'écran d'accueil"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "Afficher les catégories suivies"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr "Afficher les catégories de pièces suivies sur la page d'accueil"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "Afficher les dernières pièces"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "Afficher les derniers composants sur la page d'accueil"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Show unvalidated BOMs"
+msgid "Show invalid BOMs"
 msgstr "Afficher les listes de matériaux non validées"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Afficher les listes de matériaux en attente de validation sur la page d'accueil"
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr "Afficher les dernières modifications du stock"
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr "Afficher les articles de stock récemment modifiés sur la page d'accueil"
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr "Afficher le stock faible"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr "Afficher les articles en stock bas sur la page d'accueil"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr "Afficher le stock épuisé"
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr "Afficher les stocks épuisés sur la page d'accueil"
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr "Afficher le stock nécessaire"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Afficher les pièces en stock nécessaires pour les assemblages sur la page d'accueil"
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr "Afficher le stock expiré"
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr "Afficher les pièces en stock expirées sur la page d'accueil"
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr "Afficher le stock périmé"
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr "Afficher les articles de stock périmés sur la page d'accueil"
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr "Afficher les constructions en attente"
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr "Afficher les constructions en attente sur la page d'accueil"
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr "Afficher les constructions en retard"
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr "Afficher les constructions en retard sur la page d'accueil"
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr "Afficher les commandes en suspens"
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr "Afficher les commandes en suspens sur la page d'accueil"
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr "Afficher les commandes en retard"
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr "Afficher les commandes en retard sur la page d'accueil"
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr "Afficher les envois en suspens"
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr "Afficher les envois en suspens sur la page d'accueil"
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr "Afficher les envois en retard"
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr "Afficher les envois en retard sur la page d'accueil"
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Afficher les nouvelles"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr "Afficher les nouvelles sur la page d'accueil"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr "Affichage du libellé en ligne"
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "Afficher les étiquettes PDF dans le navigateur, au lieu de les télécharger en tant que fichier"
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr "Imprimante d'étiquettes par défaut"
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr "Configurer quelle imprimante d'étiquette doit être sélectionnée par défaut"
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr "Affichage du rapport en ligne"
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "Afficher les rapports PDF dans le navigateur, au lieu de les télécharger en tant que fichier"
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Rechercher de pièces"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr "Afficher les pièces dans la fenêtre d'aperçu de la recherche"
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr "Afficher les pièces du fournisseur dans la fenêtre de prévisualisation de la recherche"
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr "Rechercher les pièces du fabricant"
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr "Afficher les pièces du fabricant dans la fenêtre de prévisualisation de recherche"
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr "Masquer les pièces inactives"
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr "Exclure les pièces inactives de la fenêtre de prévisualisation de recherche"
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr "Rechercher des catégories"
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr "Afficher les catégories de pièces dans la fenêtre de prévisualisation de recherche"
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr "Rechercher dans le stock"
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr "Afficher les pièces en stock dans la fenêtre d'aperçu de la recherche"
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr "Cacher les pièces indisponibles"
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr "Exclure les articles en stock qui ne sont pas disponibles de la fenêtre de prévisualisation de recherche"
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr "Chercher des Emplacements"
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr "Afficher les emplacements dans la fenêtre d'aperçu de la recherche"
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr "Rechercher les entreprises"
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr "Afficher les entreprises dans la fenêtre de prévisualisation de recherche"
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr "Rechercher les commandes de construction"
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr "Afficher les commandes de construction dans la fenêtre de prévisualisation de recherche"
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr "Rechercher des bons de commande"
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr "Afficher les bons de commande dans la fenêtre de prévisualisation de recherche"
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Exclure les bons de commande inactifs"
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr "Exclure les commandes d’achat inactives de la fenêtre de prévisualisation de recherche"
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr "Rechercher les bons de commande"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr "Afficher les bons de commande dans la fenêtre de prévisualisation de la recherche"
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr "Exclure les bons de commande inactives"
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Exclure les bons de commande inactifs de la fenêtre de prévisualisation de recherche"
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr "Rechercher les commandes retournées"
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr "Résultats de l'aperçu de la recherche"
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr "Nombre de résultats à afficher dans chaque section de la fenêtre de prévisualisation de recherche"
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr "Recherche Regex"
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "Afficher la quantité dans les formulaires"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr "Afficher la quantité disponible dans certains formulaires"
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr "La touche Echap ferme les formulaires"
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr "Utilisez la touche Echap pour fermer les formulaires modaux"
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr "Barre de navigation fixe"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr "La position de la barre de navigation est fixée en haut de l'écran"
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Format de date"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr "Format préféré pour l'affichage des dates"
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Planification des pièces"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr "Afficher les informations de planification des pièces"
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr "Inventaire des pièces"
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr "Longueur de la chaîne dans les Tableau"
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+#, fuzzy
+#| msgid "Default label printer"
+msgid "Default build line label template"
+msgstr "Imprimante d'étiquettes par défaut"
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Prix"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Actif"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr "Ce webhook (lien de rappel HTTP) est-il actif"
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr "Jeton"
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr "Jeton d'accès"
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Confidentiel"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "ID message"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr "Identifiant unique pour ce message"
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr "Hôte"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr "Hôte à partir duquel ce message a été reçu"
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr "Entête"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr "En-tête de ce message"
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr "Corps"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr "Corps de ce message"
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr "Endpoint à partir duquel ce message a été reçu"
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr "Le travail sur ce message est-il terminé ?"
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr "Id"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr "Titre"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr "Publié"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "Auteur"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr "Résumé"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr "Lu"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr "Cette nouvelle a-t-elle été lue ?"
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3698,31 @@ msgstr "Cette nouvelle a-t-elle été lue ?"
 msgid "Image"
 msgstr "Image"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr "Définition"
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3889,7 @@ msgid "Contact email address"
 msgstr "Adresse e-mail de contact"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3933,7 @@ msgstr "Devise par défaut utilisée pour cette entreprise"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Société"
@@ -4066,7 +4098,7 @@ msgid "Parameter value"
 msgstr "Valeur du paramètre"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4122,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "La pièce du fabricant liée doit faire référence à la même pièce de base"
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4158,7 @@ msgid "Supplier part description"
 msgstr "Description de la pièce du fournisseur"
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4168,11 @@ msgstr "Description de la pièce du fournisseur"
 msgid "Note"
 msgstr "Note"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "coût de base"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Frais minimums (par exemple frais de stock)"
 
@@ -4170,7 +4202,7 @@ msgstr "Nombre de paquet"
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "plusieurs"
 
@@ -4248,8 +4280,8 @@ msgstr "Télécharger l'image depuis l'URL"
 msgid "Delete image"
 msgstr "Supprimer image"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4298,7 @@ msgstr "Client"
 msgid "Uses default currency"
 msgstr "Utiliser la devise par défaut"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4378,7 @@ msgstr "Stock fournisseur"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Bons de commande"
 
@@ -4369,7 +4401,7 @@ msgstr "Nouvelle commande achat"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Ventes"
 
@@ -4394,7 +4426,7 @@ msgstr "Stock affecté"
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4654,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Éléments en stock"
 
@@ -4675,7 +4707,7 @@ msgstr "Étiquette"
 msgid "Label template file"
 msgstr "Fichier de modèle d'étiquette"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4733,7 @@ msgstr "Hauteur [mm]"
 msgid "Label height, specified in mm"
 msgstr "Hauteur de l'étiquette, spécifiée en mm"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Modèle de nom de fichier"
 
@@ -4715,8 +4747,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Filtres"
 
@@ -4847,7 +4879,7 @@ msgstr "Prix Total"
 msgid "No matching purchase order found"
 msgstr "Aucun bon de commande correspondant n'a été trouvé"
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4893,7 @@ msgstr "Aucun bon de commande correspondant n'a été trouvé"
 msgid "Purchase Order"
 msgstr "Commande d’achat"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4906,184 @@ msgstr "Retour de commande"
 msgid "Total price for this order"
 msgstr "Prix total pour cette commande"
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr "Devise de la commande"
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Lien vers une page externe"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr "Date prévue pour la livraison de la commande. La commande sera en retard après cette date."
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Créé par"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Utilisateur ou groupe responsable de cette commande"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Référence de la commande"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr "Statut de la commande d'achat"
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "Société de laquelle les articles sont commandés"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr "Référence du fournisseur"
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr "Code de référence de la commande fournisseur"
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr "reçu par"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr "Date d'émission"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr "Date d'émission de la commande"
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr "Date à laquelle la commande a été complété"
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr "La quantité doit être un nombre positif"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "Société à laquelle les articles sont vendus"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr "Référence client "
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Nom de l’expédition"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr "expédié par"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr "La commande ne peut pas être terminée car aucune pièce n'a été assignée"
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr "La commande ne peut pas être terminée car il y a des envois incomplets"
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr "Nombre d'élement"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr "Contexte"
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr "Prix unitaire"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr "supprimé"
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr "Commande"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr "Pièce fournisseur"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5093,341 @@ msgstr "Pièce fournisseur"
 msgid "Received"
 msgstr "Reçu"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr "Nombre d'éléments reçus"
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Prix d'achat"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr "Prix d'achat unitaire"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "Où l'Acheteur veut-il stocker cet article ?"
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr "La pièce virtuelle ne peut pas être affectée à une commande"
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr "Seules les pièces vendues peuvent être attribuées à une commande"
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "Prix de vente"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Prix de vente unitaire"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr "Quantité expédiée"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr "Date d'expédition"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr "Vérifié par"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr "Utilisateur qui a vérifié cet envoi"
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr "Envoi"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr "Numéro d'expédition"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "N° de suivi"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr "Information de suivi des colis"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr "N° de facture"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr "Numéro de référence de la facture associée"
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr "Le colis a déjà été envoyé"
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr "L'expédition n'a pas d'articles en stock alloués"
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr "L'article de stock n'a pas été assigné"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr "Impossible d'allouer le stock à une ligne sans pièce"
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "La quantité d'allocation ne peut pas excéder la quantité en stock"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr "Ligne"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr "Article"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr "Statut du retour de commande"
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr "La commande ne peut pas être annulée"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr "La commande n'est pas ouverte"
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr "Devise du prix d'achat"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Entrez les numéros de série pour les articles de stock entrants"
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Code-barres"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr "Le code-barres est déjà utilisé"
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Une quantité entière doit être fournie pour les pièces tracables"
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr "Entrez les numéros de série à allouer"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr "Aucune correspondance trouvée pour les numéros de série suivants"
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr "Les numéros de série suivants sont déjà alloués"
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5831,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "ID de composant"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Nom de l'article"
@@ -5813,20 +5845,20 @@ msgstr "Nom de l'article"
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr "IPN"
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr "Révision"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Mots-clés"
@@ -5851,11 +5883,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "Stock Minimum"
 
@@ -5874,12 +5906,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5929,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5937,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Pièces"
 
@@ -5921,7 +5953,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5969,92 @@ msgstr "Prix Minimum"
 msgid "Maximum Price"
 msgstr "Prix Maximum"
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Catégorie"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6068,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Catégorie de composant"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Catégories de composants"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Nom de l'article"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "Catégorie de la pièce"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr "Ventes multiples"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6436,330 @@ msgstr ""
 msgid "Date"
 msgstr "Date"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr "Notes additionnelles"
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr "Nom de test"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr "Requis"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr "Valeur requise"
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr "Données"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr "Valeur par Défaut"
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Surplus"
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr "Validée"
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7237,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr "Prise d'inventaire"
 
@@ -8057,7 +8089,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8260,7 @@ msgstr "Extension"
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8426,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr "Nom du modèle"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr "Filtres de composants"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr "Extrait "
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr "Elément"
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8717,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8794,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10103,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Supprimer"
 
@@ -13248,7 +13280,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "Ajouter"
 
@@ -13891,7 +13923,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14160,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "Droit défini"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Groupe"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Vue"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Droit de voir des éléments"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Droit d'ajouter des éléments"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Modifier"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Droit de modifier des élément"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Droit de supprimer des éléments"
-
diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po
index 49421902813a..5d95d1367387 100644
--- a/InvenTree/locale/he/LC_MESSAGES/django.po
+++ b/InvenTree/locale/he/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Hebrew\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr ""
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -59,10 +59,10 @@ msgstr "הזן תאריך סיום"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr ""
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr ""
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "מספרים סידוריים לא נמצאו"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr ""
 
@@ -405,10 +405,10 @@ msgstr "קובץ מצורף"
 msgid "Select file to attach"
 msgstr "בחר קובץ לצירוף"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "בחר קובץ לצירוף"
 msgid "Link"
 msgstr "קישור"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "קישור חיצוני"
@@ -436,10 +436,10 @@ msgstr "הערה"
 msgid "File comment"
 msgstr "הערת קובץ"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr "בחירה שגויה"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "בחירה שגויה"
 msgid "Name"
 msgstr "שם"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr ""
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "המספר חייב להיות תקין"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "הוחזר"
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1008,17 +1008,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr ""
 msgid "Reference"
 msgstr "מקט"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "מקור הבנייה"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr "רכיב"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "בחר רכיב לבנייה"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "כמות בניה"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr "כמות"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4869,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8250,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/hi/LC_MESSAGES/django.po b/InvenTree/locale/hi/LC_MESSAGES/django.po
index ae19920fc4a0..c838d8829b0c 100644
--- a/InvenTree/locale/hi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/hi/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-20 12:27\n"
 "Last-Translator: \n"
 "Language-Team: Hindi\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr ""
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -59,10 +59,10 @@ msgstr "तारीख दर्ज करें"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr ""
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr ""
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr ""
 
@@ -405,10 +405,10 @@ msgstr ""
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr ""
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr ""
@@ -436,10 +436,10 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr ""
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr ""
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr ""
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1008,17 +1008,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr ""
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4869,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8250,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po
index 54614417f907..888707ea22d9 100644
--- a/InvenTree/locale/hu/LC_MESSAGES/django.po
+++ b/InvenTree/locale/hu/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Hungarian\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Nincs érték megadva"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "{original} átváltása {unit}-ra sikertelen"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Hibás mennyiség"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Hibás mennyiség ({exc})"
@@ -59,10 +59,10 @@ msgstr "Dátum megadása"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "A megadott email domain nincs jóváhagyva."
 msgid "Registration is disabled."
 msgstr "Regisztráció le van tiltva."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Nem megfelelő mennyiség"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Üres sorozatszám"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Duplikált sorozatszám"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Hibás tartomány: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Csoport tartomány {group} több mint az engedélyezett ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Hibás csoport-sor: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Nem található sorozatszám"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Az egyedi sorozatszámok számának ({len(serials)}) meg kell egyeznie a mennyiséggel ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "HTML tag-ek eltávolítása ebből az értékből"
 
@@ -405,10 +405,10 @@ msgstr "Melléklet"
 msgid "Select file to attach"
 msgstr "Válaszd ki a mellekelni kívánt fájlt"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Válaszd ki a mellekelni kívánt fájlt"
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Link külső URL-re"
@@ -436,10 +436,10 @@ msgstr "Megjegyzés"
 msgid "File comment"
 msgstr "Leírás, bővebb infó"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Duplikált nevek nem lehetnek ugyanazon szülő alatt"
 msgid "Invalid choice"
 msgstr "Érvénytelen választás"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Érvénytelen választás"
 msgid "Name"
 msgstr "Név"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Kiszolgálóhiba"
 msgid "An error has been logged by the server."
 msgstr "A kiszolgáló egy hibaüzenetet rögzített."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Érvényes számnak kell lennie"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Visszaküldve"
 msgid "In Progress"
 msgstr "Folyamatban"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Verzió információk"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "A gyártást be kell fejezni a törlés előtt"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Fogyóeszköz"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Gyártási utasítás"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Gyártási utasítások"
 
@@ -1008,17 +1008,23 @@ msgstr "Gyártási utasítások"
 msgid "Invalid choice for parent build"
 msgstr "Hibás választás a szülő gyártásra"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+#, fuzzy
+#| msgid "Purchase order must be specified"
+msgid "Responsible user or group must be specified"
+msgstr "Beszerzési rendelést meg kell adni"
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Gyártási rendelés alkatrész nem változtatható"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Gyártási utasítás azonosító"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1038,27 @@ msgstr "Gyártási utasítás azonosító"
 msgid "Reference"
 msgstr "Azonosító"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Gyártás rövid leírása (opcionális)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Szülő gyártás"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1102,107 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
 msgid "Part"
 msgstr "Alkatrész"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Válassz alkatrészt a gyártáshoz"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Vevői rendelés azonosító"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Vevői rendelés amihez ez a gyártás hozzá van rendelve"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Forrás hely"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Válassz helyet ahonnan készletet vegyünk el ehhez a gyártáshoz (hagyd üresen ha bárhonnan)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Cél hely"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Válassz helyet ahol a kész tételek tárolva lesznek"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Gyártási mennyiség"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Gyártandó készlet tételek száma"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Kész tételek"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Elkészült készlet tételek száma"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Gyártási állapot"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Gyártás státusz kód"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Batch kód"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Batch kód a gyártás kimenetéhez"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Létrehozás dátuma"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Befejezés cél dátuma"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Cél dátum a gyártás befejezéséhez. Ez után késettnek számít majd."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Befejezés dátuma"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "elkészítette"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Indította"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Felhasználó aki ezt a gyártási utasítást kiállította"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1213,11 @@ msgstr "Felhasználó aki ezt a gyártási utasítást kiállította"
 msgid "Responsible"
 msgstr "Felelős"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Felhasználó vagy csoport aki felelős ezért a gyártásért"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1229,16 @@ msgstr "Felhasználó vagy csoport aki felelős ezért a gyártásért"
 msgid "External Link"
 msgstr "Külső link"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Priorítás"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Gyártási utasítás priorítása"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1248,57 @@ msgstr "Gyártási utasítás priorítása"
 msgid "Project Code"
 msgstr "Projektszám"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Projekt kód a gyártáshoz"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "A {build} gyártási utasítás elkészült"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Gyártási utasítás elkészült"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Nincs gyártási kimenet megadva"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Gyártási kimenet már kész"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Gyártási kimenet nem egyezik a gyártási utasítással"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Mennyiségnek nullánál többnek kell lennie"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "A mennyiség nem lehet több mint a gyártási mennyiség"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Gyártás objektum"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1340,37 @@ msgstr "Gyártás objektum"
 msgid "Quantity"
 msgstr "Mennyiség"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Gyártáshoz szükséges mennyiség"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Gyártási tételnek meg kell adnia a gyártási kimenetet, mivel a fő darab egyedi követésre kötelezett"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "A lefoglalt mennyiség ({q}) nem lépheti túl a szabad készletet ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Készlet túlfoglalva"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1386,19 @@ msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel"
 msgid "Stock Item"
 msgstr "Készlet tétel"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Forrás készlet tétel"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Beépítés ebbe"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Cél készlet tétel"
 
@@ -1429,7 +1435,7 @@ msgstr "Egész számú mennyiség szükséges az egyedi követésre kötelezett
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Egész számú mennyiség szükséges, mivel az alkatrészjegyzék egyedi követésre kötelezett alkatrészeket tartalmaz"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1453,7 @@ msgstr "Sorozatszámok automatikus hozzárendelése"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Szükséges tételek automatikus hozzárendelése a megfelelő sorozatszámokkal"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "A következő sorozatszámok már léteznek vagy nem megfelelőek"
 
@@ -1455,8 +1461,8 @@ msgstr "A következő sorozatszámok már léteznek vagy nem megfelelőek"
 msgid "A list of build outputs must be provided"
 msgstr "A gyártási kimenetek listáját meg kell adni"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1502,8 @@ msgid "Location for completed build outputs"
 msgstr "A kész gyártási kimenetek helye"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1516,7 +1522,8 @@ msgstr "Hiányos foglalás elfogadása"
 
 #: build/serializers.py:512
 msgid "Complete outputs if stock has not been fully allocated"
-msgstr "Kimenetek befejezése akkor is ha a készlet nem\n"
+msgstr ""
+"Kimenetek befejezése akkor is ha a készlet nem\n"
 "lett teljesen lefoglalva"
 
 #: build/serializers.py:592
@@ -1571,7 +1578,7 @@ msgstr "Fogadd el hogy a készlet tételek nincsenek teljesen lefoglalva ehhez a
 msgid "Required stock has not been fully allocated"
 msgstr "A szükséges készlet nem lett teljesen lefoglalva"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Befejezetlenek elfogadása"
 
@@ -1611,7 +1618,7 @@ msgstr "bom_item.part ugyanarra az alkatrészre kell mutasson mint a gyártási
 msgid "Item must be in stock"
 msgstr "A tételnek kell legyen készlete"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Rendelkezésre álló mennyiség ({q}) túllépve"
@@ -1624,7 +1631,7 @@ msgstr "Gyártási kimenetet meg kell adni a követésre kötelezett alkatrésze
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "Gyártási kimenetet nem lehet megadni a követésre kötelezett alkatrészek lefoglalásához"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "A lefoglalandó tételeket meg kell adni"
 
@@ -1664,8 +1671,8 @@ msgstr "Opcionális tételek"
 msgid "Allocate optional BOM items to build order"
 msgstr "Opcionális tételek lefoglalása a gyártáshoz"
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "Alkatrészjegyzék tétel"
 
@@ -1694,15 +1701,15 @@ msgstr "Gyártásban"
 msgid "Available Stock"
 msgstr "Elérhető készlet"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "A gyártási utasításhoz készlet szükséges"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr "Késésben lévő gyártás"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr "A {bo} gyártás most már késésben van"
@@ -1819,8 +1826,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Még nincs lefoglalva a szükséges készlet"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1857,8 +1864,8 @@ msgid "Completed Outputs"
 msgstr "Befejezett kimenetek"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1908,7 +1915,7 @@ msgstr "Készlet forrás"
 msgid "Stock can be taken from any available location."
 msgstr "Készlet bármely rendelkezésre álló helyről felhasználható."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Cél"
@@ -2122,1542 +2129,1572 @@ msgstr "Projekt leírása"
 msgid "User or group responsible for this project"
 msgstr "A projektért felelős felhasználó vagy csoport"
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Beállítások kulcs (egyedinek kell lennie, nem kis- nagybetű érzékeny)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "Beállítás értéke"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "A kiválasztott érték nem egy érvényes lehetőség"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "Az érték bináris kell legyen"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "Az érték egész szám kell legyen"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "Kulcs string egyedi kell legyen"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Nincs csoport"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Üres domain nem engedélyezett."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Érvénytelen domain név: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr "Nincsen plugin"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Újraindítás szükséges"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "Egy olyan beállítás megváltozott ami a kiszolgáló újraindítását igényli"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr "Függőben levő migrációk"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr "Függőben levő adatbázis migrációk"
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "Kiszolgáló példány neve"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr "String leíró a kiszolgáló példányhoz"
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr "Példány név használata"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr "Példány név használata a címsorban"
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr "Verzió infók megjelenítésének tiltása"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr "Verzió infók megjelenítése csak admin felhasználóknak"
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Cég neve"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Belső cégnév"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "Kiindulási URL"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "Kiindulási URL a kiszolgáló példányhoz"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Alapértelmezett pénznem"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr "Válassz alap pénznemet az ár számításokhoz"
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr "Árfolyam frissítési gyakoriság"
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr "Milyen gyakran frissítse az árfolyamokat (nulla a kikapcsoláshoz)"
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "nap"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr "Árfolyam frissítő plugin"
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr "Kiválasztott árfolyam frissítő plugin"
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Letöltés URL-ről"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Képek és fájlok letöltésének engedélyezése külső URL-ről"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr "Letöltési méret korlát"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr "Maximum megengedett letöltési mérete a távoli képeknek"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr "Felhasznált User-agent az URL-ről letöltéshez"
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr "A külső URL-ről letöltéshez használt user-agent felülbírálásának engedélyezése (hagyd üresen az alapértelmezéshez)"
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr "Erős URL validáció"
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr "Sablon specifikáció igénylése az URL validálásnál"
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Megerősítés igénylése"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Kérjen felhasználói megerősítést bizonyos műveletekhez"
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr "Fa mélység"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr "Alapértelmezett mélység a fa nézetekben. A mélyebb szintek betöltődnek ha szükségesek."
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr "Frissítés keresés gyakorisága"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr "Milyen gyakran ellenőrizze van-e új frissítés (0=soha)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Automatikus biztonsági mentés"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Adatbázis és média fájlok automatikus biztonsági mentése"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Automata biztonsági mentés gyakorisága"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr "Hány naponta készüljön automatikus biztonsági mentés"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr "Feladat törlési gyakoriság"
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr "Háttérfolyamat eredmények törlése megadott nap eltelte után"
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr "Hibanapló törlési gyakoriság"
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr "Hibanapló bejegyzések törlése megadott nap eltelte után"
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr "Értesítés törlési gyakoriság"
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr "Felhasználói értesítések törlése megadott nap eltelte után"
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Vonalkód támogatás"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr "Vonalkód olvasó támogatás engedélyezése a web felületen"
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr "Vonalkód beadási késleltetés"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr "Vonalkód beadáskor a feldolgozás késleltetési ideje"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr "Webkamerás vonalkód olvasás"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Webkamerás kódolvasás engedélyezése a böngészőből"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr "Alkatrész változatok"
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr "Alkatrész változat vagy verziószám tulajdonság használata"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr "IPN reguláris kifejezés"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Többször is előforduló IPN engedélyezése"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Azonos IPN használható legyen több alkatrészre is"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "IPN szerkesztésének engedélyezése"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr "IPN megváltoztatásánsak engedélyezése az alkatrész szerkesztése közben"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr "Alkatrészjegyzék adatok másolása"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Alkatrész másoláskor az alkatrészjegyzék adatokat is másoljuk alapból"
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr "Alkatrész paraméterek másolása"
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Alkatrész másoláskor a paramétereket is másoljuk alapból"
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr "Alkatrész teszt adatok másolása"
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr "Alkatrész másoláskor a tesztek adatait is másoljuk alapból"
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr "Kategória paraméter sablonok másolása"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr "Kategória paraméter sablonok másolása alkatrész létrehozásakor"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Sablon"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "Alkatrészek alapból sablon alkatrészek legyenek"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Gyártmány"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "Alkatrészeket alapból lehessen gyártani másik alkatrészekből"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Összetevő"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "Alkatrészek alapból használhatók összetevőként más alkatrészekhez"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Beszerezhető"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Alkatrészek alapból beszerezhetők legyenek"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Értékesíthető"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Alkatrészek alapból eladhatók legyenek"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Követésre kötelezett"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Alkatrészek alapból követésre kötelezettek legyenek"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Virtuális"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Alkatrészek alapból virtuálisak legyenek"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Importálás megjelenítése a nézetekben"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr "Import segéd megjelenítése néhány alkatrész nézetben"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Kapcsolódó alkatrészek megjelenítése"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr "Kezdeti készlet adatok"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr "Kezdeti készlet létrehozása új alkatrész felvételekor"
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr "Kezdeti beszállítói adatok"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr "Kezdeti beszállítói adatok létrehozása új alkatrész felvételekor"
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Alkatrész név megjelenítés formátuma"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Formátum az alkatrész név megjelenítéséhez"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr "Alkatrész kategória alapértelmezett ikon"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr "Alkatrész kategória alapértelmezett ikon (üres ha nincs)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr "Csak választható mértékegységek"
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr "A megadott mértékegység csak a beállított lehetőségekből legyen elfogadva"
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr "Áraknál használt tizedesjegyek min. száma"
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr "Tizedejegyek minimális száma az árak megjelenítésekor"
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr "Áraknál használt tizedesjegyek max. száma"
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr "Tizedejegyek maximális száma az árak megjelenítésekor"
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr "Beszállítói árazás használata"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr "Beszállítói ársávok megjelenítése az általános árkalkulációkban"
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr "Beszerzési előzmények felülbírálása"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr "Beszerzési árelőzmények felülírják a beszállítói ársávokat"
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr "Készlet tétel ár használata"
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr "A kézzel bevitt készlet tétel árak használata az árszámításokhoz"
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr "Készlet tétel ár kora"
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr "Az ennyi napnál régebbi készlet tételek kizárása az árszámításból"
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr "Alkatrészváltozat árak használata"
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr "Alkatrészváltozat árak megjelenítése az általános árkalkulációkban"
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr "Csak az aktív változatokat"
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr "Csak az aktív alkatrészváltozatok használata az árazásban"
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr "Árazás újraszámítás gyakoriság"
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr "Árak automatikus frissítése ennyi nap után"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Belső árak"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr "Alkatrészekhez belső ár engedélyezése"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr "Belső ár felülbírálása"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr "Ha elérhetőek az árkalkulációkban a belső árak lesznek alapul véve"
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Címke nyomtatás engedélyezése"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Címke nyomtatás engedélyezése a web felületről"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "Címke kép DPI"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr "Képek felbontása amik átadásra kerülnek címkenyomtató pluginoknak"
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Riportok engedélyezése"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Riportok előállításának engedélyezése"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Debug mód"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Riportok előállítása HTML formátumban (hibakereséshez)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Lapméret"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Alapértelmezett lapméret a PDF riportokhoz"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Teszt riportok engedélyezése"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Teszt riportok előállításának engedélyezése"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr "Teszt riportok hozzáadása"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr "Teszt riport nyomtatáskor egy másolat hozzáadása a készlet tételhez"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr "Globálisan egyedi sorozatszámok"
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr "A sorozatszámoknak egyedinek kell lennie a teljes készletre vonatkozóan"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "Sorozatszámok automatikus kitöltése"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr "Sorozatszámok automatikus kitöltése a formokon"
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr "Kimerült készlet törlése"
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Determines default behaviour when a stock item is depleted"
+msgid "Determines default behavior when a stock item is depleted"
 msgstr "Alapértelmezett művelet mikor a készlet tétel elfogy"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr "Batch kód sablon"
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr "Sablon a készlet tételekhez alapértelmezett batch kódok előállításához"
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr "Készlet lejárata"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr "Készlet lejárat kezelésének engedélyezése"
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr "Lejárt készlet értékesítése"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr "Lejárt készlet értékesítésének engedélyezése"
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr "Álló készlet ideje"
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr "Napok száma amennyivel a lejárat előtt a készlet tételeket állottnak vesszük"
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr "Lejárt készlet gyártása"
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr "Gyártás engedélyezése lejárt készletből"
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr "Készlet tulajdonosok kezelése"
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr "Tulajdonosok kezelésének engedélyezése a készlet helyekre és tételekre"
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr "Hely alapértelmezett ikon"
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr "Hely alapértelmezett ikon (üres ha nincs)"
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr "Beépített készlet megjelenítése"
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr "Beépített készlet tételek megjelenítése a készlet táblákban"
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr "Gyártási utasítás azonosító minta"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr "Szükséges minta a gyártási utasítás azonosító mező előállításához"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Felelős"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+#, fuzzy
+#| msgid "Only salable parts can be assigned to a sales order"
+msgid "A responsible owner must be assigned to each order"
+msgstr "Csak értékesíthető alkatrészeket lehet vevői rendeléshez adni"
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr "Visszavétel engedélyezése"
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr "Visszavételek engedélyezése a felületen"
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr "Visszavétel azonosító minta"
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr "Befejezett visszavétel szerkesztése"
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr "Visszavétel szerkesztésének engedélyezése befejezés után"
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr "Vevői rendelés azonosító minta"
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr "Szükséges minta a vevői rendelés azonosító mező előállításához"
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr "Vevői rendeléshez alapértelmezett szállítmány"
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr "Szállítmány automatikus létrehozása az új vevő rendelésekhez"
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr "Befejezett vevői rendelés szerkesztése"
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr "Vevői rendelések szerkesztésének engedélyezése szállítás vagy befejezés után"
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr "Beszerzési rendelés azonosító minta"
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr "Szükséges minta a beszerzési rendelés azonosító mező előállításához"
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr "Befejezett beszerzési rendelés szerkesztése"
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr "Beszérzési rendelések szerkesztésének engedélyezése kiküldés vagy befejezés után"
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr "Beszerzési rendelések automatikus befejezése"
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr "A beszerzési rendelés automatikus befejezése ha minden sortétel beérkezett"
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Elfelejtett jelszó engedélyezése"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Regisztráció engedélyezése"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr "Felhaszálók önkéntes regisztrációjának engedélyezése a bejelentkező oldalon"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "SSO engedélyezése"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "SSO engedélyezése a bejelentkező oldalon"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr "SSO regisztráció engedélyezése"
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr "Felhaszálók önkéntes regisztrációjának engedélyezése SSO-n keresztül a bejelentkező oldalon"
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Email szükséges"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr "Kötelező email megadás regisztrációkor"
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr "SSO felhasználók automatikus kitöltése"
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Felhasználó adatainak automatikus kitöltése az SSO fiókadatokból"
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "Email kétszer"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr "Regisztráláskor kétszer kérdezze a felhasználó email címét"
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Jelszó kétszer"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr "Regisztráláskor kétszer kérdezze a felhasználó jelszavát"
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Engedélyezett domainek"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr "Feliratkozás korlátozása megadott domain-ekre (vesszővel elválasztva, @-al kezdve)"
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr "Csoport regisztráláskor"
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr "Csoport amihez a frissen regisztrált felhasználók hozzá lesznek rendelve"
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "Többfaktoros hitelesítés kényszerítése"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk."
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr "Pluginok ellenőrzése indításkor"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr "Ellenőrizze induláskor hogy minden plugin telepítve van - engedélyezd konténer környezetben (docker)"
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr "Plugin frissítések ellenőrzése"
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr "Frissítések periódikus ellenőrzésének engedélyezése a telepített pluginokra"
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr "URL integráció engedélyezése"
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr "URL útvonalalak hozzáadásának engedélyezése a pluginok számára"
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr "Navigációs integráció engedélyezése"
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr "Navigációs integráció engedélyezése a pluginok számára"
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr "App integráció engedélyezése"
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr "App hozzáadásának engedélyezése a pluginok számára"
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr "Ütemezés integráció engedélyezése"
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Háttérben futó feladatok hozzáadásának engedélyezése a pluginok számára"
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr "Esemény integráció engedélyezése"
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr "Belső eseményekre reagálás engedélyezése a pluginok számára"
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr "Projektszámok engedélyezése"
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr "Projektszámok használatának engedélyezése a projektek követéséhez"
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr "Leltár funkció"
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr "Leltár funkció engedélyezése a készlet mennyiség és érték számításhoz"
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr "Külső helyek nélkül"
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr "Külső helyek figyelmen kívül hagyása a leltár számításoknál"
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr "Automatikus leltár időpontja"
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr "Hány naponta történjen automatikus leltár (nulla egyenlő tiltva)"
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr "Riport törlési gyakoriság"
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr "Régi leltár riportok törlése hány naponta történjen"
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr "Felhasználók teljes nevének megjelenítése"
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr "Felhasználói név helyett a felhasználók teljes neve jelenik meg"
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Beállítások kulcs (egyedinek kell lennie, nem kis- nagybetű érzékeny"
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr "Inaktív alkatrészek elrejtése"
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr "Nem aktív alkatrészek elrejtése a kezdőlapon"
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "Értesítésre beállított alkatrészek megjelenítése"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr "Alkatrész értesítések megjelenítése a főoldalon"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "Értesítésre beállított kategóriák megjelenítése"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr "Alkatrész kategória értesítések megjelenítése a főoldalon"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "Legújabb alkatrészek megjelenítése"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "Legújabb alkatrészek megjelenítése a főoldalon"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Show unvalidated BOMs"
+msgid "Show invalid BOMs"
 msgstr "Jóváhagyás nélküli alkatrészjegyzékek megjelenítése"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Jóváhagyásra váró alkatrészjegyzékek megjelenítése a főoldalon"
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr "Legfrissebb készlet változások megjelenítése"
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr "Legutóbb megváltozott alkatrészek megjelenítése a főoldalon"
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr "Alacsony készlet megjelenítése"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr "Alacsony készletek megjelenítése a főoldalon"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr "Kimerült készlet megjelenítése"
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr "Kimerült készletek megjelenítése a főoldalon"
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr "Gyártáshoz szükséges készlet megjelenítése"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Gyártáshoz szükséges készletek megjelenítése a főoldalon"
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr "Lejárt készlet megjelenítése"
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr "Lejárt készletek megjelenítése a főoldalon"
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr "Állott készlet megjelenítése"
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr "Álló készletek megjelenítése a főoldalon"
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr "Függő gyártások megjelenítése"
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon"
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr "Késésben lévő gyártások megjelenítése"
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr "Késésben lévő gyártások megjelenítése a főoldalon"
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr "Kintlévő beszerzési rendelések megjelenítése"
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon"
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr "Késésben lévő megrendelések megjelenítése"
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr "Késésben lévő megrendelések megjelenítése a főoldalon"
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr "Függő vevői rendelések megjelenítése"
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr "Függő vevői rendelések megjelenítése a főoldalon"
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr "Késésben lévő vevői rendelések megjelenítése"
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr "Késésben lévő vevői rendelések megjelenítése a főoldalon"
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr "Függő vevői szállítmányok megjelenítése"
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr "Folyamatban lévő vevői szállítmányok megjelenítése a főoldalon"
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Hírek megjelenítése"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr "Hírek megjelenítése a főoldalon"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr "Beágyazott címke megjelenítés"
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "PDF címkék megjelenítése a böngészőben letöltés helyett"
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr "Alapértelmezett címkenyomtató"
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr "Melyik címkenyomtató legyen az alapértelmezett"
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr "Beágyazott riport megjelenítés"
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "PDF riport megjelenítése a böngészőben letöltés helyett"
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Alkatrészek keresése"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr "Alkatrészek megjelenítése a keresési előnézetben"
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr "Beszállítói alkatrészek keresése"
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr "Beszállítói alkatrészek megjelenítése a keresési előnézetben"
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr "Gyártói alkatrészek keresése"
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr "Gyártói alkatrészek megjelenítése a keresési előnézetben"
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr "Inaktív alkatrészek elrejtése"
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr "Inaktív alkatrészek kihagyása a keresési előnézet találataiból"
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr "Kategóriák keresése"
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr "Alkatrész kategóriák megjelenítése a keresési előnézetben"
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr "Készlet keresése"
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr "Készlet tételek megjelenítése a keresési előnézetben"
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr "Nem elérhető készlet tételek elrejtése"
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr "Nem elérhető készlet kihagyása a keresési előnézet találataiból"
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr "Helyek keresése"
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr "Készlet helyek megjelenítése a keresési előnézetben"
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr "Cégek keresése"
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr "Cégek megjelenítése a keresési előnézetben"
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr "Gyártási utasítások keresése"
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr "Gyártási utasítások megjelenítése a keresés előnézet ablakban"
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr "Beszerzési rendelések keresése"
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr "Beszerzési rendelések megjelenítése a keresési előnézetben"
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Inaktív beszerzési rendelések kihagyása"
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr "Inaktív beszerzési rendelések kihagyása a keresési előnézet találataiból"
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr "Vevői rendelések keresése"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr "Vevői rendelések megjelenítése a keresési előnézetben"
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr "Inaktív vevői rendelések kihagyása"
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Inaktív vevői rendelések kihagyása a keresési előnézet találataiból"
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr "Visszavétel keresése"
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr "Visszavételek megjelenítése a keresés előnézet ablakban"
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr "Inaktív visszavételek kihagyása"
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr "Inaktív visszavételek kihagyása a keresési előnézet találataiból"
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr "Keresési előnézet eredményei"
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr "A keresési előnézetben megjelenítendő eredmények száma szekciónként"
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr "Regex keresés"
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr "Reguláris kifejezések engedélyezése a keresésekben"
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr "Teljes szó keresés"
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr "A keresések csak teljes szóra egyező találatokat adjanak"
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "Mennyiség megjelenítése a formokon"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr "Rendelkezésre álló alkatrész mennyiség megjelenítése néhány formon"
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr "ESC billentyű zárja be a formot"
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr "ESC billentyű használata a modális formok bezárásához"
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr "Rögzített menüsor"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr "A menü pozíciója mindig rögzítve a lap tetején"
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Dátum formátum"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr "Preferált dátum formátum a dátumok kijelzésekor"
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Alkatrész ütemezés"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr "Alkatrész ütemezési információk megjelenítése"
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr "Alkatrész leltár"
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr "Alkatrész leltár információk megjelenítése (ha a leltár funkció engedélyezett)"
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr "Táblázati szöveg hossz"
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr "Maximális szöveg hossz ami megjelenhet a táblázatokban"
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr "Alapértelmezett alkatrész címke sablon"
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr "Az alapértelmezetten kiválasztott alkatrész címke sablon"
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr "Alapértelmezett készlet címke sablon"
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr "Az alapértelmezetten kiválasztott készlet címke sablon"
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr "Alapértelmezett készlethely címke sablon"
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr "Az alapértelmezetten kiválasztott készlethely címke sablon"
 
-#: common/models.py:2410
+#: common/models.py:2462
+#, fuzzy
+#| msgid "Default stock location label template"
+msgid "Default build line label template"
+msgstr "Alapértelmezett készlethely címke sablon"
+
+#: common/models.py:2464
+#, fuzzy
+#| msgid "The stock item label template to be automatically selected"
+msgid "The build line label template to be automatically selected"
+msgstr "Az alapértelmezetten kiválasztott készlet címke sablon"
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr "Hibariportok fogadása"
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr "Értesítések fogadása a rendszerhibákról"
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr "Ársáv mennyiség"
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Ár"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr "Egységár egy meghatározott mennyiség esetén"
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr "Végpont"
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr "Végpont ahol ez a webhook érkezik"
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr "Webhook neve"
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Aktív"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr "Aktív-e ez a webhook"
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr "Token"
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr "Token a hozzáféréshez"
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Titok"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr "Megosztott titok a HMAC-hoz"
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "Üzenet azonosító"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr "Egyedi azonosító ehhez az üzenethez"
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr "Kiszolgáló"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr "Kiszolgáló ahonnan ez az üzenet érkezett"
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr "Fejléc"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr "Üzenet fejléce"
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr "Törzs"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr "Üzenet törzse"
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr "Végpont amin ez az üzenet érkezett"
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr "Dolgozott rajta"
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr "Befejeződött a munka ezzel az üzenettel?"
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr "Id"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr "Cím"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr "Közzétéve"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "Szerző"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr "Összefoglaló"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr "Elolvasva"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr "Elolvasva?"
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3667,31 +3704,31 @@ msgstr "Elolvasva?"
 msgid "Image"
 msgstr "Kép"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr "Képfájl"
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr "A mértékegységnek valós azonosítónak kell lennie"
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr "Egység neve"
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr "Szimbólum"
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr "Opcionális mértékegység szimbólum"
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr "Definíció"
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr "Mértékegység definíció"
 
@@ -3858,7 +3895,7 @@ msgid "Contact email address"
 msgstr "Kapcsolattartó email címe"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3902,7 +3939,7 @@ msgstr "Cég által használt alapértelmezett pénznem"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Cég"
@@ -4067,7 +4104,7 @@ msgid "Parameter value"
 msgstr "Paraméter értéke"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4091,7 +4128,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "Kapcsolódó gyártói alkatrésznek ugyanarra a kiindulási alkatrészre kell hivatkoznia"
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4127,7 +4164,7 @@ msgid "Supplier part description"
 msgstr "Beszállítói alkatrész leírása"
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4137,11 +4174,11 @@ msgstr "Beszállítói alkatrész leírása"
 msgid "Note"
 msgstr "Megjegyzés"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "alap költség"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Minimális díj (pl. tárolási díj)"
 
@@ -4171,7 +4208,7 @@ msgstr "Csomagolási mennyiség"
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr "Egy csomagban kiszállítható mennyiség, hagyd üresen az egyedi tételeknél."
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "többszörös"
 
@@ -4249,8 +4286,8 @@ msgstr "Kép letöltése URL-ről"
 msgid "Delete image"
 msgstr "Kép törlése"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4267,7 +4304,7 @@ msgstr "Vevő"
 msgid "Uses default currency"
 msgstr "Alapértelmezett pénznemet használja"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4347,7 +4384,7 @@ msgstr "Beszállítói készlet"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Beszerzési rendelések"
 
@@ -4370,7 +4407,7 @@ msgstr "Új beszerzési rendelés"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Vevői rendelések"
 
@@ -4395,7 +4432,7 @@ msgstr "Hozzárendelt készlet"
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr "Visszavételek"
 
@@ -4623,7 +4660,7 @@ msgstr "Alkatrész elérhetőség frissítése"
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Készlet tételek"
 
@@ -4676,7 +4713,7 @@ msgstr "Címke"
 msgid "Label template file"
 msgstr "Címke sablon fájl"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4702,7 +4739,7 @@ msgstr "Magasság [mm]"
 msgid "Label height, specified in mm"
 msgstr "Címke magassága, mm-ben"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Fájlnév minta"
 
@@ -4716,8 +4753,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr "Lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)"
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Szűrők"
 
@@ -4848,7 +4885,7 @@ msgstr "Teljes ár"
 msgid "No matching purchase order found"
 msgstr "Nincs egyező beszerzési rendelés"
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4862,7 +4899,7 @@ msgstr "Nincs egyező beszerzési rendelés"
 msgid "Purchase Order"
 msgstr "Beszerzési rendelés"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4875,184 +4912,184 @@ msgstr "Visszavétel"
 msgid "Total price for this order"
 msgstr "A rendelés teljes ára"
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr "Rendelés pénzneme"
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr "Megrendeléshez használt pénznem (hagyd üresen a cégnél alapértelmezetthez)"
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr "A kapcsolattartó nem egyezik a kiválasztott céggel"
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr "Rendelés leírása (opcionális)"
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr "Válassz projektszámot ehhez a rendeléshez"
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Link külső weboldalra"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr "Várt teljesítési dátuma a megrendelésnek. Ezután már késésben lévőnek számít majd."
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Készítette"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Felhasználó vagy csoport aki felelőse ennek a rendelésnek"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr "Kapcsolattartó ehhez a rendeléshez"
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr "Cég címei ehhez a rendeléshez"
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Rendelés azonosító"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr "Beszerzési rendelés állapota"
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "Cég akitől a tételek beszerzésre kerülnek"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr "Beszállítói azonosító"
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr "Beszállítói rendelés azonosító kód"
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr "érkeztette"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr "Kiállítás dátuma"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr "Kiállítás dátuma"
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr "Rendelés teljesítési dátuma"
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr "Az alkatrész beszállítója meg kell egyezzen a beszerzési rendelés beszállítójával"
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr "Mennyiség pozitív kell legyen"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "Cég akinek a tételek értékesítésre kerülnek"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr "Vevői azonosító "
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr "Megrendelés azonosító kódja a vevőnél"
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Kiszállítás dátuma"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr "szállította"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr "A rendelés nem teljesíthető mivel nincs hozzárendelve alkatrész"
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr "Csak nyitott rendelés jelölhető késznek"
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr "A rendelés nem jelölhető késznek mivel függő szállítmányok vannak"
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr "A rendelés nem jelölhető késznek mivel nem teljesített sortételek vannak"
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr "Tétel mennyiség"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr "Sortétel azonosító"
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr "Sortétel megjegyzései"
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr "Cél dátuma ennek a sortételnek (hagyd üresen a rendelés céldátum használatához)"
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr "Sortétel leírása (opcionális)"
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr "Kontextus"
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr "További kontextus ehhez a sorhoz"
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr "Egységár"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr "Beszállítói alkatrésznek egyeznie kell a beszállítóval"
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr "törölve"
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr "Rendelés"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr "Beszállítói alkatrész"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5062,341 +5099,341 @@ msgstr "Beszállítói alkatrész"
 msgid "Received"
 msgstr "Beérkezett"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr "Érkezett tételek száma"
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Beszerzési ár"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr "Beszerzési egységár"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "Mit szeretne a vevő hol tároljuk ezt az alkatrészt?"
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr "Virtuális alkatrészt nem lehet vevői rendeléshez adni"
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr "Csak értékesíthető alkatrészeket lehet vevői rendeléshez adni"
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "Eladási ár"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Eladási egységár"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr "Szállított mennyiség"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr "Szállítás dátuma"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr "Szállítási dátum"
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr "Kézbesítés dátuma"
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr "Ellenőrizte"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr "Felhasználó aki ellenőrizte ezt a szállítmányt"
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr "Szállítmány"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr "Szállítmány száma"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "Nyomkövetési szám"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr "Szállítmány nyomkövetési információ"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr "Számlaszám"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr "Hozzátartozó számla referencia száma"
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr "Szállítmány már elküldve"
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr "Szállítmány nem tartalmaz foglalt készlet tételeket"
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr "Készlet tétel nincs hozzárendelve"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr "Nem foglalható készlet egy másik fajta alkatrész sortételéhez"
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr "Nem foglalható készlet egy olyan sorhoz amiben nincs alkatrész"
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "A lefoglalandó mennyiség nem haladhatja meg a készlet mennyiségét"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen"
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr "Vevői rendelés nem egyezik a szállítmánnyal"
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr "Szállítmány nem egyezik a vevői rendeléssel"
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr "Sor"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr "Vevői rendelés szállítmány azonosító"
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr "Tétel"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr "Válaszd ki a foglalásra szánt készlet tételt"
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr "Készlet foglalási mennyiség megadása"
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr "Visszavétel azonosító"
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr "Cég akitől a tételek visszavételre kerülnek"
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr "Visszavétel állapota"
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr "Csak szériaszámos tételek rendelhetők visszaszállítási utasításhoz"
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr "Válaszd ki a vevőtől visszavenni kívánt tételt"
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr "Visszavétel dátuma"
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr "Mikor lett visszavéve a tétel"
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr "Kimenetel"
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr "Sortétel végső kimenetele"
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr "Sortétel visszaküldésének vagy javításának költsége"
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr "A rendelést nem lehet törölni"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr "Rendelés lezárása teljesítetlen sortételek esetén is"
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr "A rendelésben teljesítetlen sortételek vannak"
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr "A rendelés nem nyitott"
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr "Beszérzési ár pénzneme"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr "Beszállítói alkatrészt meg kell adni"
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr "Beszerzési rendelést meg kell adni"
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr "A beszállítónak egyeznie kell a beszerzési rendelésben lévővel"
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr "A beszerzési rendelésnek egyeznie kell a beszállítóval"
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr "Sortétel"
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr "Sortétel nem egyezik a beszerzési megrendeléssel"
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr "Válassz cél helyet a beérkezett tételeknek"
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr "Írd be a batch kódját a beérkezett tételeknek"
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Írd be a sorozatszámokat a beérkezett tételekhez"
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Vonalkód"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr "Beolvasott vonalkód"
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr "Ez a vonalkód már használva van"
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Egész számú mennyiség szükséges az egyedi követésre kötelezett alkatrészeknél"
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr "Sortételt meg kell adni"
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr "A cél helyet kötelező megadni"
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr "Megadott vonalkódoknak egyedieknek kel lenniük"
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr "Eladási ár pénzneme"
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr "Nincsenek szállítmány részletek megadva"
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr "Sortétel nincs hozzárendelve ehhez a rendeléshez"
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr "Mennyiség pozitív kell legyen"
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr "Írd be a sorozatszámokat a kiosztáshoz"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr "Szállítmány kiszállítva"
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr "Szállítmány nincs hozzárendelve ehhez a rendeléshez"
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr "Nincs találat a következő sorozatszámokra"
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr "A következő sorozatszámok már ki lettek osztva"
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr "Visszavétel sortétel"
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr "Sortétel nem egyezik a visszavétellel"
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr "A sortétel már beérkezett"
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr "Csak folyamatban lévő megrendelés tételeit lehet bevételezni"
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr "Sortétel pénzneme"
 
@@ -5800,12 +5837,12 @@ msgstr "A {part} egységára {price}-ra módosítva"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "A {part} alkatrész módosított egységára {price} mennyisége pedig {qty}"
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "Alkatrész ID"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Alkatrész neve"
@@ -5814,20 +5851,20 @@ msgstr "Alkatrész neve"
 msgid "Part Description"
 msgstr "Alkatrész leírása"
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr "IPN"
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr "Változat"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Kulcsszavak"
@@ -5852,11 +5889,11 @@ msgstr "Alapértelmezett készlethely ID"
 msgid "Default Supplier ID"
 msgstr "Alapértelmezett beszállító ID"
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr "Ebből a sablonból"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "Minimális készlet"
 
@@ -5875,12 +5912,12 @@ msgstr "Felhasználva ebben"
 msgid "Building"
 msgstr "Gyártásban"
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr "Minimum költség"
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr "Maximum költség"
@@ -5898,7 +5935,7 @@ msgstr "Szülő neve"
 msgid "Category Path"
 msgstr "Kategória elérési út"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5906,7 +5943,7 @@ msgstr "Kategória elérési út"
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Alkatrészek"
 
@@ -5922,7 +5959,7 @@ msgstr "Alkatrészjegyzék tétel ID"
 msgid "Parent IPN"
 msgstr "Szülő IPN"
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr "Alkatrész IPN"
 
@@ -5938,92 +5975,92 @@ msgstr "Minimum ár"
 msgid "Maximum Price"
 msgstr "Maximum ár"
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr "Beérkező beszerzési rendelés"
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr "Kimenő vevői rendelés"
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr "Gyártással előállított készlet"
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr "A gyártási utasításhoz szükséges készlet"
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr "Érvényes"
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr "Teljes alkatrészjegyzék jóváhagyása"
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr "Ennek az opciónak ki kll lennie választva"
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Kategória"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "Alapértelmezett hely"
@@ -6037,363 +6074,363 @@ msgstr "Teljes készlet"
 msgid "Input quantity for price calculation"
 msgstr "Add meg a mennyiséget az árszámításhoz"
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Alkatrész kategória"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Alkatrész kategóriák"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Ebben a kategóriában lévő alkatrészek helye alapban"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr "Szerkezeti"
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr "A szerkezeti alkatrész kategóriákhoz nem lehet direktben alkatrészeket hozzáadni, csak az alkategóriáikhoz."
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr "Alapértelmezett kulcsszavak"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr "Ebben a kategóriában évő alkatrészek kulcsszavai alapban"
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr "Ikon"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr "Ikon (opcionális)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr "Nem lehet az alkatrészkategóriát szerkezeti kategóriává tenni, mert már vannak itt alkatrészek!"
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr "Hibás választás a szülő alkatrészre"
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr "Az '{self}' alkatrész nem használható a '{parent}' alkatrészjegyzékében (mert rekurzív lenne)"
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr "Az '{parent}' alkatrész szerepel a '{self}' alkatrészjegyzékében (rekurzív)"
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr "Az IPN belső cikkszámnak illeszkednie kell a {pattern} regex mintára"
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr "Létezik már készlet tétel ilyen a sorozatszámmal"
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "Azonos IPN nem engedélyezett az alkatrészekre, már létezik ilyen"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr "Ilyen nevű, IPN-ű és reviziójú alkatrész már létezik."
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr "Szerkezeti kategóriákhoz nem lehet alkatrészeket rendelni!"
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Alkatrész neve"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr "Sablon-e"
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr "Ez egy sablon alkatrész?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr "Ez az alkatrész egy másik változata?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr "Alkatrész leírása (opcionális)"
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr "Alkatrész kulcsszavak amik segítik a megjelenést a keresési eredményekben"
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "Alkatrész kategória"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr "Belső cikkszám"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr "Alkatrész változat vagy verziószám (pl. szín, hossz, revízió, stb.)"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr "Alapban hol tároljuk ezt az alkatrészt?"
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr "Alapértelmezett beszállító"
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr "Alapértelmezett beszállítói alkatrész"
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr "Alapértelmezett lejárat"
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Lejárati idő (napban) ennek az alkatrésznek a készleteire"
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr "Minimálisan megengedett készlet mennyiség"
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr "Alkatrész mértékegysége"
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr "Gyártható-e ez az alkatrész más alkatrészekből?"
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr "Felhasználható-e ez az alkatrész más alkatrészek gyártásához?"
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr "Kell-e külön követni az egyes példányait ennek az alkatrésznek?"
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Rendelhető-e ez az alkatrész egy külső beszállítótól?"
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr "Értékesíthető-e önmagában ez az alkatrész a vevőknek?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr "Aktív-e ez az alkatrész?"
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "Ez egy virtuális nem megfogható alkatrész, pl. szoftver vagy licenc?"
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr "Alkatrészjegyzék ellenőrző összeg"
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr "Tárolt alkatrészjegyzék ellenőrző összeg"
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr "Alkatrészjegyzéket ellenőrizte"
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr "Alkatrészjegyzék ellenőrzési dátuma"
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr "Létrehozó"
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr "Alkatrész felelőse"
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr "Utolsó leltár"
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr "Több értékesítése"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr "Árszámítások gyorstárazásához használt pénznem"
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr "Minimum alkatrészjegyzék költség"
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr "Összetevők minimum költsége"
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr "Maximum alkatrészjegyzék költség"
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr "Összetevők maximum költsége"
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr "Minimum beszerzési ár"
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr "Eddigi minimum beszerzési költség"
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr "Maximum beszerzési ár"
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr "Eddigi maximum beszerzési költség"
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr "Minimum belső ár"
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr "Minimum költség a belső ársávok alapján"
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr "Maximum belső ár"
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr "Maximum költség a belső ársávok alapján"
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr "Minimum beszállítói ár"
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr "Minimum alkatrész ár a beszállítóktól"
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr "Maximum beszállítói ár"
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr "Maximum alkatrész ár a beszállítóktól"
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr "Minimum alkatrészváltozat ár"
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr "Alkatrészváltozatok számolt minimum költsége"
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr "Maximum alkatrészváltozat ár"
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr "Alkatrészváltozatok számolt maximum költsége"
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr "Minimum költség felülbírálása"
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr "Maximum költség felülbírálása"
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr "Számított általános minimum költség"
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr "Számított általános maximum költség"
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr "Minimum eladási ár"
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr "Minimum eladási ár az ársávok alapján"
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr "Maximum eladási ár"
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr "Maximum eladási ár az ársávok alapján"
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr "Minimum eladási költség"
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr "Eddigi minimum eladási ár"
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr "Maximum eladási költség"
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr "Eddigi maximum eladási ár"
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr "Leltározható alkatrész"
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr "Tételszám"
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr "Egyedi készlet tételek száma a leltárkor"
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr "Teljes készlet a leltárkor"
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6405,330 +6442,330 @@ msgstr "Teljes készlet a leltárkor"
 msgid "Date"
 msgstr "Dátum"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr "Leltározva ekkor"
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr "További megjegyzések"
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr "Leltározta"
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr "Minimum készlet érték"
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr "Becsült minimum raktárkészlet érték"
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr "Maximum készlet érték"
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr "Becsült maximum raktárkészlet érték"
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr "Riport"
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr "Leltár riport fájl (generált)"
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr "Alkatrész szám"
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr "Leltározott alkatrészek száma"
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr "Felhasználó aki a leltár riportot kérte"
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr "Teszt sablont csak követésre kötelezett alkatrészhez lehet csinálni"
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr "Teszt név"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr "Add meg a teszt nevét"
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr "Teszt leírása"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr "Adj hozzá egy leírást ehhez a teszthez"
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr "Kötelező"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr "Szükséges-e hogy ez a teszt sikeres legyen?"
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr "Kötelező érték"
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően érték legyen rendelve?"
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr "Kötelező melléklet"
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően fájl melléklet legyen rendelve?"
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr "Jelölőnégyzet paraméternek nem lehet mértékegysége"
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr "Jelölőnégyzet paraméternek nem lehetnek választási lehetőségei"
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr "A lehetőségek egyediek kell legyenek"
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr "A paraméter sablon nevének egyedinek kell lennie"
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr "Paraméter neve"
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr "Paraméter mértékegysége"
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr "Paraméter leírása"
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr "Jelölőnégyzet"
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr "Ez a paraméter egy jelölőnégyzet?"
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr "Lehetőségek"
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr "Választható lehetőségek (vesszővel elválasztva)"
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr "Hibás választás a paraméterre"
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr "Szülő alkatrész"
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr "Paraméter sablon"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr "Adat"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr "Paraméter értéke"
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr "Alapértelmezett érték"
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr "Alapértelmezett paraméter érték"
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr "Alkatrész ID vagy alkatrész név"
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr "Egyedi alkatrész ID értéke"
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr "Alkatrész IPN érték"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr "Szint"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr "Alkatrészjegyzék szint"
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr "Szülő alkatrész kiválasztása"
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr "Al alkatrész"
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt"
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez"
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr "Ez az alkatrészjegyzék tétel opcionális"
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr "Ez az alkatrészjegyzék tétel fogyóeszköz (készlete nincs követve a gyártásban)"
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Többlet"
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Becsült gyártási veszteség (abszolút vagy százalékos)"
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr "Alkatrészjegyzék tétel azonosító"
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr "Alkatrészjegyzék tétel megjegyzései"
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr "Ellenőrző összeg"
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr "Alkatrészjegyzék sor ellenőrző összeg"
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr "Jóváhagyva"
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr "Ez a BOM tétel jóvá lett hagyva"
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr "Öröklődött"
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr "Ezt az alkatrészjegyzék tételt az alkatrész változatok alkatrészjegyzékei is öröklik"
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr "Változatok"
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr "Alkatrészváltozatok készlet tételei használhatók ehhez az alkatrészjegyzék tételhez"
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr "A mennyiség egész szám kell legyen a követésre kötelezett alkatrészek esetén"
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr "Al alkatrészt kötelező megadni"
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr "Alkatrészjegyzék tétel helyettesítő"
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr "A helyettesítő alkatrész nem lehet ugyanaz mint a fő alkatrész"
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr "Szülő alkatrészjegyzék tétel"
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr "Helyettesítő alkatrész"
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr "1.rész"
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr "2.rész"
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr "Válassz kapcsolódó alkatrészt"
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr "Alkatrész kapcsolat nem hozható létre önmagával"
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr "Már létezik duplikált alkatrész kapcsolat"
 
@@ -7206,7 +7243,7 @@ msgstr "Leltár információ hozzáadása"
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr "Leltár"
 
@@ -8058,7 +8095,7 @@ msgstr "Szegély"
 msgid "Print a border around each label"
 msgstr "Az egyes címkék körüli margó"
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr "Fekvő"
 
@@ -8229,7 +8266,7 @@ msgstr "Plugin"
 msgid "Method"
 msgstr "Módszer"
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr "Nincs szerző"
 
@@ -8395,111 +8432,111 @@ msgstr "Jogi információk"
 msgid "Letter"
 msgstr "„Letter” méret"
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr "Sablon neve"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr "Riport sablon fájl"
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr "Riport sablon leírása"
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr "Riport verziószáma (automatikusan nő)"
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr "Lapméret a PDF riportokhoz"
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr "Jelentés fekvő nézetben"
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr "Minta a riport fájlnevek előállításához"
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr "Riport sablon engedélyezve"
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr "Készlet lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)"
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr "Beépített tesztekkel együtt"
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr "Gyártmányba beépített készlet tételek teszt eredményeivel együtt"
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr "Gyártás szűrők"
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr "Gyártás lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok"
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr "Alkatrész szűrők"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr "Alkatrész lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok"
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr "Megrendelés lekérdezés szűrők"
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr "Vevő rendelés lekérdezés szűrők"
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr "Visszavétel lekérdezés szűrők"
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr "Részlet"
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr "Riport részlet fájl"
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr "Részlet fájl leírása"
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr "Eszköz"
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr "Riport asset fájl"
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr "Asset fájl leírása"
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr "készlethely lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)"
 
@@ -8686,60 +8723,60 @@ msgstr "Törlés ha kimerül"
 msgid "Expiry Date"
 msgstr "Lejárati dátum"
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr "Külső hely"
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr "Alkatrész fa"
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr "Lejárat előtt"
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr "Lejárat után"
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr "Állott"
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr "Mennyiség megadása kötelező"
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr "Egy érvényes alkatrészt meg kell adni"
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr "A megadott beszállítói alkatrész nem létezik"
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr "A beszállítói alkatrészhez van megadva csomagolási mennyiség, de a use_pack_size flag nincs beállítva"
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr "Sorozatszámot nem lehet megadni nem követésre kötelezett alkatrész esetén"
 
@@ -8763,7 +8800,7 @@ msgstr "Készlet hely"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Készlethelyek"
 
@@ -10072,7 +10109,7 @@ msgstr "Árfolyam"
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Törlés"
 
@@ -13249,7 +13286,7 @@ msgstr "Kivesz"
 msgid "Add Stock"
 msgstr "Készlet növelése"
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "Hozzáad"
 
@@ -13892,7 +13929,7 @@ msgstr "Értesítések megjelenítése"
 msgid "New Notifications"
 msgstr "Új értesítések"
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr "Admin"
 
@@ -14129,35 +14166,34 @@ msgstr "Token utolsó használata"
 msgid "Revoked"
 msgstr "Visszavonva"
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "Jogosultságok"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Csoport"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Nézet"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Jogosultság tételek megtekintéséhez"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Jogosultság tételek hozzáadásához"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Módosítás"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Jogosultság tételek szerkesztéséhez"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Jogosultság tételek törléséhez"
-
diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po
index 0a9db2ad2251..c5073ac09eea 100644
--- a/InvenTree/locale/id/LC_MESSAGES/django.po
+++ b/InvenTree/locale/id/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:52\n"
 "Last-Translator: \n"
 "Language-Team: Indonesian\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Nilai tidak tersedia"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -59,10 +59,10 @@ msgstr "Masukkan tanggal"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Domain surel yang diberikan tidak perbolehkan."
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Jumlah yang diberikan tidak valid"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Nomor seri kosong"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr ""
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Tidak ada nomor seri ditemukan"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Hapus tag-tag HTML dari nilai ini"
 
@@ -405,10 +405,10 @@ msgstr "Lampiran"
 msgid "Select file to attach"
 msgstr "Pilih file untuk dilampirkan"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Pilih file untuk dilampirkan"
 msgid "Link"
 msgstr "Tautan"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Tautan menuju URL eksternal"
@@ -436,10 +436,10 @@ msgstr "Komentar"
 msgid "File comment"
 msgstr "Komentar file"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr "Pilihan tidak valid"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Pilihan tidak valid"
 msgid "Name"
 msgstr "Nama"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Terjadi Kesalahan Server"
 msgid "An error has been logged by the server."
 msgstr "Sebuah kesalahan telah dicatat oleh server."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Harus berupa angka yang valid"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Dikembalikan"
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Tentang InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Pesanan harus dibatalkan sebelum dapat dihapus"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Order Produksi"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Order Produksi"
 
@@ -1008,17 +1008,21 @@ msgstr "Order Produksi"
 msgid "Invalid choice for parent build"
 msgstr "Pilihan produksi induk tidak valid"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Referensi Order Produksi"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Referensi Order Produksi"
 msgid "Reference"
 msgstr "Referensi"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Produksi Induk"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Produksi induk dari produksi ini"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "Produksi induk dari produksi ini"
 msgid "Part"
 msgstr "Bagian"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Pilih bagian untuk diproduksi"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Referensi Order Penjualan"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Order penjualan yang teralokasikan ke pesanan ini"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Lokasi Sumber"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Pilih dari lokasi mana stok akan diambil untuk produksi ini (kosongkan untuk mengambil stok dari mana pun)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Lokasi Tujuan"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Pilih lokasi di mana item selesai akan disimpan"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Jumlah Produksi"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Jumlah item stok yang akan dibuat"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Item selesai"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Jumlah stok item yang telah diselesaikan"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Status pembuatan"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Kode status pembuatan"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Kode Kelompok"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Kode kelompok untuk hasil produksi ini"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Tanggal Pembuatan"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Target tanggal selesai"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Target tanggal selesai produksi. Produksi akan menjadi terlambat setelah tanggal ini."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Tanggal selesai"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "diselesaikan oleh"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Diserahkan oleh"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Pengguna yang menyerahkan order ini"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr "Pengguna yang menyerahkan order ini"
 msgid "Responsible"
 msgstr "Penanggung Jawab"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr "Tautan eksternal"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Tidak ada hasil produksi yang ditentukan"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Hasil produksi sudah selesai"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Hasil produksi tidak sesuai dengan order produksi"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Jumlah harus lebih besar daripada nol"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr "Jumlah"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Item produksi harus menentukan hasil produksi karena bagian utama telah ditandai sebagai dapat dilacak"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Item stok teralokasikan terlalu banyak"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Jumlah yang dialokasikan harus lebih dari nol"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Jumlah harus 1 untuk stok dengan nomor seri"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr "Stok Item"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Sumber stok item"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Jumlah stok yang dialokasikan ke produksi"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Pasang ke"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Tujuan stok item"
 
@@ -1429,7 +1433,7 @@ msgstr "Jumlah bagian yang dapat dilacak harus berupa angka bulat"
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Jumlah harus angka bulat karena terdapat bagian yang dapat dilacak dalam daftar barang"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr "Alokasikan nomor seri secara otomatis"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Alokasikan item yang diperlukan dengan nomor seri yang sesuai secara otomatis"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "Nomor-nomor seri berikut sudah ada atau tidak valid"
 
@@ -1455,8 +1459,8 @@ msgstr "Nomor-nomor seri berikut sudah ada atau tidak valid"
 msgid "A list of build outputs must be provided"
 msgstr "Daftar hasil pesanan harus disediakan"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr "Lokasi hasil pesanan yang selesai"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr "Terima bahwa stok item tidak teralokasikan sepenuhnya ke pesanan ini"
 msgid "Required stock has not been fully allocated"
 msgstr "Stok yang diperlukan belum teralokasikan sepenuhnya"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Terima Tidak Selesai"
 
@@ -1610,7 +1614,7 @@ msgstr "bom_item.part harus mengarah ke bagian yang sesuai dengan order produksi
 msgid "Item must be in stock"
 msgstr "Item harus tersedia dalam stok"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Jumlah tersedia ({q}) terlampaui"
@@ -1623,7 +1627,7 @@ msgstr "Hasil produksi harus ditentukan untuk mengalokasikan bagian yang terlaca
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "Hasil produksi tidak dapat ditentukan untuk alokasi barang yang tidak terlacak"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "Item yang dialokasikan harus disediakan"
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "Item tagihan material"
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "Stok dibutuhkan untuk order produksi"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1562 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Penanggung Jawab"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Surel diperlukan"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3690,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3881,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3925,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4090,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4114,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4150,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4160,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4194,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4272,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4290,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4370,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4393,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4418,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4646,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4699,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4725,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4739,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4871,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4885,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4898,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5085,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5823,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5837,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5875,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5898,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5921,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5929,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5945,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5961,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6060,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6428,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7229,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8081,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8252,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8418,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8709,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8786,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10095,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13272,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13915,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14152,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index ff117843a47a..8a955d5e65ef 100644
--- a/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Italian\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Nessun valore specificato"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Impossibile convertire {original} in {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Quantità fornita non valida"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Quantità fornita non valida ({exc})"
@@ -59,10 +59,10 @@ msgstr "Inserisci la data"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "L'indirizzo di posta elettronica fornito non è approvato."
 msgid "Registration is disabled."
 msgstr "La registrazione è disabilitata."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Quantità inserita non valida"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Numero seriale vuoto"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Seriale Duplicato"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Intervallo di gruppo non valido: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "L'intervallo di gruppo {group} supera la quantità consentita ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Sequenza di gruppo non valida: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Nessun numero di serie trovato"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Il numero di numeri di serie univoci ({len(serials)}) deve corrispondere alla quantità ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Rimuovi i tag HTML da questo valore"
 
@@ -405,10 +405,10 @@ msgstr "Allegato"
 msgid "Select file to attach"
 msgstr "Seleziona file da allegare"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Seleziona file da allegare"
 msgid "Link"
 msgstr "Collegamento"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Link a URL esterno"
@@ -436,10 +436,10 @@ msgstr "Commento"
 msgid "File comment"
 msgstr "Commento del file"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Nomi duplicati non possono esistere sotto lo stesso genitore"
 msgid "Invalid choice"
 msgstr "Scelta non valida"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Scelta non valida"
 msgid "Name"
 msgstr "Nome"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Errore del server"
 msgid "An error has been logged by the server."
 msgstr "Un errore è stato loggato dal server."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Deve essere un numero valido"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Reso"
 msgid "In Progress"
 msgstr "In corso"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Informazioni Su InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "La produzione deve essere annullata prima di poter essere eliminata"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Consumabile"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Ordine di Produzione"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Ordini di Produzione"
 
@@ -1008,17 +1008,23 @@ msgstr "Ordini di Produzione"
 msgid "Invalid choice for parent build"
 msgstr "Scelta non valida per la produzione genitore"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+#, fuzzy
+#| msgid "Purchase order must be specified"
+msgid "Responsible user or group must be specified"
+msgstr "L'ordine di acquisto deve essere specificato"
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "L'ordine di costruzione della parte non può essere cambiata"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Riferimento Ordine Di Produzione"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1038,27 @@ msgstr "Riferimento Ordine Di Produzione"
 msgid "Reference"
 msgstr "Riferimento"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Breve descrizione della build (facoltativo)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Produzione Genitore"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Ordine di produzione a cui questa produzione viene assegnata"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1102,107 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata"
 msgid "Part"
 msgstr "Articolo"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Selezionare parte da produrre"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Numero di riferimento ordine di vendita"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Ordine di vendita a cui questa produzione viene assegnata"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Posizione Di Origine"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Seleziona la posizione da cui prelevare la giacenza (lasciare vuoto per prelevare da qualsiasi posizione di magazzino)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Posizione Della Destinazione"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Seleziona il luogo in cui gli articoli completati saranno immagazzinati"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Quantità Produzione"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Numero di articoli da costruire"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Articoli completati"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Numero di articoli di magazzino che sono stati completati"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Stato Produzione"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Codice stato di produzione"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Codice Lotto"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Codice del lotto per questa produzione"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Data di creazione"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Data completamento obiettivo"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Data di completamento della produzione. Dopo tale data la produzione sarà in ritardo."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Data di completamento"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "Completato da"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Rilasciato da"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Utente che ha emesso questo ordine di costruzione"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1213,11 @@ msgstr "Utente che ha emesso questo ordine di costruzione"
 msgid "Responsible"
 msgstr "Responsabile"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Utente o gruppo responsabile di questo ordine di produzione"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1229,16 @@ msgstr "Utente o gruppo responsabile di questo ordine di produzione"
 msgid "External Link"
 msgstr "Collegamento esterno"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Priorità di produzione"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Priorità di questo ordine di produzione"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1248,57 @@ msgstr "Priorità di questo ordine di produzione"
 msgid "Project Code"
 msgstr "Codice del progetto"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Codice del progetto per questo ordine di produzione"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "L'ordine di produzione {build} è stato completato"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "L'ordine di produzione è stato completato"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Nessun output di produzione specificato"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "La produzione è stata completata"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "L'output della produzione non corrisponde all'ordine di compilazione"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "La quantità deve essere maggiore di zero"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "La quantità non può essere maggiore della quantità in uscita"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Crea oggetto"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1340,37 @@ msgstr "Crea oggetto"
 msgid "Quantity"
 msgstr "Quantità"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Quantità richiesta per l'ordine di costruzione"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "L'elemento di compilazione deve specificare un output poiché la parte principale è contrassegnata come rintracciabile"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "La quantità assegnata ({q}) non deve essere maggiore della quantità disponibile ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "L'articolo in giacenza è sovrallocato"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "La quantità di assegnazione deve essere maggiore di zero"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "La quantità deve essere 1 per lo stock serializzato"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "L'articolo in stock selezionato non corrisponde alla voce nella BOM"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1386,19 @@ msgstr "L'articolo in stock selezionato non corrisponde alla voce nella BOM"
 msgid "Stock Item"
 msgstr "Articoli in magazzino"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Origine giacenza articolo"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Quantità di magazzino da assegnare per la produzione"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Installa in"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Destinazione articolo in giacenza"
 
@@ -1429,7 +1435,7 @@ msgstr "Quantità totale richiesta per articoli rintracciabili"
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Quantità totale richiesta, poiché la fattura dei materiali contiene articoli rintracciabili"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1453,7 @@ msgstr "Numeri di Serie Assegnazione automatica"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Assegna automaticamente gli articoli richiesti con i numeri di serie corrispondenti"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "I seguenti numeri di serie sono già esistenti o non sono validi"
 
@@ -1455,8 +1461,8 @@ msgstr "I seguenti numeri di serie sono già esistenti o non sono validi"
 msgid "A list of build outputs must be provided"
 msgstr "Deve essere fornito un elenco dei risultati di produzione"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1502,8 @@ msgid "Location for completed build outputs"
 msgstr "Posizione per gli output di build completati"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1576,7 @@ msgstr "Accetta che gli elementi in giacenza non sono stati completamente assegn
 msgid "Required stock has not been fully allocated"
 msgstr "La giacenza richiesta non è stata completamente assegnata"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Accetta Incompleta"
 
@@ -1610,7 +1616,7 @@ msgstr "gli elementi degli articoli della distinta base devono puntare alla stes
 msgid "Item must be in stock"
 msgstr "L'articolo deve essere disponibile"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Quantità disponibile ({q}) superata"
@@ -1623,7 +1629,7 @@ msgstr "L'output di produzione deve essere specificato per l'ubicazione delle pa
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "L'output di produzione non deve essere specificato per l'ubicazione delle parti non tracciate"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "Deve essere indicata l'allocazione dell'articolo"
 
@@ -1663,8 +1669,8 @@ msgstr "Articoli Opzionali"
 msgid "Allocate optional BOM items to build order"
 msgstr "Assegna gli elementi opzionali della distinta base all'ordine di produzione"
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "Distinta base (Bom)"
 
@@ -1693,15 +1699,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr "Disponibilità in magazzino"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "Giacenza richiesta per l'ordine di produzione"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr "Ordine di produzione in ritardo"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr "L'ordine di produzione {bo} è in ritardo"
@@ -1818,8 +1824,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Lo stock non è stato completamente assegnato a questo ordine di produzione"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1862,8 @@ msgid "Completed Outputs"
 msgstr "Outputs Completati"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1913,7 @@ msgstr "Risorse di magazzino"
 msgid "Stock can be taken from any available location."
 msgstr "Lo stock può essere prelevato da qualsiasi posizione disponibile."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Destinazione"
@@ -2121,1542 +2127,1570 @@ msgstr "Descrizione del progetto"
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "Valore impostazioni"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "Il valore specificato non è un opzione valida"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "Il valore deve essere un valore booleano"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "Il valore deve essere un intero"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "La stringa chiave deve essere univoca"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Nessun gruppo"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Un dominio vuoto non è consentito."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Nome dominio non valido: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Riavvio richiesto"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "È stata modificata un'impostazione che richiede un riavvio del server"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "Nome Istanza Del Server"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr "Descrittore stringa per l'istanza del server"
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr "Utilizza nome istanza"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr "Usa il nome dell'istanza nella barra del titolo"
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr "Limita visualizzazione `Informazioni`"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr "Mostra la modalità `Informazioni` solo ai superusers"
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Nome azienda"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Nome interno dell'azienda"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "URL Base"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "URL di base per l'istanza del server"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Valuta predefinita"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "giorni"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Scarica dall'URL"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Consenti il download di immagini e file remoti da URL esterno"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr "Limite Dimensione Download"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr "Dimensione massima consentita per il download dell'immagine remota"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr "User-agent utilizzato per scaricare dall'URL"
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr "Consenti di sovrascrivere l'user-agent utilizzato per scaricare immagini e file da URL esterno (lasciare vuoto per il predefinito)"
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Richiesta conferma"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Richiede una conferma esplicita dell'utente per una determinata azione."
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr "Profondità livelli"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr "Profondità predefinita per la visualizzazione ad albero. I livelli più in alto possono essere caricati più lentamente quando necessari."
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr "Aggiorna intervallo di controllo"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr "Quanto spesso controllare gli aggiornamenti (impostare a zero per disabilitare)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Backup automatico"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Abilita il backup automatico di database e file multimediali"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Intervallo Di Backup Automatico"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr "Definisci i giorni intercorrenti tra un backup automatico e l'altro"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr "I risultati delle attività in background verranno eliminati dopo un determinato numero di giorni"
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr "I log di errore verranno eliminati dopo il numero specificato di giorni"
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr "Le notifiche dell'utente verranno eliminate dopo il numero di giorni specificato"
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Supporto Codice A Barre"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr "Codice a barre inserito scaduto"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr "Tempo di ritardo di elaborazione codice a barre"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr "Codice a Barre Supporto Webcam"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Consenti la scansione del codice a barre tramite webcam nel browser"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr "Abilita il campo revisione per l'articolo"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr "IPN Regex"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Schema di espressione regolare per l'articolo corrispondente IPN"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Consenti duplicati IPN"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Permetti a più articoli di condividere lo stesso IPN"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "Permetti modifiche al part number interno (IPN)"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Consenti di modificare il valore del part number durante la modifica di un articolo"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr "Copia I Dati Della distinta base dell'articolo"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Copia i dati della Distinta Base predefinita quando duplichi un articolo"
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr "Copia I Dati Parametro dell'articolo"
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Copia i dati dei parametri di default quando si duplica un articolo"
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr "Copia I Dati dell'Articolo Test"
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr "Copia i dati di prova di default quando si duplica un articolo"
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr "Copia Template Parametri Categoria"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr "Copia i modelli dei parametri categoria quando si crea un articolo"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Modello"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "Gli articoli sono modelli per impostazione predefinita"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Assemblaggio"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "Gli articoli possono essere assemblate da altri componenti per impostazione predefinita"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Componente"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "Gli articoli possono essere assemblati da altri componenti per impostazione predefinita"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Acquistabile"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Gli articoli sono acquistabili per impostazione predefinita"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Vendibile"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Gli articoli sono acquistabili per impostazione predefinita"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Tracciabile"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Gli articoli sono tracciabili per impostazione predefinita"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Virtuale"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Gli articoli sono virtuali per impostazione predefinita"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Mostra l'importazione nelle viste"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr "Mostra la procedura guidata di importazione in alcune viste articoli"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Mostra articoli correlati"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Visualizza parti correlate per ogni articolo"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr "Dati iniziali dello stock"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr "Consentire la creazione di uno stock iniziale quando si aggiunge una nuova parte"
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr "Dati iniziali del fornitore"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr "Consentire la creazione dei dati iniziali del fornitore quando si aggiunge una nuova parte"
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Formato di visualizzazione del nome articolo"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Formato per visualizzare il nome dell'articolo"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr "Icona predefinita Categoria Articolo"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr "Icona predefinita Categoria Articolo (vuoto significa nessuna icona)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr "Usa Prezzi Fornitore"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr "Includere le discontinuità di prezzo del fornitore nei calcoli generali dei prezzi"
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr "Ignora la Cronologia Acquisti"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr "Cronologia dei prezzi dell'ordine di acquisto del fornitore superati con discontinuità di prezzo"
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr "Utilizzare i prezzi degli articoli in stock"
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr "Utilizzare i prezzi dei dati di magazzino inseriti manualmente per il calcolo dei prezzi"
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr "Età dei prezzi degli articoli in stock"
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr "Escludere dal calcolo dei prezzi gli articoli in giacenza più vecchi di questo numero di giorni"
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr "Utilizza Variazione di Prezzo"
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr "Includi la variante dei prezzi nei calcoli dei prezzi complessivi"
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr "Solo Varianti Attive"
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr "Utilizza solo articoli di varianti attive per calcolare i prezzi delle varianti"
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr "Numero di giorni prima che il prezzo dell'articolo venga aggiornato automaticamente"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Prezzi interni"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr "Abilita prezzi interni per gli articoli"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr "Sovrascrivi Prezzo Interno"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr "Se disponibile, i prezzi interni sostituiscono i calcoli della fascia di prezzo"
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Abilita stampa etichette"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Abilita la stampa di etichette dall'interfaccia web"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "Etichetta Immagine DPI"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr "Risoluzione DPI quando si generano file di immagine da fornire ai plugin di stampa per etichette"
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Abilita Report di Stampa"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Abilita generazione di report di stampa"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Modalità Debug"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Genera report in modalità debug (output HTML)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Dimensioni pagina"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Dimensione predefinita della pagina per i report PDF"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Abilita Rapporto di Prova"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Abilita generazione di stampe di prova"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr "Allega Rapporto di Prova"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr "Quando si stampa un rapporto di prova, allegare una copia del rapporto di prova all'elemento di magazzino associato"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr "Seriali Unici Globali"
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr "I numeri di serie per gli articoli di magazzino devono essere univoci"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "Auto Riempimento Numeri Seriali"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr "Auto riempimento numeri nel modulo"
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr "Elimina scorte esaurite"
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Determines default behaviour when a stock item is depleted"
+msgid "Determines default behavior when a stock item is depleted"
 msgstr "Determina il comportamento predefinito quando un elemento stock è esaurito"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr "Modello Codice a Barre"
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr "Modello per la generazione di codici batch predefiniti per gli elementi stock"
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr "Scadenza giacenza"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr "Abilita funzionalità di scadenza della giacenza"
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr "Vendi giacenza scaduta"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr "Consenti la vendita di stock scaduti"
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr "Tempo di Scorta del Magazzino"
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr "Numero di giorni in cui gli articoli in magazzino sono considerati obsoleti prima della scadenza"
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr "Crea giacenza scaduta"
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr "Permetti produzione con stock scaduto"
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr "Controllo della proprietà della giacenza"
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr "Abilita il controllo della proprietà sulle posizioni e gli oggetti in giacenza"
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr "Icona Predefinita Ubicazione di Magazzino"
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr "Icona Predefinita Ubicazione di Magazzino (vuoto significa nessuna icona)"
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr "Modello Di Riferimento Ordine Di Produzione"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr "Modello richiesto per generare il campo di riferimento ordine di produzione"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Responsabile"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+#, fuzzy
+#| msgid "Only salable parts can be assigned to a sales order"
+msgid "A responsible owner must be assigned to each order"
+msgstr "Solo gli articoli vendibili possono essere assegnati a un ordine di vendita"
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr "Modello Di Riferimento Ordine Di Vendita"
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr "Modello richiesto per generare il campo di riferimento ordine di vendita"
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr "Spedizione Predefinita Ordine Di Vendita"
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr "Abilita la creazione di spedizioni predefinite con ordini di vendita"
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr "Modifica Ordini Di Vendita Completati"
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr "Consenti la modifica degli ordini di vendita dopo che sono stati spediti o completati"
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr "Modello di Riferimento Ordine D'Acquisto"
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr "Modello richiesto per generare il campo di riferimento ordine di acquisto"
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr "Modifica Ordini Di Acquisto Completati"
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr "Consenti la modifica degli ordini di acquisto dopo che sono stati spediti o completati"
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Abilita password dimenticata"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr "Abilita la funzione password dimenticata nelle pagine di accesso"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Abilita registrazione"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "SSO abilitato"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "Abilita SSO nelle pagine di accesso"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr "Abilita registrazione SSO"
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr "Abilita l'auto-registrazione tramite SSO per gli utenti nelle pagine di accesso"
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Email richiesta"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione"
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr "Riempimento automatico degli utenti SSO"
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Compila automaticamente i dettagli dell'utente dai dati dell'account SSO"
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "Posta due volte"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr "Al momento della registrazione chiedere due volte all'utente l'indirizzo di posta elettronica"
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Password due volte"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr "Al momento della registrazione chiedere agli utenti due volte l'inserimento della password"
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Domini consentiti"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr "Gruppo iscrizione"
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr "Gruppo a cui i nuovi utenti vengono assegnati al momento della registrazione"
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "Applica MFA"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "Gli utenti devono utilizzare la sicurezza a due fattori."
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr "Controlla i plugin all'avvio"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr "Controlla che tutti i plugin siano installati all'avvio - abilita in ambienti contenitore"
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr "Abilita l'integrazione URL"
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr "Attiva plugin per aggiungere percorsi URL"
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr "Attiva integrazione navigazione"
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr "Abilita i plugin per l'integrazione nella navigazione"
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr "Abilita l'app integrata"
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr "Abilita plugin per aggiungere applicazioni"
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr "Abilita integrazione pianificazione"
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Abilita i plugin per eseguire le attività pianificate"
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr "Abilita eventi integrati"
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr "Abilita plugin per rispondere agli eventi interni"
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr "Funzionalità Dell'Inventario"
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr "Abilita la funzionalità d'inventario per la registrazione dei livelli di magazzino e il calcolo del valore di magazzino"
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr "Inventario periodico automatico"
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr "Numero di giorni tra la registrazione automatica dell'inventario (imposta 0 per disabilitare)"
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr "I rapporti d'inventario verranno eliminati dopo il numero specificato di giorni"
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole"
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr "Nascondi Articoli Inattivi"
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "Mostra articoli sottoscritti"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr "Mostra gli articoli sottoscritti nella homepage"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "Mostra le categorie sottoscritte"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr "Mostra le categorie dei componenti sottoscritti nella homepage"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "Mostra ultimi articoli"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "Mostra gli ultimi articoli sulla homepage"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Show unvalidated BOMs"
+msgid "Show invalid BOMs"
 msgstr "Mostra distinta base non convalidata"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Mostra le distinte base che attendono la convalida sulla homepage"
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr "Mostra le modifiche recenti alle giacenze"
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr "Mostra le giacenze modificate di recente nella homepage"
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr "Mostra disponibilità scarsa delle giacenze"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr "Mostra disponibilità scarsa degli articoli sulla homepage"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr "Mostra scorte esaurite"
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr "Mostra disponibilità scarsa delle scorte degli articoli sulla homepage"
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr "Mostra scorte necessarie"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Mostra le scorte degli articoli necessari per la produzione sulla homepage"
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr "Mostra scorte esaurite"
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr "Mostra gli articoli stock scaduti nella home page"
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr "Mostra scorte obsolete"
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr "Mostra gli elementi obsoleti esistenti sulla home page"
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr "Mostra produzioni in attesa"
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr "Mostra produzioni in attesa sulla homepage"
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr "Mostra produzioni in ritardo"
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr "Mostra produzioni in ritardo sulla home page"
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr "Mostra ordini di produzione inevasi"
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr "Mostra ordini di produzione inevasi sulla home page"
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr "Mostra Ordini di Produzione in ritardo"
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr "Mostra Ordini di Produzione in ritardo sulla home page"
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr "Mostra Ordini di Vendita inevasi"
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr "Mostra Ordini di Vendita inevasi sulla home page"
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr "Mostra Ordini di Vendita in ritardo"
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr "Mostra Ordini di Vendita in ritardo sulla home page"
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Mostra Notizie"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr "Mostra notizie sulla home page"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr "Visualizzazione dell'etichetta in linea"
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file"
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr "Stampante per etichette predefinita"
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr "Configura quale stampante di etichette deve essere selezionata per impostazione predefinita"
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr "Visualizzazione dell'etichetta in linea"
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file"
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Cerca Articoli"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr "Mostra articoli della ricerca nella finestra di anteprima"
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr "Mostra articoli del fornitore nella finestra di anteprima"
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr "Cerca Articoli Produttore"
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr "Mostra articoli del produttore nella finestra di anteprima"
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr "Nascondi Articoli Inattivi"
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr "Escludi articoli inattivi dalla finestra di anteprima della ricerca"
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr "Cerca Categorie"
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr "Mostra categorie articolo nella finestra di anteprima di ricerca"
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr "Cerca Giacenze"
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr "Mostra articoli in giacenza nella finestra di anteprima della ricerca"
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr "Nascondi elementi non disponibili"
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr "Escludi gli elementi stock che non sono disponibili dalla finestra di anteprima di ricerca"
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr "Cerca Ubicazioni"
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr "Mostra ubicazioni delle giacenze nella finestra di anteprima di ricerca"
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr "Cerca Aziende"
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr "Mostra le aziende nella finestra di anteprima di ricerca"
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr "Cerca Ordini Di Produzione"
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr "Mostra gli ordini di produzione nella finestra di anteprima di ricerca"
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr "Cerca Ordini di Acquisto"
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr "Mostra gli ordini di acquisto nella finestra di anteprima di ricerca"
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Escludi Ordini D'Acquisto Inattivi"
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr "Escludi ordini di acquisto inattivi dalla finestra di anteprima di ricerca"
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr "Cerca Ordini Di Vendita"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr "Visualizzazione degli ordini di vendita nella finestra di anteprima della ricerca"
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr "Escludi Ordini Di Vendita Inattivi"
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Escludi ordini di vendita inattivi dalla finestra di anteprima di ricerca"
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr "Cerca Ordini Di Reso"
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr "Risultati Dell'Anteprima Di Ricerca"
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr "Numero di risultati da visualizzare in ciascuna sezione della finestra di anteprima della ricerca"
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr "Ricerca con regex"
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "Mostra quantità nei moduli"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr "Visualizzare la quantità di pezzi disponibili in alcuni moduli"
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr "Il tasto Esc chiude i moduli"
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr "Utilizzare il tasto Esc per chiudere i moduli modali"
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr "Barra di navigazione fissa"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr "La posizione della barra di navigazione è fissata nella parte superiore dello schermo"
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Formato Data"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr "Formato predefinito per visualizzare le date"
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Programmazione Prodotto"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr "Mostra informazioni sulla pianificazione del prodotto"
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr "Inventario Prodotto"
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr "Visualizza le informazioni d'inventario dell'articolo (se la funzionalità d'inventario è abilitata)"
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr "Lunghezza Stringa Tabella"
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+#, fuzzy
+#| msgid "Default label printer"
+msgid "Default build line label template"
+msgstr "Stampante per etichette predefinita"
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr "Quantità prezzo limite"
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Prezzo"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr "Prezzo unitario in quantità specificata"
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr "Scadenza"
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr "Scadenza in cui questa notifica viene ricevuta"
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr "Nome per questa notifica"
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Attivo"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr "È questa notifica attiva"
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr "Token"
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr "Token per l'accesso"
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Segreto"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr "Segreto condiviso per HMAC"
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "ID Messaggio"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr "Identificatore unico per questo messaggio"
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr "Host"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr "Host da cui questo messaggio è stato ricevuto"
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr "Intestazione"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr "Intestazione di questo messaggio"
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr "Contenuto"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr "Contenuto di questo messaggio"
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr "Scadenza in cui questo messaggio è stato ricevuto"
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr "Lavorato il"
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr "Il lavoro su questo messaggio è terminato?"
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr "Id"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr "Titolo"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr "Pubblicato"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "Autore"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr "Riepilogo"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr "Letto"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr "Queste notizie sull'elemento sono state lette?"
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3700,31 @@ msgstr "Queste notizie sull'elemento sono state lette?"
 msgid "Image"
 msgstr "Immagine"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr "File immagine"
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3891,7 @@ msgid "Contact email address"
 msgstr "Indirizzo email"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3935,7 @@ msgstr "Valuta predefinita utilizzata per questa azienda"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Azienda"
@@ -4066,7 +4100,7 @@ msgid "Parameter value"
 msgstr "Valore del parametro"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4124,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo"
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4160,7 @@ msgid "Supplier part description"
 msgstr "Descrizione articolo fornitore"
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4170,11 @@ msgstr "Descrizione articolo fornitore"
 msgid "Note"
 msgstr "Nota"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "costo base"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Onere minimo (ad esempio tassa di stoccaggio)"
 
@@ -4170,7 +4204,7 @@ msgstr "Quantità Confezione"
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "multiplo"
 
@@ -4248,8 +4282,8 @@ msgstr "Scarica immagine dall'URL"
 msgid "Delete image"
 msgstr "Elimina immagine"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4300,7 @@ msgstr "Cliente"
 msgid "Uses default currency"
 msgstr "Valuta predefinita"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4380,7 @@ msgstr "Giacenza Fornitore"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Ordine di acquisto"
 
@@ -4369,7 +4403,7 @@ msgstr "Nuovo Ordine di Acquisto"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Ordini di Vendita"
 
@@ -4394,7 +4428,7 @@ msgstr "Assegna Giacenza"
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr "Ordini di reso"
 
@@ -4622,7 +4656,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Articoli in magazzino"
 
@@ -4675,7 +4709,7 @@ msgstr "Etichetta"
 msgid "Label template file"
 msgstr "File modello etichetta"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4735,7 @@ msgstr "Altezza [mm]"
 msgid "Label height, specified in mm"
 msgstr "Larghezza dell'etichetta, specificata in mm"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Formato del nome file"
 
@@ -4715,8 +4749,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Filtri"
 
@@ -4847,7 +4881,7 @@ msgstr "Prezzo Totale"
 msgid "No matching purchase order found"
 msgstr "Nessun ordine di acquisto corrispondente trovato"
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4895,7 @@ msgstr "Nessun ordine di acquisto corrispondente trovato"
 msgid "Purchase Order"
 msgstr "Ordine D'Acquisto"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4908,184 @@ msgstr "Restituisci ordine"
 msgid "Total price for this order"
 msgstr "Prezzo totale dell'ordine"
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr "Il contatto non corrisponde all'azienda selezionata"
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr "Descrizione dell'ordine (opzionale)"
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr "Seleziona il codice del progetto per questo ordine"
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Collegamento a un sito web esterno"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr "Data prevista per la consegna dell'ordine. L'ordine scadrà dopo questa data."
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Creato Da"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Utente o gruppo responsabile di questo ordine"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr "Punto di contatto per questo ordine"
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Riferimento ordine"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr "Stato ordine d'acquisto"
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "Azienda da cui sono stati ordinati gli articoli"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr "Riferimento fornitore"
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr "Codice di riferimento ordine fornitore"
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr "ricevuto da"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr "Data di emissione"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr "Data di emissione ordine"
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr "Data ordine completato"
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr "Il fornitore dell'articolo deve corrispondere al fornitore dell'ordine di produzione"
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr "La quantità deve essere un numero positivo"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "Azienda da cui sono stati ordinati gli elementi"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr "Riferimento Cliente "
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr "Codice di riferimento Ordine del Cliente"
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Data di spedizione"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr "spedito da"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr "L'ordine non può essere completato perché nessun articolo è stato assegnato"
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr "Solo un ordine aperto può essere contrassegnato come completo"
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr "L'ordine non può essere completato in quanto ci sono spedizioni incomplete"
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr "L'ordine non può essere completato perché ci sono elementi di riga incompleti"
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr "Quantità Elementi"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr "Riferimento Linea Elemento"
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr "Note linea elemento"
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr "Data di destinazione per questa voce di riga (lasciare vuoto per utilizzare la data di destinazione dall'ordine)"
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr "Contesto"
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr "Contesto aggiuntivo per questa voce"
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr "Prezzo unitario"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr "L'articolo del fornitore deve corrispondere al fornitore"
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr "eliminato"
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr "Ordine"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr "Articolo Fornitore"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5095,341 @@ msgstr "Articolo Fornitore"
 msgid "Received"
 msgstr "Ricevuto"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr "Numero di elementi ricevuti"
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Prezzo di Acquisto"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr "Prezzo di acquisto unitario"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "Dove l'Acquirente desidera che questo elemento venga immagazzinato?"
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr "Un articolo virtuale non può essere assegnato ad un ordine di vendita"
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr "Solo gli articoli vendibili possono essere assegnati a un ordine di vendita"
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "Prezzo di Vendita"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Prezzo unitario di vendita"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr "Quantità spedita"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr "Data di spedizione"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr "Verificato Da"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr "Utente che ha controllato questa spedizione"
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr "Spedizione"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr "Numero di spedizione"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "Numero di monitoraggio"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr "Informazioni di monitoraggio della spedizione"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr "Numero Fattura"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr "Numero di riferimento per la fattura associata"
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr "La spedizione è già stata spedita"
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr "La spedizione non ha articoli di stock assegnati"
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr "L'elemento di magazzino non è stato assegnato"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr "Impossibile allocare l'elemento stock a una linea con un articolo diverso"
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr "Impossibile allocare stock a una riga senza un articolo"
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "La quantità deve essere 1 per l'elemento serializzato"
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr "L'ordine di vendita non corrisponde alla spedizione"
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr "La spedizione non corrisponde all'ordine di vendita"
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr "Linea"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr "Riferimento della spedizione ordine di vendita"
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr "Elemento"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr "Seleziona elemento stock da allocare"
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr "Inserisci la quantità assegnata alla giacenza"
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr "Seleziona l'elemento da restituire dal cliente"
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr "Data di ricezione"
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr "Risultati"
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr "L'ordine non può essere cancellato"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr "Consenti di chiudere l'ordine con elementi di riga incompleti"
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr "L'ordine ha elementi di riga incompleti"
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr "L'ordine non è aperto"
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr "Valuta prezzo d'acquisto"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr "L'articolo del fornitore deve essere specificato"
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr "L'ordine di acquisto deve essere specificato"
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr "Il fornitore deve essere abbinato all'ordine d'acquisto"
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr "L'ordine di acquisto deve essere abbinato al fornitore"
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr "Elemento Riga"
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr "L'elemento di riga non corrisponde all'ordine di acquisto"
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr "Seleziona la posizione di destinazione per gli elementi ricevuti"
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr "Inserisci il codice univoco per gli articoli in arrivo"
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Inserisci i numeri di serie per gli articoli stock in arrivo"
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Codice a Barre"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr "Codice a barre scansionato"
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr "Il codice a barre è già in uso"
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Deve essere fornita una quantità intera per gli articoli rintracciabili"
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr "Gli elementi di linea devono essere forniti"
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr "La destinazione deve essere specificata"
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr "I valori dei codici a barre forniti devono essere univoci"
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr "Valuta prezzo di vendita"
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr "Nessun dettaglio di spedizione fornito"
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr "L'elemento di riga non è associato a questo ordine"
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr "La quantità deve essere positiva"
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr "Inserisci i numeri di serie da assegnare"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr "La spedizione è già stata spedita"
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr "La spedizione non è associata con questo ordine"
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr "Nessuna corrispondenza trovata per i seguenti numeri di serie"
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr "I seguenti numeri di serie sono già assegnati"
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5833,12 @@ msgstr "Aggiornato {part} prezzo unitario a {price}"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "Aggiornato {part} unità prezzo a {price} e quantità a {qty}"
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "Codice Articolo"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Nome Articolo"
@@ -5813,20 +5847,20 @@ msgstr "Nome Articolo"
 msgid "Part Description"
 msgstr "Descrizione Articolo"
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr "IPN - Numero di riferimento interno"
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr "Revisione"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Parole Chiave"
@@ -5851,11 +5885,11 @@ msgstr "Posizione Predefinita ID"
 msgid "Default Supplier ID"
 msgstr "ID Fornitore Predefinito"
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr "Variante Di"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "Scorta Minima"
 
@@ -5874,12 +5908,12 @@ msgstr "Utilizzato In"
 msgid "Building"
 msgstr "In Costruzione"
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr "Costo Minimo"
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr "Costo Massimo"
@@ -5897,7 +5931,7 @@ msgstr "Nome Principale"
 msgid "Category Path"
 msgstr "Percorso Categoria"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5939,7 @@ msgstr "Percorso Categoria"
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Articoli"
 
@@ -5921,7 +5955,7 @@ msgstr "ID Elemento Distinta Base"
 msgid "Parent IPN"
 msgstr "IPN Principale"
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr "IPN Articolo"
 
@@ -5937,92 +5971,92 @@ msgstr "Prezzo Minimo"
 msgid "Maximum Price"
 msgstr "Prezzo Massimo"
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr "Ordine D'Acquisto In Arrivo"
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr "Ordine di Vendita in Uscita"
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr "Giacenza prodotta dall'Ordine di Costruzione"
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr "Giacenza richiesta per l'Ordine di Produzione"
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr "Valido"
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr "Convalida l'intera Fattura dei Materiali"
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr "Questa opzione deve essere selezionata"
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Categoria"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "Posizione Predefinita"
@@ -6036,363 +6070,363 @@ msgstr "Giacenze Totali"
 msgid "Input quantity for price calculation"
 msgstr "Digita la quantità per il calcolo del prezzo"
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Categoria Articoli"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Categorie Articolo"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Posizione predefinita per gli articoli di questa categoria"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr "Strutturale"
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr "Le parti non possono essere assegnate direttamente a una categoria strutturale, ma possono essere assegnate a categorie subordinate."
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr "Keywords predefinite"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr "Parole chiave predefinite per gli articoli in questa categoria"
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr "Icona"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr "Icona (facoltativa)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr "Non puoi rendere principale questa categoria di articoli perché alcuni articoli sono già assegnati!"
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr "Scelta non valida per l'articolo principale"
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr "Esiste già un elemento stock con questo numero seriale"
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr "Un articolo con questo Nome, IPN e Revisione esiste già."
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr "Gli articoli non possono essere assegnati a categorie articolo principali!"
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Nome articolo"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr "È Template"
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr "Quest'articolo è un articolo di template?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr "Questa parte è una variante di un altro articolo?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca"
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "Categoria articolo"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr "Numero Dell'articolo Interno"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr "Numero di revisione o di versione"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr "Dove viene normalmente immagazzinato questo articolo?"
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr "Fornitore predefinito"
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr "Articolo fornitore predefinito"
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr "Scadenza Predefinita"
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Scadenza (in giorni) per gli articoli in giacenza di questo pezzo"
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr "Livello minimo di giacenza consentito"
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr "Unita di misura per questo articolo"
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr "Questo articolo può essere costruito da altri articoli?"
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr "Questo articolo può essere utilizzato per costruire altri articoli?"
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr "Questo articolo ha il tracciamento per gli elementi unici?"
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Quest'articolo può essere acquistato da fornitori esterni?"
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr "Questo pezzo può essere venduto ai clienti?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr "Quest'articolo è attivo?"
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "È una parte virtuale, come un prodotto software o una licenza?"
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr "Somma di controllo Distinta Base"
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr "Somma di controllo immagazzinata Distinta Base"
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr "Distinta Base controllata da"
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr "Data di verifica Distinta Base"
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr "Creazione Utente"
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr "Ultimo Inventario"
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr "Vendita multipla"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr "Valuta utilizzata per calcolare i prezzi"
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr "Costo Minimo Distinta Base"
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr "Costo minimo dei componenti dell'articolo"
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr "Costo Massimo Distinta Base"
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr "Costo massimo dei componenti dell'articolo"
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr "Importo Acquisto Minimo"
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr "Costo minimo di acquisto storico"
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr "Importo massimo acquisto"
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr "Costo massimo di acquisto storico"
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr "Prezzo Interno Minimo"
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr "Costo minimo basato su interruzioni di prezzo interne"
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr "Prezzo Interno Massimo"
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr "Costo massimo basato su interruzioni di prezzo interne"
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr "Prezzo Minimo Fornitore"
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr "Prezzo minimo articolo da fornitori esterni"
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr "Prezzo Massimo Fornitore"
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr "Prezzo massimo dell'articolo proveniente da fornitori esterni"
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr "Variazione di costo minimo"
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr "Costo minimo calcolato di variazione dell'articolo"
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr "Massima variazione di costo"
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr "Costo massimo calcolato di variazione dell'articolo"
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr "Costo minimo totale calcolato"
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr "Costo massimo totale calcolato"
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr "Prezzo Di Vendita Minimo"
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr "Prezzo minimo di vendita basato sulle interruzioni di prezzo"
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr "Prezzo Di Vendita Massimo"
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr "Prezzo massimo di vendita basato sulle interruzioni di prezzo"
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr "Costo Di Vendita Minimo"
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr "Prezzo storico minimo di vendita"
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr "Costo Di Vendita Minimo"
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr "Prezzo storico massimo di vendita"
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr "Articolo per l'inventario"
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr "Contatore Elemento"
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr "Numero di scorte individuali al momento dell'inventario"
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr "Totale delle scorte disponibili al momento dell'inventario"
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6438,330 @@ msgstr "Totale delle scorte disponibili al momento dell'inventario"
 msgid "Date"
 msgstr "Data"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr "Data in cui è stato effettuato l'inventario"
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr "Note aggiuntive"
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr "Utente che ha eseguito questo inventario"
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr "Costo Minimo Scorta"
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr "Costo minimo stimato di magazzino a disposizione"
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr "Costo Massimo Scorte"
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr "Costo massimo stimato di magazzino a disposizione"
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr "Report"
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr "File Report Inventario (generato internamente)"
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr "Conteggio Articolo"
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr "Numero di articoli oggetto d'inventario"
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr "Utente che ha richiesto questo report inventario"
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr "Il modello di prova può essere creato solo per gli articoli rintracciabili"
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr "Nome Test"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr "Inserisci un nome per la prova"
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr "Descrizione Di Prova"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr "Inserisci descrizione per questa prova"
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr "Richiesto"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr "Questa prova è necessaria per passare?"
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr "Valore richiesto"
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr "Questa prova richiede un valore quando si aggiunge un risultato di prova?"
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr "Allegato Richiesto"
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr "Questa prova richiede un file allegato quando si aggiunge un risultato di prova?"
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr "Il nome del modello del parametro deve essere univoco"
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr "Nome Parametro"
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr "Descrizione del parametro"
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr "Articolo principale"
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr "Modello Parametro"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr "Dati"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr "Valore del Parametro"
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr "Valore Predefinito"
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr "Valore Parametro Predefinito"
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr "ID articolo o nome articolo"
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr "Valore ID articolo univoco"
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr "Valore IPN articolo"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr "Livello"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr "Livello distinta base"
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr "Seleziona articolo principale"
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr "Articolo subordinato"
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr "Seleziona l'articolo da utilizzare nella Distinta Base"
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr "Quantità Distinta Base per questo elemento Distinta Base"
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr "Questo elemento della Distinta Base è opzionale"
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr "Questo elemento della Distinta Base è consumabile (non è tracciato negli ordini di produzione)"
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Eccedenza"
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Quantità stimata scarti di produzione (assoluta o percentuale)"
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr "Riferimento Elemento Distinta Base"
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr "Note Elemento Distinta Base"
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr "Codice di controllo"
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr "Codice di controllo Distinta Base"
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr "Convalidato"
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr "Questo elemento della Distinta Base viene ereditato dalle Distinte Base per gli articoli varianti"
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr "Consenti Le Varianti"
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr "Gli elementi in giacenza per gli articoli varianti possono essere utilizzati per questo elemento Distinta Base"
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr "La quantità deve essere un valore intero per gli articoli rintracciabili"
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr "L'articolo subordinato deve essere specificato"
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr "Elemento Distinta Base Sostituito"
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr "La parte sostituita non può essere la stessa dell'articolo principale"
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr "Elemento principale Distinta Base"
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr "Sostituisci l'Articolo"
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr "Articolo 1"
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr "Articolo 2"
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr "Seleziona Prodotto Relativo"
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr "Non si può creare una relazione tra l'articolo e sé stesso"
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr "La relazione duplicata esiste già"
 
@@ -7205,7 +7239,7 @@ msgstr "Aggiungi informazioni inventario"
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr "Inventario"
 
@@ -8057,7 +8091,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8262,7 @@ msgstr "Plugin"
 msgid "Method"
 msgstr "Metodo"
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr "Nessun autore trovato"
 
@@ -8394,111 +8428,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr "Nome modello"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr "File modello di report"
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr "Descrizione del modello report"
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr "Numero di revisione del rapporto (auto-incrementi)"
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr "Sequenza per generare i nomi dei file report"
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr "Modello report abilitato"
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr "Filtri di ricerca elementi di stock (elenco separato da virgole key=coppia di valori)"
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr "Includi Test Installati"
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr "Includi i risultati dei test per gli elementi stock installati all'interno dell'elemento assemblato"
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr "Filtri di produzione"
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr "Filtri di ricerca produzione (elenco separato da virgole key=coppia di valori"
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr "Filtri Articolo"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr "Filtri di ricerca articolo (elenco separato da virgole key=coppia di valori"
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr "Ordine di Acquisto filtra la ricerca"
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr "Ordine di Vendita filtra la ricerca"
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr "Snippet"
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr "Report file snippet"
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr "Descrizione file snippet"
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr "Risorsa"
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr "Report file risorsa"
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr "File risorsa descrizione"
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8719,60 @@ msgstr "Elimina al esaurimento"
 msgid "Expiry Date"
 msgstr "Data di Scadenza"
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr "Ubicazione Esterna"
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr "Obsoleto"
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr "La quantità è richiesta"
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr "Deve essere fornita un articolo valido"
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr "I numeri di serie non possono essere forniti per un articolo non tracciabile"
 
@@ -8762,7 +8796,7 @@ msgstr "Ubicazione magazzino"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Posizioni magazzino"
 
@@ -10071,7 +10105,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Elimina"
 
@@ -13248,7 +13282,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "Aggiungi"
 
@@ -13891,7 +13925,7 @@ msgstr "Mostra Notifiche"
 msgid "New Notifications"
 msgstr "Nuove Notifiche"
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr "Amministratore"
 
@@ -14128,35 +14162,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "Impostazione autorizzazioni"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Gruppo"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Visualizza"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Autorizzazione a visualizzare gli articoli"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Autorizzazione ad aggiungere elementi"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Modificare"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Permessi per modificare gli elementi"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Autorizzazione ad eliminare gli elementi"
-
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index cbfc394fadb7..07511f04803c 100644
--- a/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Japanese\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "値がありません"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -59,10 +59,10 @@ msgstr "日付を入力する"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "指定されたメールドメインは承認されていません。"
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "数量コードが無効です"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "シリアル番号は空です"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr ""
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "シリアル番号が見つかりません"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "この値からHTMLタグを削除"
 
@@ -405,10 +405,10 @@ msgstr "添付ファイル"
 msgid "Select file to attach"
 msgstr "添付ファイルを選択"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "添付ファイルを選択"
 msgid "Link"
 msgstr "リンク"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "外部 サイト へのリンク"
@@ -436,10 +436,10 @@ msgstr "コメント:"
 msgid "File comment"
 msgstr "ファイルコメント"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr "無効な選択です"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "無効な選択です"
 msgid "Name"
 msgstr "お名前"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr ""
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "有効な数字でなければなりません"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "返品済"
 msgid "In Progress"
 msgstr "処理中"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "InvenTree について"
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "組立注文"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "組立注文"
 
@@ -1008,17 +1008,21 @@ msgstr "組立注文"
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr "パーツ"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "組立状況"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "作成日時"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr "外部リンク"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "組立優先度"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr "数量"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr "在庫商品"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "外部URLからの画像ダウンロードを許可する"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr "外部URL画像の最大サイズ"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "テンプレート"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "パーツはデフォルトのテンプレートです"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "アセンブリ"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "コンポーネント"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "パーツはデフォルトでサブコンポーネントとして使用できます"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "購入可能"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "パーツはデフォルトで購入可能です"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "販売可能"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "パーツはデフォルトで販売可能です"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "追跡可能"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "パーツはデフォルトで追跡可能です"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "デバッグモード"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "シリアル番号を自動入力"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "メールアドレスは必須です"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr "非アクティブな部品を非表示"
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "購読中の部品を表示"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "購読中のカテゴリを表示"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "メッセージ ID:"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr "連絡先メールアドレス"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr "顧客"
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "在庫商品"
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4869,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "外部ページへのリンク"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "購入金額"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr "割り当てるシリアル番号を入力"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "キーワード"
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "パーツ"
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "カテゴリ"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "パーツカテゴリ"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "パーツカテゴリ"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "パーツカテゴリ"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8250,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "パーミッション設定"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "グループ"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "表示"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "項目を表示する権限"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "項目を追加する権限"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "変更"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "項目を編集する権限"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "項目を削除する権限"
-
diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po
index 7d9d31a46a0d..2dc64a0a7cc0 100644
--- a/InvenTree/locale/ko/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ko/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Korean\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr ""
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "{original} 을 {unit} 으로 전환할 수 없음."
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -59,10 +59,10 @@ msgstr "날짜 입력"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr ""
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr ""
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr ""
 
@@ -405,10 +405,10 @@ msgstr "첨부파일"
 msgid "Select file to attach"
 msgstr "첨부할 파일을 선택하세요"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "첨부할 파일을 선택하세요"
 msgid "Link"
 msgstr "링크"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "외부 URL로 링크"
@@ -436,10 +436,10 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr ""
 msgid "Name"
 msgstr "이름"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr ""
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "유효한 숫자여야 합니다"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr ""
 msgid "In Progress"
 msgstr "진행 중"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1008,17 +1008,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr ""
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr "외부 링크"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "수량 값은 0보다 커야 합니다"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr "수량"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "재시작 필요"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "회사명"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "기본 통화"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "URL에서 다운로드"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "바코드 지원"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "구입 가능"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "판매 가능"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "디버그 모드"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "페이지 크기"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "PDF 보고서 기본 페이지 크기"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "SSO 활성화"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "로그인 페이지에서 SSO 활성화"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "이메일 필요"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "두 번 보내기"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "작성자"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr "이미지"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "회사"
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr "URL에서 이미지 다운로드"
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr "고객"
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr "높이 [mm]"
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4869,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "바코드"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr "이미 사용 중인 바코드입니다"
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr "데이터"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8250,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "삭제"
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr "관리자"
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/lv/LC_MESSAGES/django.po b/InvenTree/locale/lv/LC_MESSAGES/django.po
index cc2a979e41bc..6f7f7bf2c5d2 100644
--- a/InvenTree/locale/lv/LC_MESSAGES/django.po
+++ b/InvenTree/locale/lv/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-20 12:27\n"
 "Last-Translator: \n"
 "Language-Team: Latvian\n"
@@ -34,16 +34,16 @@ msgstr "Norādīta nederīga vienība ({unit})"
 msgid "No value provided"
 msgstr "Nav norādīta vērtība"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Nevarēja konvertēt {original} par {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -59,10 +59,10 @@ msgstr "Ievadiet datumu"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Norādītais e-pasta domēns nav apstiprināts."
 msgid "Registration is disabled."
 msgstr "Reģistrācija ir izslēgta."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Norādītais daudzums nav derīgs"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Tukša sērijas numura rinda"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Atkārtojas sērijas numurs"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Nederīgs grupas diapazons: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Grupas diapazons {group} pārsniedz pieļaujamo daudzumu ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Nederīga grupas secība: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Netika atrasts neviens sērijas numurs"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Unikālo sērijas numuru skaitam ({len(serials)}) jāatbilst daudzumam ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Noņemiet HTML tagus no šīs vērtības"
 
@@ -405,10 +405,10 @@ msgstr ""
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr ""
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr ""
@@ -436,10 +436,10 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr ""
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr ""
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr ""
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1008,17 +1008,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr ""
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4869,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8250,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po
index 7b9dcfb00484..a6efec1f890c 100644
--- a/InvenTree/locale/nl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/nl/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Dutch\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Geen waarde opgegeven"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "{original} kon niet worden omgezet naar {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Ongeldige hoeveelheid ingegeven"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Ongeldige hoeveelheid ingegeven ({exc})"
@@ -59,10 +59,10 @@ msgstr "Voer datum in"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Het ingevoerde e-maildomein is niet goedgekeurd."
 msgid "Registration is disabled."
 msgstr "Registratie is uitgeschakeld."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Ongeldige hoeveelheid ingevoerd"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Leeg serienummer"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Duplicaat serienummer"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Geen serienummers gevonden"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Verwijder HTML tags van deze waarde"
 
@@ -405,10 +405,10 @@ msgstr "Bijlage"
 msgid "Select file to attach"
 msgstr "Bestand als bijlage selecteren"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Bestand als bijlage selecteren"
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Link naar externe URL"
@@ -436,10 +436,10 @@ msgstr "Opmerking"
 msgid "File comment"
 msgstr "Bestand opmerking"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Dubbele namen kunnen niet bestaan onder hetzelfde bovenliggende object"
 msgid "Invalid choice"
 msgstr "Ongeldige keuze"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Ongeldige keuze"
 msgid "Name"
 msgstr "Naam"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Serverfout"
 msgid "An error has been logged by the server."
 msgstr "Er is een fout gelogd door de server."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Moet een geldig nummer zijn"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Retour"
 msgid "In Progress"
 msgstr "In Behandeling"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Over InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Productie moet geannuleerd worden voordat het kan worden verwijderd"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Verbruiksartikelen"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Productieorder"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Productieorders"
 
@@ -1008,17 +1008,23 @@ msgstr "Productieorders"
 msgid "Invalid choice for parent build"
 msgstr "Ongeldige keuze voor bovenliggende productie"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+#, fuzzy
+#| msgid "Purchase order must be specified"
+msgid "Responsible user or group must be specified"
+msgstr "Inkooporder moet worden gespecificeerd"
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Productieorderreferentie"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1038,27 @@ msgstr "Productieorderreferentie"
 msgid "Reference"
 msgstr "Referentie"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Korte beschrijving van de build (optioneel)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Bovenliggende Productie"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Productieorder waar deze productie aan is toegewezen"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1102,107 @@ msgstr "Productieorder waar deze productie aan is toegewezen"
 msgid "Part"
 msgstr "Onderdeel"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Selecteer onderdeel om te produceren"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Verkooporder Referentie"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Verkooporder waar deze productie aan is toegewezen"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Bronlocatie"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Selecteer de locatie waar de voorraad van de productie vandaan moet komen (laat leeg om vanaf elke standaard locatie te nemen)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Bestemmings Locatie"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Selecteer locatie waar de voltooide items zullen worden opgeslagen"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Productiehoeveelheid"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Aantal voorraaditems om te produceren"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Voltooide voorraadartikelen"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Aantal voorraadartikelen die zijn voltooid"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Productiestatus"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Productiestatuscode"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Batchcode"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Batchcode voor deze productieuitvoer"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Aanmaakdatum"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Verwachte opleveringsdatum"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Doeldatum voor productie voltooiing. Productie zal achterstallig zijn na deze datum."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Opleveringsdatum"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "voltooid door"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Uitgegeven door"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Gebruiker die de productieorder heeft gegeven"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1213,11 @@ msgstr "Gebruiker die de productieorder heeft gegeven"
 msgid "Responsible"
 msgstr "Verantwoordelijke"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Gebruiker of groep verantwoordelijk voor deze bouwopdracht"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1229,16 @@ msgstr "Gebruiker of groep verantwoordelijk voor deze bouwopdracht"
 msgid "External Link"
 msgstr "Externe Link"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Bouw prioriteit"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Prioriteit van deze bouwopdracht"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1248,57 @@ msgstr "Prioriteit van deze bouwopdracht"
 msgid "Project Code"
 msgstr "Project Code"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Project code voor deze build order"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Productieorder {build} is voltooid"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Een productieorder is voltooid"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Geen productie uitvoer opgegeven"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Productie uitvoer is al voltooid"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Productuitvoer komt niet overeen met de Productieorder"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Hoeveelheid moet groter zijn dan nul"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "Hoeveelheid kan niet groter zijn dan aantal"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Bouw object"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1340,37 @@ msgstr "Bouw object"
 msgid "Quantity"
 msgstr "Hoeveelheid"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Vereiste hoeveelheid voor bouwopdracht"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Productieartikel moet een productieuitvoer specificeren, omdat het hoofdonderdeel gemarkeerd is als traceerbaar"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "Toegewezen hoeveelheid ({q}) mag de beschikbare voorraad ({a}) niet overschrijden"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Voorraad item is te veel toegewezen"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Toewijzing hoeveelheid moet groter zijn dan nul"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1386,19 @@ msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel"
 msgid "Stock Item"
 msgstr "Voorraadartikel"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Bron voorraadartikel"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Voorraad hoeveelheid toe te wijzen aan productie"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Installeren in"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Bestemming voorraadartikel"
 
@@ -1429,7 +1435,7 @@ msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen"
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Geheel getal vereist omdat de stuklijst traceerbare onderdelen bevat"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1453,7 @@ msgstr "Serienummers automatisch toewijzen"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Vereiste artikelen automatisch toewijzen met overeenkomende serienummers"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "De volgende serienummers bestaan al of zijn ongeldig"
 
@@ -1455,8 +1461,8 @@ msgstr "De volgende serienummers bestaan al of zijn ongeldig"
 msgid "A list of build outputs must be provided"
 msgstr "Een lijst van productieuitvoeren moet worden verstrekt"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1502,8 @@ msgid "Location for completed build outputs"
 msgstr "Locatie van voltooide productieuitvoeren"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1576,7 @@ msgstr "Accepteer dat voorraadartikelen niet volledig zijn toegewezen aan deze p
 msgid "Required stock has not been fully allocated"
 msgstr "Vereiste voorraad is niet volledig toegewezen"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Accepteer Onvolledig"
 
@@ -1610,7 +1616,7 @@ msgstr "bom_item.part moet naar hetzelfde onderdeel wijzen als de productieorder
 msgid "Item must be in stock"
 msgstr "Artikel moet op voorraad zijn"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Beschikbare hoeveelheid ({q}) overschreden"
@@ -1623,7 +1629,7 @@ msgstr "Productieuitvoer moet worden opgegeven voor de toewijzing van gevolgde o
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "Productieuitvoer kan niet worden gespecificeerd voor de toewijzing van niet gevolgde onderdelen"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "Allocaties voor artikelen moeten worden opgegeven"
 
@@ -1663,8 +1669,8 @@ msgstr "Optionele Items"
 msgid "Allocate optional BOM items to build order"
 msgstr "Alloceer optionele BOM items om bestelling te bouwen"
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "Stuklijstartikel"
 
@@ -1693,15 +1699,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr "Beschikbare Voorraad"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "Voorraad vereist voor productieorder"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr "Achterstallige Productieorder"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr "Productieorder {bo} is nu achterstallig"
@@ -1818,8 +1824,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Voorraad is niet volledig toegewezen aan deze productieorder"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1862,8 @@ msgid "Completed Outputs"
 msgstr "Voltooide Uitvoeren"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1913,7 @@ msgstr "Voorraadbron"
 msgid "Stock can be taken from any available location."
 msgstr "Voorraad kan worden genomen van elke beschikbare locatie."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Bestemming"
@@ -2121,1542 +2127,1572 @@ msgstr "Projectbeschrijving"
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "Instellingswaarde"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "Gekozen waarde is geen geldige optie"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "Waarde moet een booleaanse waarde zijn"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "Waarde moet een geheel getal zijn"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "Sleutelreeks moet uniek zijn"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Geen groep"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Een leeg domein is niet toegestaan."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Ongeldige domeinnaam: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr "Geen plug-in gevonden"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Opnieuw opstarten vereist"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "Een instelling is gewijzigd waarvoor een herstart van de server vereist is"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr "Migraties in behandeling"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "ID Serverinstantie"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr "Stringbeschrijving voor de server instantie"
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr "Gebruik de instantie naam"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr "Gebruik de naam van de instantie in de titelbalk"
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr "Tonen `over` beperken"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr "Toon de `over` modal alleen aan superusers"
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Bedrijfsnaam"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Interne bedrijfsnaam"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "Basis-URL"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "Basis URL voor serverinstantie"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Standaard Valuta"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr "Selecteer basisvaluta voor de berekening van prijzen"
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "dagen"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Download van URL"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Download van afbeeldingen en bestanden vanaf een externe URL toestaan"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr "Download limiet"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr "Maximale downloadgrootte voor externe afbeelding"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr "User-agent gebruikt om te downloaden van URL"
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr "Sta toe om de user-agent te overschrijven die gebruikt wordt om afbeeldingen en bestanden van externe URL te downloaden (laat leeg voor de standaard)"
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Bevestiging vereist"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Vereis expliciete bevestiging van de gebruiker voor bepaalde actie."
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr "Boomstructuur Diepte"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr "Standaard diepte voor treeview. Diepere niveaus kunnen geladen worden wanneer ze nodig zijn."
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr "Interval voor update"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr "Hoe vaak te controleren op updates (nul om uit te schakelen)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Automatische backup"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Automatische back-up van database- en mediabestanden inschakelen"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Automatische backup interval"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr "Geef het aantal dagen op tussen geautomatiseerde backup"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr "Interval Taak Verwijderen"
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr "Resultaten van achtergrondtaken worden verwijderd na het opgegeven aantal dagen"
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr "Error Log Verwijderings Interval"
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr "Resultaten van achtergrondtaken worden verwijderd na het opgegeven aantal dagen"
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr "Interval Verwijderen Notificatie"
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr "Meldingen van gebruikers worden verwijderd na het opgegeven aantal dagen"
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Streepjescodeondersteuning"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr "Barcode Invoer Vertraging"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr "Barcode invoerverwerking vertraging"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr "Barcode Webcam Ondersteuning"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Barcode via webcam scannen in browser toestaan"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr "Herzieningen onderdeel"
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr "Revisieveld voor onderdeel inschakelen"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr "IPN Regex"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Regulier expressiepatroon voor het overeenkomende Onderdeel IPN"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Duplicaat IPN toestaan"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "Bewerken IPN toestaan"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Sta het wijzigen van de IPN toe tijdens het bewerken van een onderdeel"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr "Kopieer Onderdeel Stuklijstgegevens"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Kopieer standaard stuklijstgegevens bij het dupliceren van een onderdeel"
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr "Kopieer Onderdeel Parametergegevens"
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Parametergegevens standaard kopiëren bij het dupliceren van een onderdeel"
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr "Kopieer Onderdeel Testdata"
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr "Testdata standaard kopiëren bij het dupliceren van een onderdeel"
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr "Kopiëer Categorieparameter Sjablonen"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr "Kopieer categorieparameter sjablonen bij het aanmaken van een onderdeel"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Sjabloon"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "Onderdelen zijn standaard sjablonen"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Samenstelling"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "Onderdelen kunnen standaard vanuit andere componenten worden samengesteld"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Component"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "Onderdelen kunnen standaard worden gebruikt als subcomponenten"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Koopbaar"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Onderdelen kunnen standaard gekocht worden"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Verkoopbaar"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Onderdelen kunnen standaard verkocht worden"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Volgbaar"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Onderdelen kunnen standaard gevolgd worden"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Virtueel"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Onderdelen zijn standaard virtueel"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Toon Import in Weergaven"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr "Toon de importwizard in sommige onderdelenweergaven"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Verwante onderdelen tonen"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Verwante onderdelen voor een onderdeel tonen"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr "Initiële voorraadgegevens"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr "Aanmaken van eerste voorraad toestaan bij het toevoegen van een nieuw onderdeel"
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr "Initiële leveranciergegevens"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr "Aanmaken van eerste leveranciersgegevens toestaan bij het toevoegen van een nieuw onderdeel"
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Onderdelennaam Weergaveopmaak"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Opmaak om de onderdeelnaam weer te geven"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr "Standaardicoon voor onderdeel catagorie"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr "Standaardicoon voor onderdeel catagorie (leeg betekent geen pictogram)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr "Forceer Parameter Eenheden"
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr "Als er eenheden worden opgegeven, moeten parameterwaarden overeenkomen met de opgegeven eenheden"
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr "Minimaal aantal prijs decimalen"
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr "Minimaal aantal decimalen om weer te geven bij het weergeven van prijsgegevens"
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr "Maximum prijs decimalen"
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr "Maximum aantal decimalen om weer te geven bij het weergeven van prijsgegevens"
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr "Gebruik leveranciersprijzen"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr "Prijsvoordelen leveranciers opnemen in de totale prijsberekening"
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr "Aankoopgeschiedenis overschrijven"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr "Historische order prijzen overschrijven de prijzen van de leverancier"
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr "Gebruik voorraaditem prijzen"
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr "Gebruik prijzen van handmatig ingevoerde voorraadgegevens voor prijsberekeningen"
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr "Voorraad artikelprijs leeftijd"
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr "Voorraaditems ouder dan dit aantal dagen uitsluiten van prijsberekeningen"
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr "Gebruik variantprijzen"
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr "Variantenprijzen opnemen in de totale prijsberekening"
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr "Alleen actieve varianten"
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr "Gebruik alleen actieve variantonderdelen voor het berekenen van variantprijzen"
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr "Prijzen Herbouw interval"
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr "Aantal dagen voordat de prijzen voor onderdelen automatisch worden bijgewerkt"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Interne Prijzen"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr "Inschakelen van interne prijzen voor onderdelen"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr "Interne prijs overschrijven"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr "Indien beschikbaar, interne prijzen overschrijven berekeningen van prijsbereik"
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Printen van labels Inschakelen"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Printen van labels via de webinterface inschakelen"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "Label Afbeelding DPI"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr "DPI resolutie bij het genereren van afbeelginsbestanden voor label printer plugins"
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Activeer Rapportages"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Activeer het genereren van rapporten"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Foutopsporingsmodus"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Rapporten genereren in debug modus (HTML uitvoer)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Paginagrootte"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Standaard paginagrootte voor PDF rapporten"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Activeer Testrapporten"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Activeer het genereren van testrapporten"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr "Testrapporten Toevoegen"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr "Bij het afdrukken van een Testrapport, voeg een kopie van het Testrapport toe aan het bijbehorende Voorraadartikel"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr "Globaal unieke serienummers"
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr "Serienummers voor voorraaditems moeten globaal uniek zijn"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "Serienummers automatisch invullen"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr "Automatisch invullen van serienummer in formulieren"
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr "Verwijder uitgeputte voorraad"
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Determines default behaviour when a stock item is depleted"
+msgid "Determines default behavior when a stock item is depleted"
 msgstr "Bepaalt standaard gedrag wanneer een voorraaditem is uitgeput"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr "Batchcode Sjabloon"
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr "Sjabloon voor het genereren van standaard batchcodes voor voorraadartikelen"
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr "Verlopen Voorraad"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr "Verlopen voorraad functionaliteit inschakelen"
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr "Verkoop Verlopen Voorraad"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr "Verkoop verlopen voorraad toestaan"
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr "Voorraad Vervaltijd"
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr "Aantal dagen voordat voorraadartikelen als verouderd worden beschouwd voor ze verlopen"
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr "Produceer Verlopen Voorraad"
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr "Sta productie met verlopen voorraad toe"
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr "Voorraad Eigenaar Toezicht"
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr "Eigenaarstoezicht over voorraadlocaties en items inschakelen"
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr "Voorraadlocatie standaard icoon"
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr "Standaard locatie pictogram (leeg betekent geen icoon)"
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr "Geïnstalleerde voorraad items weergeven"
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr "Geïnstalleerde voorraadartikelen in voorraadtabellen tonen"
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr "Productieorderreferentiepatroon"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr "Vereist patroon voor het genereren van het Bouworderreferentieveld"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Verantwoordelijke"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+#, fuzzy
+#| msgid "Only salable parts can be assigned to a sales order"
+msgid "A responsible owner must be assigned to each order"
+msgstr "Alleen verkoopbare onderdelen kunnen aan een verkooporder worden toegewezen"
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr "Retourorders inschakelen"
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr "Retourorder functionaliteit inschakelen in de gebruikersinterface"
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr "Retourorder referentie patroon"
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr "Bewerk voltooide retourorders"
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr "Bewerken van retourorders toestaan nadat deze zijn voltooid"
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr "Verkooporderreferentiepatroon"
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr "Vereist patroon voor het genereren van het Verkooporderreferentieveld"
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr "Standaard Verzending Verkooporder"
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr "Aanmaken standaard verzending bij verkooporders inschakelen"
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr "Bewerk voltooide verkooporders"
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr "Bewerken van verkooporders toestaan nadat deze zijn verzonden of voltooid"
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr "Inkooporderreferentiepatroon"
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr "Vereist patroon voor het genereren van het Inkooporderreferentieveld"
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr "Bewerk voltooide verkooporders"
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr "Bewerken van inkooporders toestaan nadat deze zijn verzonden of voltooid"
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Wachtwoord vergeten functie inschakelen"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr "Wachtwoord vergeten functie inschakelen op de inlogpagina's"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Registratie inschakelen"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr "Zelfregistratie voor gebruikers op de inlogpagina's inschakelen"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "SSO inschakelen"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "SSO inschakelen op de inlogpagina's"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr "Schakel gebruikersregistratie met SSO in"
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr "Zelfregistratie voor gebruikers middels SSO op de inlogpagina's inschakelen"
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "E-mailadres verplicht"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr "Vereis gebruiker om e-mailadres te registreren bij aanmelding"
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr "SSO-gebruikers automatisch invullen"
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Gebruikersdetails van SSO-accountgegevens automatisch invullen"
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "E-mail twee keer"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr "Bij inschrijving gebruikers twee keer om hun e-mail vragen"
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Wachtwoord tweemaal"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr "Laat gebruikers twee keer om hun wachtwoord vragen tijdens het aanmelden"
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Toegestane domeinen"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr "Inschrijven beperken tot bepaalde domeinen (komma-gescheiden, beginnend met @)"
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr "Groep bij aanmelding"
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr "Groep waaraan nieuwe gebruikers worden toegewezen bij registratie"
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "MFA afdwingen"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "Gebruikers moeten multifactor-beveiliging gebruiken."
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr "Controleer plugins bij het opstarten"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr "Controleer of alle plug-ins zijn geïnstalleerd bij het opstarten - inschakelen in container-omgevingen"
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr "Activeer URL-integratie"
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr "Plugins toestaan om URL-routes toe te voegen"
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr "Activeer navigatie integratie"
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr "Plugins toestaan om te integreren in navigatie"
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr "Activeer app integratie"
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr "Activeer plug-ins om apps toe te voegen"
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr "Activeer planning integratie"
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Activeer plugin om periodiek taken uit te voeren"
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr "Activeer evenement integratie"
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr "Activeer plugin om op interne evenementen te reageren"
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr "Activeer project codes"
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr "Activeer project codes voor het bijhouden van projecten"
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr "Voorraadcontrole functionaliteit"
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr "Schakel voorraadfunctionaliteit in voor het opnemen van voorraadniveaus en het berekenen van voorraadwaarde"
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr "Externe locaties uitsluiten"
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr "Voorraadartikelen op externe locaties uitsluiten van voorraadberekeningen"
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr "Automatische Voorraadcontrole Periode"
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr "Aantal dagen tussen automatische voorraadopname (ingesteld op nul om uit te schakelen)"
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr "Rapport Verwijdering Interval"
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr "Voorraadrapportage zal worden verwijderd na het opgegeven aantal dagen"
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig"
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr "Inactieve Onderdelen Verbergen"
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr "Verberg inactieve delen bij items op de homepage"
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "Toon geabonneerde onderdelen"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr "Toon geabonneerde onderdelen op de homepage"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "Toon geabonneerde categorieën"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr "Toon geabonneerde onderdeel categorieën op de startpagina"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "Toon laatste onderdelen"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "Toon laatste onderdelen op de startpagina"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Show unvalidated BOMs"
+msgid "Show invalid BOMs"
 msgstr "Toon niet-gevalideerde BOM's"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Laat BOMs zien die wachten op validatie op de startpagina"
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr "Toon recente voorraadwijzigingen"
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr "Toon recent aangepaste voorraadartikelen op de startpagina"
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr "Toon lage voorraad"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr "Toon lage voorraad van artikelen op de startpagina"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr "Toon lege voorraad"
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr "Toon lege voorraad van artikelen op de startpagina"
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr "Toon benodigde voorraad"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Toon benodigde voorraad van artikelen voor productie op de startpagina"
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr "Toon verlopen voorraad"
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr "Toon verlopen voorraad van artikelen op de startpagina"
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr "Toon verouderde voorraad"
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr "Toon verouderde voorraad van artikelen op de startpagina"
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr "Toon openstaande producties"
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr "Toon openstaande producties op de startpagina"
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr "Toon achterstallige productie"
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr "Toon achterstallige producties op de startpagina"
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr "Toon uitstaande PO's"
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr "Toon uitstaande PO's op de startpagina"
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr "Toon achterstallige PO's"
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr "Toon achterstallige PO's op de startpagina"
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr "Toon uitstaande SO's"
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr "Toon uitstaande SO's op de startpagina"
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr "Toon achterstallige SO's"
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr "Toon achterstallige SO's op de startpagina"
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr "Toon in behandeling SO verzendingen"
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr "Toon in behandeling zijnde SO verzendingen op de startpagina"
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Nieuws tonen"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr "Nieuws op de startpagina weergeven"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr "Inline labelweergave"
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "PDF-labels in browser weergeven, in plaats van als bestand te downloaden"
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr "Standaard label printer"
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr "Instellen welke label printer standaard moet worden geselecteerd"
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr "Inline rapport weergeven"
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "PDF-rapporten in de browser weergeven, in plaats van als bestand te downloaden"
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Zoek Onderdelen"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr "Onderdelen weergeven in zoekscherm"
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr "Zoek leveranciersonderdelen"
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr "Leveranciersonderdelen weergeven in zoekscherm"
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr "Fabrikant onderdelen zoeken"
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr "Fabrikant onderdelen weergeven in zoekscherm"
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr "Inactieve Onderdelen Verbergen"
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr "Inactieve verkooporders weglaten in het zoekvenster"
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr "Zoek categorieën"
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr "Toon onderdeelcategorieën in zoekvenster"
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr "Zoek in Voorraad"
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr "Toon voorraad items in zoekvenster"
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr "Verberg niet beschikbare voorraad items"
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr "Voorraadartikelen die niet beschikbaar zijn niet in het zoekvenster weergeven"
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr "Locaties doorzoeken"
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr "Toon voorraadlocaties in zoekvenster"
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr "Zoek bedrijven"
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr "Toon bedrijven in zoekvenster"
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr "Zoek Bouworders"
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr "Toon bouworders in zoekvenster"
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr "Inkooporders Zoeken"
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr "Toon inkooporders in het zoekvenster"
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Inactieve Inkooporders Weglaten"
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr "Inactieve inkooporders weglaten in het zoekvenster"
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr "Verkooporders zoeken"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr "Toon verkooporders in het zoekvenster"
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr "Inactieve Verkooporders Weglaten"
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Inactieve verkooporders weglaten in het zoekvenster"
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr "Zoek retourorders"
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr "Toon bouworders in zoekvenster"
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr "Inactieve retourbestellingen weglaten"
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr "Inactieve retourorders uitsluiten in zoekvenster"
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr "Zoekvoorbeeld resultaten"
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr "Aantal resultaten om weer te geven in elk gedeelte van het zoekvenster"
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr "Regex zoeken"
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr "Schakel reguliere expressies in zoekopdrachten in"
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr "Hele woorden zoeken"
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr "Zoekopdrachten geven resultaat voor hele woord overeenkomsten"
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "Toon hoeveelheid in formulieren"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr "Hoeveelheid beschikbare onderdelen in sommige formulieren weergeven"
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr "Escape-toets sluit formulieren"
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr "Gebruik de Escape-toets om standaard formulieren te sluiten"
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr "Vaste navigatiebalk"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr "De navigatiebalk positie is gefixeerd aan de bovenkant van het scherm"
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Datum formaat"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr "Voorkeursindeling voor weergave van datums"
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Onderdeel planning"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr "Toon informatie voor het plannen van onderdelen"
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr "Voorraadcontrole onderdeel"
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr "Toon voorraadinformatie van onderdeel (als voorraadcontrole functionaliteit is ingeschakeld)"
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr "Tabel tekenreekslengte"
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr "Standaard sjabloon product onderdeel"
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr "Het onderdeellabelsjabloon dat automatisch wordt geselecteerd"
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr "Standaard sjabloon voorraad onderdeel"
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr "Standaard label van voorraadlocatie"
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+#, fuzzy
+#| msgid "Default stock location label template"
+msgid "Default build line label template"
+msgstr "Standaard label van voorraadlocatie"
+
+#: common/models.py:2464
+#, fuzzy
+#| msgid "The part label template to be automatically selected"
+msgid "The build line label template to be automatically selected"
+msgstr "Het onderdeellabelsjabloon dat automatisch wordt geselecteerd"
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr "Foutrapportages ontvangen"
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr "Meldingen ontvangen van systeemfouten"
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Prijs"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr "Eindpunt"
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr "Eindpunt waarop deze webhook wordt ontvangen"
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr "Naam van deze webhook"
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Actief"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr "Is deze webhook actief"
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr "Token"
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr "Token voor toegang"
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Geheim"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr "Gedeeld geheim voor HMAC"
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "Bericht ID"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr "Host"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr "Koptekst"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr "Koptekst van dit bericht"
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr "Berichtinhoud"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr "Inhoud van dit bericht"
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr "Aan gewerkt"
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr "Id"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr "Titel"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr "Gepubliceerd"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr "Samenvatting"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr "Gelezen"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3702,31 @@ msgstr ""
 msgid "Image"
 msgstr "Afbeelding"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr "Afbeelding"
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr "Symbool"
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr "Definitie"
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3893,7 @@ msgid "Contact email address"
 msgstr "Contact e-mailadres"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3937,7 @@ msgstr "Standaardvaluta die gebruikt wordt voor dit bedrijf"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Bedrijf"
@@ -4066,7 +4102,7 @@ msgid "Parameter value"
 msgstr "Parameterwaarde"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4126,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderdeel"
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4162,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4172,11 @@ msgstr ""
 msgid "Note"
 msgstr "Opmerking"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "basisprijs"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Minimale kosten (bijv. voorraadkosten)"
 
@@ -4170,7 +4206,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "meerdere"
 
@@ -4248,8 +4284,8 @@ msgstr "Afbeelding downloaden van URL"
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4302,7 @@ msgstr "Klant"
 msgid "Uses default currency"
 msgstr "Gebruik standaard valuta"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4382,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Inkooporders"
 
@@ -4369,7 +4405,7 @@ msgstr "Nieuwe Inkooporder"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Verkooporders"
 
@@ -4394,7 +4430,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4658,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Voorraadartikelen"
 
@@ -4675,7 +4711,7 @@ msgstr "Label"
 msgid "Label template file"
 msgstr "Label template bestand"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4737,7 @@ msgstr "Hoogte [mm]"
 msgid "Label height, specified in mm"
 msgstr "Label hoogte, gespecificeerd in mm"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Bestandsnaam Patroon"
 
@@ -4715,8 +4751,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Filters"
 
@@ -4847,7 +4883,7 @@ msgstr "Totaalprijs"
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4897,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr "Inkooporder"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4910,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Link naar externe pagina"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr "Verwachte datum voor levering van de bestelling. De bestelling wordt achterstallig na deze datum."
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Aangemaakt Door"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Gebruiker of groep verantwoordelijk voor deze order"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Orderreferentie"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr "Inkooporder status"
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "Bedrijf waar de artikelen van worden besteld"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr "Leveranciersreferentie"
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr "Order referentiecode van leverancier"
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr "ontvangen door"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr "Datum van uitgifte"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr "Order uitgegeven op datum"
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr "Order voltooid op datum"
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr "Onderdeelleverancier moet overeenkomen met de Inkooporderleverancier"
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr "Hoeveelheid moet een positief getal zijn"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "Bedrijf waaraan de artikelen worden verkocht"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr "Klantreferentie "
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr "Klant order referentiecode"
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Verzenddatum"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr "verzonden door"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr "Order kan niet worden voltooid omdat er geen onderdelen aangewezen zijn"
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr "Bestelling kan niet worden voltooid omdat er onvolledige verzendingen aanwezig zijn"
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr "Order kan niet worden voltooid omdat er onvolledige artikelen aanwezig zijn"
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr "Hoeveelheid artikelen"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr "Artikelregel referentie"
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr "Artikel notities"
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr "Context"
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr "Additionele context voor deze regel"
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr "Stukprijs"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr "Leveranciersonderdeel moet overeenkomen met leverancier"
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr "verwijderd"
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr "Order"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr "Leveranciersonderdeel"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5097,341 @@ msgstr "Leveranciersonderdeel"
 msgid "Received"
 msgstr "Ontvangen"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr "Aantal ontvangen artikelen"
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Inkoopprijs"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr "Aankoopprijs per stuk"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "Waar wil de inkoper dat dit artikel opgeslagen wordt?"
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr "Virtueel onderdeel kan niet worden toegewezen aan een verkooporder"
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr "Alleen verkoopbare onderdelen kunnen aan een verkooporder worden toegewezen"
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "Verkoopprijs"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Prijs per stuk"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr "Verzonden hoeveelheid"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr "Datum van verzending"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr "Gecontroleerd door"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr "Gebruiker die deze zending gecontroleerd heeft"
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr "Zending"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr "Zendingsnummer"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "Volgnummer"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr "Zending volginformatie"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr "Factuurnummer"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr "Referentienummer voor bijbehorende factuur"
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr "Verzending is al verzonden"
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr "Zending heeft geen toegewezen voorraadartikelen"
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr "Voorraadartikel is niet toegewezen"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr "Kan het voorraadartikel niet toewijzen aan een regel met een ander onderdeel"
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr "Kan voorraad niet toewijzen aan een regel zonder onderdeel"
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "Toewijzingshoeveelheid kan niet hoger zijn dan de voorraadhoeveelheid"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "Hoeveelheid moet 1 zijn voor geserialiseerd voorraadartikel"
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr "Verkooporder komt niet overeen met zending"
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr "Verzending komt niet overeen met verkooporder"
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr "Regel"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr "Verzendreferentie verkooporder"
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr "Artikel"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr "Selecteer voorraadartikel om toe te wijzen"
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr "Voer voorraadtoewijzingshoeveelheid in"
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr "Order kan niet worden geannuleerd"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr "Order is niet open"
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr "Valuta Inkoopprijs"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr "Leveranciersonderdeel moet worden gespecificeerd"
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr "Inkooporder moet worden gespecificeerd"
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr "De leverancier moet overeenkomen met de inkooporder"
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr "Inkooporder moet overeenkomen met de leverancier"
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr "Artikel"
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr "Artikelregel komt niet overeen met inkooporder"
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr "Selecteer bestemmingslocatie voor ontvangen artikelen"
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Voer serienummers in voor inkomende voorraadartikelen"
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr "Streepjescode is al in gebruik"
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen"
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr "Artikelen moeten worden opgegeven"
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr "Bestemmingslocatie moet worden opgegeven"
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr "Geleverde streepjescodewaarden moeten uniek zijn"
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr "Valuta verkoopprijs"
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr "Geen verzenddetails opgegeven"
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr "Artikelregel is niet gekoppeld aan deze bestelling"
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr "Hoeveelheid moet positief zijn"
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr "Voer serienummers in om toe te wijzen"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr "Verzending is al verzonden"
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr "Zending is niet gekoppeld aan deze bestelling"
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr "Geen overeenkomst gevonden voor de volgende serienummers"
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr "De volgende serienummers zijn al toegewezen"
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5835,12 @@ msgstr "{part} stukprijs bijgewerkt naar {price}"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "{part} stukprijs bijgewerkt naar {price} en aantal naar {qty}"
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "Onderdeel-id"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Onderdeel naam"
@@ -5813,20 +5849,20 @@ msgstr "Onderdeel naam"
 msgid "Part Description"
 msgstr "Onderdeel omschrijving"
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5887,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5910,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5933,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5941,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Onderdelen"
 
@@ -5921,7 +5957,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5973,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr "Binnenkomende Inkooporder"
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr "Uitgaande Verkooporder"
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr "Geproduceerde voorraad door Productieorder"
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr "Voorraad vereist voor Productieorder"
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "Standaard locatie"
@@ -6036,363 +6072,363 @@ msgstr "Totale Voorraad"
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Onderdeel Categorie"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Onderdeel Categorieën"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Standaard locatie voor onderdelen in deze categorie"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr "Onderdelen mogen niet rechtstreeks aan een structurele categorie worden toegewezen, maar kunnen worden toegewezen aan subcategorieën."
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Onderdeel naam"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "Onderdeel Categorie"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr "Intern Onderdeelnummer"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr "Standaardleverancier"
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr "Eenheden voor dit onderdeel"
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr "Onderdeel voor voorraadcontrole"
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6440,330 @@ msgstr ""
 msgid "Date"
 msgstr "Datum"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr "Aantal onderdelen"
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr "De template van de parameter moet uniek zijn"
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr "Parameternaam"
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr "Parameter Template"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr "Parameterwaarde"
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr "Standaard Parameter Waarde"
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7241,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8093,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8264,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8430,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr "Filters inkooporder"
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr "Verkooporder zoekopdracht filters"
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8721,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8798,7 @@ msgstr "Voorraadlocatie"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Voorraadlocaties"
 
@@ -10071,7 +10107,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Verwijderen"
 
@@ -13248,7 +13284,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13927,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14164,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po
index bdc6373a13d7..f850c56030d6 100644
--- a/InvenTree/locale/no/LC_MESSAGES/django.po
+++ b/InvenTree/locale/no/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:51\n"
 "Last-Translator: \n"
 "Language-Team: Norwegian\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Ingen verdi angitt"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Kunne ikke konvertere {original} til {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Ugyldig mengde oppgitt"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Ugyldig mengde oppgitt ({exc})"
@@ -59,10 +59,10 @@ msgstr "Oppgi dato"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Det oppgitte e-postdomenet er ikke godkjent."
 msgid "Registration is disabled."
 msgstr "Registrering er deaktivert."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Ugyldig mengde oppgitt"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Tom serienummerstreng"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Duplisert serienummer"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Ugyldig gruppesekvens: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Gruppesekvens {group} overskrider tillatt antall ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Ugyldig gruppesekvens: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Ingen serienummer funnet"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Antall unike serienumre ({len(serials)}) må samsvare med antallet ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Fjern HTML-tagger fra denne verdien"
 
@@ -405,10 +405,10 @@ msgstr "Vedlegg"
 msgid "Select file to attach"
 msgstr "Velg fil å legge ved"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Velg fil å legge ved"
 msgid "Link"
 msgstr "Lenke"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Lenke til ekstern URL"
@@ -436,10 +436,10 @@ msgstr "Kommentar"
 msgid "File comment"
 msgstr "Kommentar til fil"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Duplikatnavn kan ikke eksistere under samme overordnede"
 msgid "Invalid choice"
 msgstr "Ugyldig valg"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Ugyldig valg"
 msgid "Name"
 msgstr "Navn"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Serverfeil"
 msgid "An error has been logged by the server."
 msgstr "En feil har blitt logget av serveren."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Må være et gyldig tall"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Returnert"
 msgid "In Progress"
 msgstr "Pågående"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Om InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Produksjonen må avbrytes før den kan slettes"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Forbruksvare"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Produksjonsordre"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Produksjonsordrer"
 
@@ -1008,17 +1008,23 @@ msgstr "Produksjonsordrer"
 msgid "Invalid choice for parent build"
 msgstr "Ugyldig valg for overordnet produksjon"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+#, fuzzy
+#| msgid "Purchase order must be specified"
+msgid "Responsible user or group must be specified"
+msgstr "Innkjøpsordre må angis"
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Produksjonsordrens del kan ikke endres"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Produksjonsordre-referanse"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1038,27 @@ msgstr "Produksjonsordre-referanse"
 msgid "Reference"
 msgstr "Referanse"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Kort beskrivelse av produksjonen (valgfritt)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Overordnet produksjon"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Produksjonsordre som denne produksjonen er tildelt"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1102,107 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt"
 msgid "Part"
 msgstr "Del"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Velg del å produsere"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Salgsordrereferanse"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Salgsordren denne produksjonen er tildelt til"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Kildeplassering"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Velg plassering å ta lagerbeholdning fra for denne produksjonen (la stå tomt for a ta fra alle lagerplasseringer)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Fullført plassering"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Velg plassering der fullførte artikler vil bli lagret"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Produksjonsmengde"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Antall lagervarer å produsere"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Fullførte artikler"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Antall lagervarer som er fullført"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Produksjonsstatus"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Produksjonsstatuskode"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Batchkode"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Batchkode for denne produksjonsartikkelen"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Opprettelsesdato"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Forventet sluttdato"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Måldato for ferdigstillelse. Produksjonen vil være forfalt etter denne datoen."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Fullført dato"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "fullført av"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Utstedt av"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Brukeren som utstedte denne produksjonsordren"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1213,11 @@ msgstr "Brukeren som utstedte denne produksjonsordren"
 msgid "Responsible"
 msgstr "Ansvarlig"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Bruker eller gruppe ansvarlig for produksjonsordren"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1229,16 @@ msgstr "Bruker eller gruppe ansvarlig for produksjonsordren"
 msgid "External Link"
 msgstr "Ekstern lenke"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Produksjonsprioritet"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Produksjonsordrens prioritet"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1248,57 @@ msgstr "Produksjonsordrens prioritet"
 msgid "Project Code"
 msgstr "Prosjektkode"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Prosjektkode for denne produksjonsordren"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Produksjonsordre {build} er fullført"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "En produksjonsordre er fullført"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Ingen produksjonsartikkel spesifisert"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Produksjonsartikkelen er allerede fullført"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Produksjonsartikkelen samsvarer ikke med produksjonsordren"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Mengden må være større enn null"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "Kvantitet kan ikke være større enn utgangsantallet"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Produksjonsobjekt"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1340,37 @@ msgstr "Produksjonsobjekt"
 msgid "Quantity"
 msgstr "Antall"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Påkrevd antall for produksjonsordre"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Produksjonselement må spesifisere en produksjonsartikkel, da master-del er merket som sporbar"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "Tildelt antall ({q}) kan ikke overstige tilgjengelig lagerbeholdning ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Lagervaren er overtildelt"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Tildelingsantall må være større enn null"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Mengden må være 1 for serialisert lagervare"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "Valgt lagervare samsvarer ikke med BOM-linjen"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1386,19 @@ msgstr "Valgt lagervare samsvarer ikke med BOM-linjen"
 msgid "Stock Item"
 msgstr "Lagervare"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Kildelagervare"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Lagerantall å tildele til produksjonen"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Monteres i"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Lagervare for montering"
 
@@ -1429,7 +1435,7 @@ msgstr "Heltallsverdi kreves for sporbare deler"
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Heltallsverdi kreves, da stykklisten inneholder sporbare deler"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1453,7 @@ msgstr "Automatisk tildeling av serienummer"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Automatisk tildeling av nødvendige artikler med tilsvarende serienummer"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "Følgende serienummer finnes allerede eller er ugyldige"
 
@@ -1455,8 +1461,8 @@ msgstr "Følgende serienummer finnes allerede eller er ugyldige"
 msgid "A list of build outputs must be provided"
 msgstr "En liste over produksjonsartikler må oppgis"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1502,8 @@ msgid "Location for completed build outputs"
 msgstr "Plassering for ferdige produksjonsartikler"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1576,7 @@ msgstr "Godta at lagervarer ikke er fullt tildelt til denne produksjonsordren"
 msgid "Required stock has not been fully allocated"
 msgstr "Nøvendig lagerbeholdning er ikke fullt tildelt"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Godta uferdig"
 
@@ -1610,7 +1616,7 @@ msgstr "bom_item.part må peke på den samme delen som produksjonsordren"
 msgid "Item must be in stock"
 msgstr "Artikkelen må være på lager"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Tilgjengelig antall ({q}) overskredet"
@@ -1623,7 +1629,7 @@ msgstr "Produksjonsartikkel må spesifiseres for tildeling av sporede deler"
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "Produksjonsartikkel kan ikke spesifiseres for tildeling av usporede deler"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "Tildelingsartikler må oppgis"
 
@@ -1663,8 +1669,8 @@ msgstr "Valgfrie artikler"
 msgid "Allocate optional BOM items to build order"
 msgstr "Tildel valgfrie BOM-artikler til produksjonsordre"
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "BOM-artikkel"
 
@@ -1693,15 +1699,15 @@ msgstr "I produksjon"
 msgid "Available Stock"
 msgstr "Tilgjengelig lagerbeholdning"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "Lagerbeholdning kreves for produksjonsordre"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr "Forfalt produksjonsordre"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr "Produksjonsordre {bo} er nå forfalt"
@@ -1818,8 +1824,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Lagerbeholdning er ikke fullt tildelt til denne Produksjonsordren"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1862,8 @@ msgid "Completed Outputs"
 msgstr "Fullførte byggeresultater"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1913,7 @@ msgstr "Lagerkilde"
 msgid "Stock can be taken from any available location."
 msgstr "Lagervare kan hentes fra alle tilgengelige plasseringer."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Destinasjon"
@@ -2121,1542 +2127,1572 @@ msgstr "Prosjektbeskrivelse"
 msgid "User or group responsible for this project"
 msgstr "Bruker eller gruppe ansvarlig for dette prosjektet"
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Innstillingsnøkkel (må være unik - ufølsom for store of små bokstaver)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "Innstillings verdi"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "Valgt verdi er ikke et gyldig alternativ"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "Verdien må være en boolsk verdi"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "Verdien må være et heltall"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "Nøkkelstreng må være unik"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Ingen gruppe"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Et tomt domene er ikke tillatt."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Ugyldig domenenavn: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr "Ingen programtillegg"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Omstart kreves"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "En innstilling har blitt endret som krever en omstart av serveren"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr "Ventende migrasjoner"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr "Antall ventende databasemigreringer"
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "Navn på serverinstans"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr "Strengbeskrivelse for serverinstansen"
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr "Bruk instansnavn"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr "Bruk instansnavnet på tittellinjen"
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr "Begrens visning av 'om'"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr "Vis `about`-modal kun til superbrukere"
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Firmanavn"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Internt firmanavn"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "Base-URL"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "Base-URL for serverinstans"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Standardvaluta"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr "Velg grunnvalutaen for prisberegninger"
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr "Oppdateringsintervall for valuta"
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr "Hvor ofte valutakurser skal oppdateres (sett til null for å deaktiverere)"
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "dager"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr "Valutaoppdaterings-plugin"
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr "Valgt valutaoppdaterings-plugin"
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Last ned fra URL"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Tillat nedlastning av eksterne bilder og filer fra ekstern URL"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr "Nedlastingsgrense"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr "Maksimal tillatt nedlastingsstørrelse for eksternt bilde"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr "User-Agent brukt for å laste ned fra URL"
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr "Tillat overstyring av User-Agent brukt for å laste ned bilder og filer fra eksterne URLer (lå stå blank for standard)"
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr "Streng URL-validering"
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr "Krev skjemaspesifikasjon ved validering av URLer"
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Krev bekreftelse"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Krev eksplisitt brukerbekreftelse for visse handlinger."
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr "Tredybde"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr "Standard tredybde for trevisning. Dypere nivåer kan lastes inn ved behov."
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr "Intervall for oppdateringssjekk"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr "Tidsintervall for å se etter oppdateringer(sett til null for å skru av)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Automatisk sikkerhetskopiering"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Aktiver automatisk sikkerhetskopiering av database og mediafiler"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Automatisk sikkerhetskopieringsintervall"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr "Angi antall dager mellom automatiske sikkerhetskopieringshendelser"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr "Slettingsintervall for oppgaver"
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr "Bakgrunnsoppgaveresultater vil bli slettet etter antall angitte dager"
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr "Slettingsintervall for feillogg"
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr "Feilloggene vil bli slettet etter et angitt antall dager"
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr "Slettingsintervall for varsler"
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr "Brukervarsler slettes etter angitt antall dager"
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Strekkodestøtte"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr "Aktiver støtte for strekkodeleser i webgrensesnittet"
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr "Innlesingsforsinkelse for strekkode"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr "Tidsforsinkelse for behandling av strekkode"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr "Støtte for strekkodewebkamera"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Tillat strekkodelesning via webkamera i nettleseren"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr "Delrevisjoner"
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr "Aktiver revisjonsfeltet for Del"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr "IPN regex"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Regulært uttrykksmønster for matching av internt delnummer"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Tilat duplikat av internt delnummer"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Tillat flere deler å dele samme interne delnummer"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "Tillat redigering av internt delnummer"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Tillat endring av IPN-verdien mens du redigerer en del"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr "Kopier BOM-data fra del"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Kopier BOM-data som standard når du dupliserer en del"
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr "Kopier parameterdata fra del"
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Kopier parameterdata som standard ved duplisering av en del"
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr "Kopier testdata fra del"
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr "Kopier testdata som standard ved duplisering av en del"
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr "Kopier designmaler for kategoriparametere"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr "Kopier parametermaler for kategori ved oppretting av en del"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Mal"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "Deler er maler som standard"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Sammenstilling"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "Deler kan settes sammen fra andre komponenter som standard"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Komponent"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "Deler kan bli brukt som underkomponenter som standard"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Kjøpbar"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Deler er kjøpbare som standard"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Salgbar"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Deler er salgbare som standard"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Sporbar"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Deler er sporbare som standard"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Virtuelle"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Deler er virtuelle som standard"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Vis import i visninger"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr "Vis importveiviseren i noen deler visninger"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Vis relaterte deler"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Vis relaterte deler i en del"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr "Innledende lagerbeholdningsdata"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr "Tillat oppretting av innledende lagerbeholdning når en ny del opprettes"
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr "Innledende leverandørdata"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr "Tillat oppretting av innledende leverandørdata når en ny del opprettes"
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Visningsformat for delnavn"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Format for å vise delnavnet"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr "Standardikon for delkategorier"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr "Standardikon for delkategorier (tomt betyr ingen ikon)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr "Tving parameterenheter"
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr "Hvis det er angitt en enhet, skal parameterverdiene samsvare med de angitte enhetene"
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr "Minimum antall desimalplasser for priser"
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr "Minimum antall desimalplasser som skal vises når man gjengir prisdata"
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr "Maksimalt antall desimalplasser for priser"
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr "Maksimalt antall desimalplasser som skal vises når man gjengir prisdata"
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr "Bruk leverandørpriser"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr "Inkluder leverandørprisbrudd i beregninger av totalpriser"
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr "Innkjøpshistorikkoverstyring"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr "Historiske innkjøpspriser overstyrer leverandørprisnivåer"
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr "Bruk lagervarepriser"
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr "Bruk priser fra manuelt innlagte lagervarer for prisberegninger"
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr "Lagervare prisalder"
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr "Unnta lagervarer som er eldre enn dette antall dager fra prisberegninger"
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr "Bruk Variantpriser"
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr "Inkluder variantpriser i beregninger av totale priser"
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr "Kun aktive varianter"
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr "Bruk kun aktive variantdeler til beregning av variantprising"
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr "Intervall for rekalkulering av priser"
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr "Antall dager før delpriser blir automatisk oppdatert"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Interne Priser"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr "Aktiver interne priser for deler"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr "Intern prisoverstyring"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr "Hvis tilgjengelig, overstyrer interne priser kalkulering av prisområde"
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Aktiver etikettutskrift"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Aktiver utskrift av etiketter fra nettleseren"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "Etikettbilde-DPI"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr "DPI-oppløsning når når det genereres bildefiler for sending til utvidelser for etikettutskrift"
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Aktiver Rapporter"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Aktiver generering av rapporter"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Feilsøkingsmodus"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Generer rapporter i feilsøkingsmodus (HTML-output)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Sidestørrelse"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Standard sidestørrelse for PDF-rapporter"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Aktiver Testrapporter"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Aktiver generering av testrapporter"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr "Legg ved testrapporter"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr "Når det skrives ut en Testrapport, legg ved en kopi av Testrapporten på den assosierte Lagervaren"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr "Globalt Unike Serienummer"
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr "Serienummer for lagervarer må være globalt unike"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "Automatisk tildeling av Serienummer"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr "Aumatisk fyll ut serienummer i skjemaer"
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr "Slett oppbrukt lagerbeholdning"
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Determines default behaviour when a stock item is depleted"
+msgid "Determines default behavior when a stock item is depleted"
 msgstr "Bestemmer standard oppførsel når en lagervare er oppbrukt"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr "Batchkodemal"
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr "Mal for generering av standard batchkoder for lagervarer"
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr "Lagerbeholdning utløper"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr "Aktiver funksjonalitet for utløp av lagerbeholdning"
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr "Selg utløpt lagerbeholdning"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr "Tillat salg av utgått lagerbeholdning"
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr "Foreldet lagerbeholdning tidsintervall"
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr "Antall dager før lagervarer er ansett som foreldet før utløp"
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr "Produsér Utløpt Lagerbeholdning"
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr "Tillat produksjon med utløpt lagerbeholdning"
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr "Kontroll over eierskap av lagerbeholdning"
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr "Aktiver eierskap over lagerplasseringer og -varer"
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr "Lagerplassering standard ikon"
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr "Lagerplassering standard ikon (tomt betyr ingen ikon)"
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr "Vis installerte lagervarer"
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr "Vis installerte lagervarer i lagertabeller"
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr "Produksjonsordre-referansemønster"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr "Nødvendig mønster for å generere Produksjonsordre-referansefeltet"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Ansvarlig"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+#, fuzzy
+#| msgid "Only salable parts can be assigned to a sales order"
+msgid "A responsible owner must be assigned to each order"
+msgstr "Kun salgbare deler kan tildeles en salgsordre"
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr "Aktiver returordrer"
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr "Aktiver returordrefunksjonalitet i brukergrensesnittet"
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr "Returordre-referansemønster"
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr "Rediger fullførte returordrer"
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr "Tillat redigering av returordrer etter de er fullført"
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr "Salgsordre-referansemønster"
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr "Påkrevd mønster for å generere salgsordrereferansefelt"
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr "Salgsordre standard fraktmetode"
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr "Aktiver opprettelse av standard forsendelse med salgsordrer"
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr "Rediger fullførte salgsordrer"
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr "Tillat redigering av salgsordrer etter de har blitt sendt eller fullført"
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr "Referansemønster for innkjøpsordre"
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr "Obligatorisk mønster for generering av referansefelt for innkjøpsordre"
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr "Rediger fullførte innkjøpsordre"
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr "Tillat redigering av innkjøpsordre etter at de har blitt sendt eller fullført"
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr "Autofullfør innkjøpsordrer"
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr "Automatisk merk innkjøpsordre som fullført når alle ordrelinjer er mottatt"
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Aktiver passord glemt"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr "Ativer funskjon for glemt passord på innloggingssidene"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Aktiver registrering"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "Aktiver SSO"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "Aktiver SSO på innloggingssidene"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr "Aktiver SSO-registrering"
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr "Aktiver selvregistrering via SSO for brukere på innloggingssiden"
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "E-postadresse kreves"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr "Krevt at brukere angir e-post ved registrering"
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr "Auto-utfyll SSO-brukere"
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Fyll automatisk ut brukeropplysninger fra SSO-kontodata"
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "E-post to ganger"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr "Spør brukeren om e-post to ganger ved registrering"
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Passord to ganger"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr "Spør brukeren om passord to ganger ved registrering"
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Tillatte domener"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr "Begrens registrering til bestemte domener (kommaseparert, begynner med @)"
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr "Gruppe ved registrering"
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr "Gruppe nye brukere blir tilknyttet ved registrering"
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "Krev MFA"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "Brukere må bruke flerfaktorsikkerhet."
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr "Sjekk utvidelser ved oppstart"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr "Sjekk at alle utvidelser er installert ved oppstart - aktiver i containermiljøer"
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr "Aktiver URL-integrasjon"
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr "Tillat utvidelser å legge til URL-ruter"
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr "Aktiver navigasjonsintegrasjon"
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr "Tillat utvidelser å integrere mot navigasjon"
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr "Aktiver app-integrasjon"
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr "Tillat utvidelser å legge til apper"
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr "Aktiver tidsplanintegrasjon"
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Tillat utvidelser å kjøre planlagte oppgaver"
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr "Aktiver hendelsesintegrasjon"
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr "Tillat utvidelser å reagere på interne hendelser"
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr "Aktiver prosjektkoder"
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr "Aktiver prosjektkoder for å spore prosjekter"
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr "Varetellingsfunksjonalitet"
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr "Aktiver varetellingsfunksjonalitet for å registrere lagernivåer og regne ut lagerverdi"
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr "Ekskluder eksterne plasseringer"
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr "Eksluder lagervarer i eksterne plasseringer fra varetellinger"
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr "Automatisk varetellingsperiode"
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr "Antall dager mellom automatisk varetellingsregistrering (sett til null for å deaktivere)"
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr "Rapportslettingsintervall"
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr "Varetellingsrapporter vil slettes etter angitt antall dager"
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr "Vis brukernes fulle navn"
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr "Vis brukernes fulle navn istedet for brukernavn"
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Innstillingsnøkkel (må være unik - ufølsom for store og små bokstaver"
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr "Skjul inaktive elementer"
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr "Skjul inaktive deler i resultater som vises på hjemmesiden"
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "Vis abonnerte deler"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr "Vis abonnerte deler på startsiden"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "Vis abonnerte kategorier"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr "Vis abonnerte delkatekorier på startsiden"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "Vis nyeste deler"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "Vis nyeste deler på startsiden"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Show unvalidated BOMs"
+msgid "Show invalid BOMs"
 msgstr "Vis uvaliderte stykklister"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Vis stykklister som venter på validering på startsiden"
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr "Vis nylige lagerendringer"
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr "Vis nylig endrede lagervarer på startsiden"
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr "Vis lav lagerbeholdning"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr "Vis lave lagervarer på startsiden"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr "Vis tomme lagervarer"
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr "Vis tom lagerbeholdning på startsiden"
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr "Vis nødvendig lagerbeholdning"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Vis lagervarer som trengs for produksjon på startsiden"
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr "Vis utløpt lagerbeholdning"
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr "Vis utløpte lagervarer på startsiden"
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr "Vis foreldet lagerbeholdning"
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr "Vis foreldet lagerbeholdning på startsiden"
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr "Vis ventende produksjoner"
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr "Vi ventende produksjoner på startsiden"
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr "Vis forfalte produksjoner"
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr "Vis forfalte produksjoner på startsiden"
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr "Vis utestående Innkjøpsordrer"
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr "Vis utestående Innkjøpsordrer på startsiden"
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr "Vis forfalte Innkjøpsordrer"
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr "Vis forfalte Innkjøpsordrer på startsiden"
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr "Vis utestående Salgsordrer"
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr "Vis utestående Salgsordrer på startsiden"
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr "Vis forfalte SOer"
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr "Vis forfalte SOer på startsiden"
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr "Vis ventende SO-forsendelser"
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr "Vis ventende SO-forsendelser på startsiden"
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Vis Nyheter"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr "Vis nyheter på startsiden"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr "Innebygd etikettvisning"
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "Vis PDF-etiketter i nettleseren fremfor å lastes ned som en fil"
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr "Standard etikettskriver"
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr "Konfigurer hvilken etikettskriver som skal være valgt som standard"
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr "Innebygd rapportvisning"
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "Vis PDF-rapporter i nettleseren fremfor å lastes ned som en fil"
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Søk i Deler"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr "Vis deler i forhåndsvsningsvinduet for søk"
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr "Søk i Leverandørdeler"
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr "Vis leverandørdeler i forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr "Søk i Produsentdeler"
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr "Vis produsentdeler i forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr "Skjul Inaktive Deler"
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr "Ekskluder inaktive deler fra forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr "Søk i kategorier"
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr "Vis delkategorier i forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr "Søk i lagerbeholdning"
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr "Vis lagervarer i forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr "Skjul utilgjengelige Lagervarer"
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr "Ekskluder lagervarer som ikke er tilgjengelige fra forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr "Søk i Plasseringer"
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr "Vis lagerplasseringer i forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr "Søk i Firma"
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr "Vis firma i forhåndsvsningsvinduet for søk"
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr "Søk i Produksjonsordrer"
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr "Vis produksjonsordrer i forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr "Søk i Innkjøpsordrer"
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr "Vis innkjøpsordrer i forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Ekskluder inaktive Innkjøpsordrer"
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr "Ekskluder inaktive innkjøpsordrer fra forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr "Søk i Salgsordrer"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr "Vis salgsordrer i forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr "Ekskluder Inaktive Salgsordrer"
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Ekskluder inaktive salgsordrer fra forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr "Søk i Returordrer"
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr "Vis returordrer i forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr "Ekskluder Inaktive Returordrer"
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr "Ekskluder inaktive returordrer fra forhåndsvisningsvinduet for søk"
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr "Forhåndsvisning av søkeresultater"
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr "Antall resultater å vise i hver seksjon av søkeresultatsforhåndsvisningen"
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr "Regex-søk"
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr "Aktiver regulære uttrykk i søkeord"
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr "Helordsøk"
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr "Søk returnerer resultater for treff med hele ord"
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "Vis antall i skjemaer"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr "Vis antall tilgjengelige deler i noen skjemaer"
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr "Escape-knappen lukker skjemaer"
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr "Bruk Escape-knappen for å lukke modal-skjemaer"
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr "Fast navigasjonsbar"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr "Navigasjonsbarens posisjon er fast på toppen av skjermen"
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Datoformat"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr "Foretrukket format for å vise datoer"
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Delplanlegging"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr "Vis delplanleggingsinformasjon"
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr "Lagertelling for Del"
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr "Vis lagertellingsinformasjon for del (om lagertellingsfunksjonalitet er aktivert)"
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr "Tabellstrenglengde"
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr "Maksimal lengdegrense for tekst vist i tabeller"
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr "Standard etikettmal for del"
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr "Etikettmalen for del som velges automatisk"
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr "Standard etikettmal for lagervare"
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr "Etikettmalen for lagervare som velges automatisk"
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr "Standard etikettmal for lagerplassering"
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr "Etikettmalen for lagerplassering som velges automatisk"
 
-#: common/models.py:2410
+#: common/models.py:2462
+#, fuzzy
+#| msgid "Default stock location label template"
+msgid "Default build line label template"
+msgstr "Standard etikettmal for lagerplassering"
+
+#: common/models.py:2464
+#, fuzzy
+#| msgid "The stock item label template to be automatically selected"
+msgid "The build line label template to be automatically selected"
+msgstr "Etikettmalen for lagervare som velges automatisk"
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr "Motta feilrapporter"
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr "Motta varsler om systemfeil"
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr "Antall for prisbrudd"
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Pris"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr "Enhetspris på spesifisert antall"
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr "Endepunkt"
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr "Endepunktet hvor denne webhooken er mottatt"
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr "Navn for webhooken"
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Aktiv"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr "Er webhooken aktiv"
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr "Sjetong"
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr "Nøkkel for tilgang"
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Hemmelig"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr "Delt hemmlighet for HMAC"
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "Melding ID"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr "Unik Id for denne meldingen"
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr "Vert"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr "Verten denne meldingen ble mottatt fra"
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr "Tittel"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr "Overskrift for denne meldingen"
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr "Brødtekst"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr "Innholdet i meldingen"
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr "Endepunktet meldingen ble mottatt fra"
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr "Arbeidet med"
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr "Var arbeidet med denne meldingen ferdig?"
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr "Id"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr "Tittel"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr "Publisert"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "Forfatter"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr "Sammendrag"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr "Les"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr "Er dette nyhetselementet lest?"
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3702,31 @@ msgstr "Er dette nyhetselementet lest?"
 msgid "Image"
 msgstr "Bilde"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr "Bildefil"
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr "Enhetsnavn må være en gyldig identifikator"
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr "Enhetsnavn"
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr "Symbol"
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr "Valgfritt enhetssymbol"
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr "Definisjon"
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr "Enhetsdefinisjon"
 
@@ -3857,7 +3893,7 @@ msgid "Contact email address"
 msgstr "Kontakt e-post"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3937,7 @@ msgstr "Standardvaluta brukt for dette firmaet"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Firma"
@@ -4066,7 +4102,7 @@ msgid "Parameter value"
 msgstr "Parameterverdi"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4126,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "Den sammenkoblede produsentdelen må referere til samme basisdel"
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4162,7 @@ msgid "Supplier part description"
 msgstr "Leverandørens delbeskrivelse"
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4172,11 @@ msgstr "Leverandørens delbeskrivelse"
 msgid "Note"
 msgstr "Notat"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "grunnkostnad"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Minimum betaling (f.eks. lageravgift)"
 
@@ -4170,7 +4206,7 @@ msgstr "Pakkeantall"
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr "Totalt antall i en enkelt pakke. La være tom for enkeltenheter."
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "flere"
 
@@ -4248,8 +4284,8 @@ msgstr "Last ned bilde fra URL"
 msgid "Delete image"
 msgstr "Slett bilde"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4302,7 @@ msgstr "Kunde"
 msgid "Uses default currency"
 msgstr "Bruker standardvaluta"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4382,7 @@ msgstr "Leverandørs lagerbeholdning"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Innkjøpsordrer"
 
@@ -4369,7 +4405,7 @@ msgstr "Ny innkjøpsordre"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Salgsordre"
 
@@ -4394,7 +4430,7 @@ msgstr "Tildelt lagerbeholdning"
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr "Returordrer"
 
@@ -4622,7 +4658,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Lagervarer"
 
@@ -4675,7 +4711,7 @@ msgstr "Etikett"
 msgid "Label template file"
 msgstr "Etikett-malfil"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4737,7 @@ msgstr "Høyde [mm]"
 msgid "Label height, specified in mm"
 msgstr "Etiketthøyde, spesifisert i mm"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Filnavnmønster"
 
@@ -4715,8 +4751,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr "Søkefiltre (kommaseparert liste over nøkkel=verdi-par)"
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Filtre"
 
@@ -4847,7 +4883,7 @@ msgstr "Total pris"
 msgid "No matching purchase order found"
 msgstr "Ingen samsvarende innkjøpsordre funnet"
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4897,7 @@ msgstr "Ingen samsvarende innkjøpsordre funnet"
 msgid "Purchase Order"
 msgstr "Innkjøpsordre"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4910,184 @@ msgstr "Returordre"
 msgid "Total price for this order"
 msgstr "Total pris for denne ordren"
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr "Ordrevaluta"
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr "Valuta for denne ordren (la stå tom for å bruke firmastandard)"
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr "Kontakten samsvarer ikke med valgt firma"
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr "Ordrebeskrivelse (valgfritt)"
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr "Velg prosjektkode for denne ordren"
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Lenke til ekstern side"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr "Forventet dato for levering av ordre. Bestillingen vil være forfalt etter denne datoen."
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Opprettet av"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Bruker eller gruppe ansvarlig for ordren"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr "Kontaktpunkt for denne ordren"
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr "Selskapsadresse for denne ordren"
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Ordrereferanse"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr "Status for innkjøpsordre"
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "Firma som varene blir bestilt fra"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr "Leverandørreferanse"
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr "Leverandørens ordrereferanse"
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr "mottatt av"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr "Sendt dato"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr "Dato bestillingen ble sendt"
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr "Dato ordre ble fullført"
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr "Delleverandør må matche PO-leverandør"
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr "Mengde må være positiv"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "Firma som varene selges til"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr "Kundereferanse "
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr "Kundens ordrereferanse"
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Forsendelsesdato"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr "sendt av"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr "Bestillingen kan ikke fullføres da ingen deler er tilordnet"
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr "Kun en åpen ordre kan merkes som fullført"
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr "Bestillingen kan ikke fullføres da det finnes ufullstendige forsendelser"
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr "Denne ordren kan ikke fullføres da det fortsatt er ufullstendige artikler"
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr "Antall"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr "Linjereferanse"
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr "Linjenotater"
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr "Måldato for denne linjen (la stå tomt for å bruke måldatoen fra ordren)"
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr "Linjeelementbeskrivelse (valgfritt)"
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr "Kontekst"
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr "Ytterligere kontekst for denne linjen"
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr "Enhetspris"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr "Delens leverandør må samsvare med leverandør"
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr "slettet"
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr "Ordre"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr "Leverandørdel"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5097,341 @@ msgstr "Leverandørdel"
 msgid "Received"
 msgstr "Mottatt"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr "Antall enheter mottatt"
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Innkjøpspris"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr "Enhet-innkjøpspris"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "Hvor vil innkjøper at artikkelen skal lagres?"
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr "Virtuell del kan ikke tildeles salgsordre"
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr "Kun salgbare deler kan tildeles en salgsordre"
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "Salgspris"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Enhets-salgspris"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr "Sendt antall"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr "Dato for forsendelse"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr "Leveringsdato"
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr "Dato for levering av forsendelse"
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr "Sjekket Av"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr "Brukeren som sjekket forsendelsen"
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr "Forsendelse"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr "Forsendelsesnummer"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "Sporingsnummer"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr "Sporingsinformasjon for forsendelse"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr "Fakturanummer"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr "Referansenummer for tilknyttet faktura"
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr "Forsendelsen er allerede sendt"
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr "Forsendelsen har ingen tildelte lagervarer"
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr "Lagervarer er ikke blitt tildelt"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr "Kan ikke tildele lagervare til en linje med annen del"
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr "Kan ikke tildele lagerbeholdning til en linje uten en del"
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "Tildelingsantall kan ikke overstige tilgjengelig lagerbeholdning"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "Antall må være 1 for serialisert lagervare"
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr "Salgsordre samsvarer ikke med forsendelse"
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr "Forsendelsen samsvarer ikke med salgsordre"
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr "Linje"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr "Forsendelsesreferanse for salgsordre"
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr "Artikkel"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr "Velg lagervare å tildele"
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr "Angi lagertildelingsmengde"
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr "Returordre-referanse"
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr "Firmaet delen skal returneres fra"
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr "Returordrestatus"
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr "Kun serialiserte artikler kan tilordnes en Returordre"
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr "Velg artikkel som skal returneres fra kunde"
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr "Mottatt Dato"
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr "Datoen denne returartikkelen ble mottatt"
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr "Utfall"
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr "Utfall for dette linjeelementet"
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr "Kostnad forbundet med retur eller reparasjon for dette linjeelementet"
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr "Ordren kan ikke kanselleres"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr "Tillat ordre å lukkes med ufullstendige linjeelementer"
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr "Ordren har ufullstendige linjeelementer"
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr "Ordren er ikke åpen"
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr "Innkjøpsvaluta"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr "Leverandørdel må angis"
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr "Innkjøpsordre må angis"
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr "Leverandør må samsvare med innkjøpsordre"
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr "Innkjøpsordre må samsvare med leverandør"
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr "Ordrelinje"
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr "Linjeelementet samsvarer ikke med innkjøpsordre"
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr "Velg lagerplassering for mottatte enheter"
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr "Angi batchkode for innkommende lagervarer"
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Angi serienummer for innkommende lagervarer"
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Strekkode"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr "Skannet strekkode"
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr "Strekkode allerede i bruk"
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Heltallsverdi må angis for sporbare deler"
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr "Linjeelementer må være oppgitt"
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr "Målplassering må angis"
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr "Angitte strekkodeverdier må være unike"
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr "Valuta for salgspris"
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr "Ingen forsendelsesopplysninger oppgitt"
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr "Linjeelement er ikke knyttet til denne ordren"
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr "Mengden må være positiv"
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr "Skriv inn serienummer for å tildele"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr "Forsendelsen er allerede sendt"
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr "Forsendelsen er ikke knyttet til denne ordren"
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr "Ingen treff funnet for følgende serienummer"
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr "Følgende serienummer er allerede tildelt"
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr "Returordrelinje"
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr "Linjeelementet samsvarer ikke med returordre"
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr "Linjeelementet er allerede mottatt"
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr "Artikler kan bare mottas mot ordrer som pågår"
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr "Valuta for linje"
 
@@ -5799,12 +5835,12 @@ msgstr "Oppdaterte {part} enhetspris to {price}"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "Oppdaterte {part} enhetspris til {price} og antall til {qty}"
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "Del-ID"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Delnavn"
@@ -5813,20 +5849,20 @@ msgstr "Delnavn"
 msgid "Part Description"
 msgstr "Delbeskrivelse"
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr "IPN"
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr "Revisjon"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Nøkkelord"
@@ -5851,11 +5887,11 @@ msgstr "Standard plasserings-ID"
 msgid "Default Supplier ID"
 msgstr "Standard leverandør-ID"
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr "Variant av"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "Minimal lagerbeholdning"
 
@@ -5874,12 +5910,12 @@ msgstr "Brukt i"
 msgid "Building"
 msgstr "Produseres"
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr "Minimal kostnad"
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr "Maksimal kostnad"
@@ -5897,7 +5933,7 @@ msgstr "Overordnet navn"
 msgid "Category Path"
 msgstr "Sti til kategori"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5941,7 @@ msgstr "Sti til kategori"
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Deler"
 
@@ -5921,7 +5957,7 @@ msgstr "BOM artikkel-ID"
 msgid "Parent IPN"
 msgstr "Overodnet IPN"
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr "Del -IPN"
 
@@ -5937,92 +5973,92 @@ msgstr "Minstepris"
 msgid "Maximum Price"
 msgstr "Makspris"
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr "Innkommende innkjøpsordre"
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr "Utgående salgsordre"
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr "Lagervarer produsert av en produksjonsordre"
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr "Lagervarer påkrevd for produksjonsordre"
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr "Gyldig"
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr "Godkjenn hele Stykklisten"
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr "Dette alternativet må være valgt"
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Kategori"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "Standard plassering"
@@ -6036,363 +6072,363 @@ msgstr "Total lagerbeholdning"
 msgid "Input quantity for price calculation"
 msgstr "Sett inn antall for prisberegning"
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Delkategori"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Delkategorier"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Standardplassering for deler i denne kategorien"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr "Strukturell"
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr "Deler kan ikke tilordnes direkte til en strukturell kategori, men kan tilordnes til underkategorier."
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr "Standard nøkkelord"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr "Standard nøkkelord for deler i denne kategorien"
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr "Ikon"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr "Ikon (valgfritt)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr "Du kan ikke gjøre denne delkategorien strukturell fordi noen deler allerede er tilordnet den!"
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr "Ugyldig valg for overordnet del"
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr "Delen '{self}' kan ikke brukes i BOM for '{parent}' (rekursiv)"
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr "Delen '{parent}' er brukt i BOM for '{self}' (rekursiv)"
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr "IPN må samsvare med regex-mønsteret {pattern}"
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr "Lagervare med dette serienummeret eksisterer allerede"
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "Duplikat av internt delnummer er ikke tillatt i delinnstillinger"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr "Del med dette Navnet, internt delnummer og Revisjon eksisterer allerede."
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr "Deler kan ikke tilordnes strukturelle delkategorier!"
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Delnavn"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr "Er Mal"
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr "Er delen en maldel?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr "Er delen en variant av en annen del?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr "Delbeskrivelse (valgfritt)"
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr "Del-nøkkelord for å øke synligheten i søkeresultater"
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "Delkategori"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr "Internt delnummer"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr "Delrevisjon eller versjonsnummer"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr "Hvor er denne artikkelen vanligvis lagret?"
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr "Standard leverandør"
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr "Standard leverandørdel"
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr "Standard utløp"
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Utløpstid (i dager) for lagervarer av denne delen"
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr "Minimum tillatt lagernivå"
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr "Måleenheter for denne delen"
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr "Kan denne delen bygges fra andre deler?"
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr "Kan denne delen brukes til å bygge andre deler?"
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr "Har denne delen sporing av unike artikler?"
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Kan denne delen kjøpes inn fra eksterne leverandører?"
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr "Kan denne delen selges til kunder?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr "Er denne delen aktiv?"
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "Er dette en virtuell del, som et softwareprodukt eller en lisens?"
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr "Kontrollsum for BOM"
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr "Lagret BOM-kontrollsum"
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr "Stykkliste sjekket av"
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr "Stykkliste sjekket dato"
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr "Opprettingsbruker"
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr "Eier ansvarlig for denne delen"
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr "Siste lagertelling"
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr "Selg flere"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr "Valuta som brukes til å bufre prisberegninger"
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr "Minimal BOM-kostnad"
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr "Minste kostnad for komponentdeler"
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr "Maksimal BOM-kostnad"
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr "Maksimal kostnad for komponentdeler"
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr "Minimal innkjøpskostnad"
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr "Minimal historisk innkjøpskostnad"
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr "Maksimal innkjøpskostnad"
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr "Maksimal historisk innkjøpskostnad"
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr "Minimal intern pris"
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr "Minimal kostnad basert på interne prisbrudd"
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr "Maksimal intern pris"
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr "Maksimal kostnad basert på interne prisbrudd"
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr "Minimal leverandørpris"
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr "Minimumspris for del fra eksterne leverandører"
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr "Maksimal leverandørpris"
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr "Maksimalpris for del fra eksterne leverandører"
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr "Minimal Variantkostnad"
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr "Beregnet minimal kostnad for variantdeler"
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr "Maksimal Variantkostnad"
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr "Beregnet maksimal kostnad for variantdeler"
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr "Overstyr minstekostnad"
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr "Overstyr maksimal kostnad"
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr "Beregnet samlet minimal kostnad"
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr "Beregnet samlet maksimal kostnad"
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr "Minimal salgspris"
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr "Minimal salgspris basert på prisbrudd"
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr "Maksimal Salgspris"
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr "Maksimal salgspris basert på prisbrudd"
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr "Minimal Salgskostnad"
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr "Minimal historisk salgspris"
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr "Maksimal Salgskostnad"
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr "Maksimal historisk salgspris"
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr "Del for varetelling"
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr "Antall"
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr "Antall individuelle lagerenheter på tidspunkt for varetelling"
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr "Total tilgjengelig lagerbeholdning på tidspunkt for varetelling"
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6440,330 @@ msgstr "Total tilgjengelig lagerbeholdning på tidspunkt for varetelling"
 msgid "Date"
 msgstr "Dato"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr "Dato for utført lagertelling"
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr "Flere notater"
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr "Bruker som utførte denne lagertellingen"
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr "Minimal lagerkostnad"
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr "Estimert minimal kostnad for lagerbeholdning"
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr "Maksimal lagerkostnad"
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr "Estimert maksimal kostnad for lagerbeholdning"
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr "Rapport"
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr "Lagertellingsrapportfil (generert internt)"
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr "Antall deler"
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr "Antall deler dekket av varetellingen"
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr "Bruker som forespurte varetellingsrapporten"
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr "Testmaler kan bare bli opprettet for sporbare deler"
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr "Testnavn"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr "Angi et navn for testen"
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr "Testbeskrivelse"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr "Legg inn beskrivelse for denne testen"
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr "Påkrevd"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr "Er det påkrevd at denne testen bestås?"
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr "Krever verdi"
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr "Krever denne testen en verdi når det legges til et testresultat?"
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr "Krever vedlegg"
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr "Krever denne testen et filvedlegg når du legger inn et testresultat?"
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr "Sjekkboksparameter kan ikke ha enheter"
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr "Sjekkboksparameter kan ikke ha valg"
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr "Valg må være unike"
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr "Navn på parametermal må være unikt"
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr "Parameternavn"
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr "Fysisk enheter for denne parameteren"
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr "Parameterbeskrivelse"
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr "Sjekkboks"
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr "Er dette parameteret en sjekkboks?"
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr "Valg"
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr "Gyldige valg for denne parameteren (kommaseparert)"
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr "Ugyldig valg for parameterverdi"
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr "Overordnet del"
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr "Parametermal"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr "Data"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr "Parameterverdi"
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr "Standardverdi"
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr "Standard Parameterverdi"
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr "Del-ID eller delnavn"
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr "Unik del-ID-verdi"
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr "Delens interne delnummerverdi"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr "Nivå"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr "BOM-nivå"
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr "Velg overordnet del"
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr "Underordnet del"
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr "Velg del som skal brukes i BOM"
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr "BOM-antall for denne BOM-artikkelen"
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr "Denne BOM-artikkelen er valgfri"
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr "Denne BOM-artikkelen er forbruksvare (den spores ikke i produksjonsordrer)"
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Svinn"
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Forventet produksjonssvinn (absolutt eller prosent)"
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr "BOM-artikkelreferanse"
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr "BOM-artikkelnotater"
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr "Kontrollsum"
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr "BOM-linje kontrollsum"
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr "Godkjent"
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr "Denne BOM-artikkelen er godkjent"
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr "Arves"
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr "Denne BOM-artikkelen er arvet fra stykkliste for variantdeler"
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr "Tillat Varianter"
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr "Lagervarer for variantdeler kan brukes for denne BOM-artikkelen"
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr "Antall må være heltallsverdi for sporbare deler"
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr "Underordnet del må angis"
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr "BOM-artikkel erstatning"
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr "Erstatningsdel kan ikke være samme som hoveddelen"
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr "Overordnet BOM-artikkel"
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr "Erstatningsdel"
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr "Del 1"
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr "Del 2"
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr "Velg relatert del"
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr "Del-forhold kan ikke opprettes mellom en del og seg selv"
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr "Duplikatforhold eksisterer allerede"
 
@@ -7205,7 +7241,7 @@ msgstr "Legg til lagertellingsinformasjon"
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr "Lagertelling"
 
@@ -8057,7 +8093,7 @@ msgstr "Kantlinjer"
 msgid "Print a border around each label"
 msgstr "Skriv ut en kant rundt hver etikett"
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr "Liggende"
 
@@ -8228,7 +8264,7 @@ msgstr "Utvidelse"
 msgid "Method"
 msgstr "Metode"
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr "Ingen forfatter funnet"
 
@@ -8394,111 +8430,111 @@ msgstr "Legal"
 msgid "Letter"
 msgstr "Letter"
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr "Malnavn"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr "Rapportmalfil"
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr "Beskrivelse av rapportmal"
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr "Rapportrevisjonsnummer (øker automatisk)"
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr "Sidestørrelse for PDF-rapporter"
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr "Generer rapport i landskapsorientering"
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr "Mønster for å generere rapportfilnavn"
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr "Rapportmal er aktiver"
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr "Lagervare-søkefilter (kommaseparert liste over nøkkel=verdi-par)"
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr "Inkluder installerte tester"
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr "Inkluder testresultater for lagervarer installert i sammenstilt artikkel"
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr "Produksjonsfiltre"
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr "Produksjons-søkefilter (kommaseparert liste over nøkkel=verdi-par"
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr "Delfiltre"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr "Del-søkefilter (kommaseparert liste over nøkkel=verdi-par"
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr "Innkjøpsordre-søkefilter"
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr "Salgsordre-søkefilter"
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr "Returordre-søkefilter"
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr "Snutt"
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr "Rapportsnuttfil"
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr "Filbeskrivelse for snutt"
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr "Ressurs"
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr "Rapportressursfil"
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr "Ressursfilbeskrivelse"
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr "spørringsfiltre for lagerplassering (kommadelt liste av nøkkel=verdi-par)"
 
@@ -8685,60 +8721,60 @@ msgstr "Slett når oppbrukt"
 msgid "Expiry Date"
 msgstr "Utløpsdato"
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr "Ekstern plassering"
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr "Del-tre"
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr "Utløpsdato før"
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr "Utløpsdato etter"
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr "Foreldet"
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr "Antall kreves"
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr "Gyldig del må oppgis"
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr "Oppgitt leverandørdel eksisterer ikke"
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr "Leverandørdelen har en pakkestørrelse definert, men flagget \"use_pack_size\" er ikke satt"
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr "Serienumre kan ikke angis for en ikke-sporbar del"
 
@@ -8762,7 +8798,7 @@ msgstr "Lagerplassering"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Lagerplasseringer"
 
@@ -10071,7 +10107,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Slett"
 
@@ -13248,7 +13284,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "Legg til"
 
@@ -13891,7 +13927,7 @@ msgstr "Vis varsler"
 msgid "New Notifications"
 msgstr "Nye varslinger"
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr "Administrator"
 
@@ -14128,35 +14164,34 @@ msgstr "Sist gang tokenet ble brukt"
 msgid "Revoked"
 msgstr "Tilbakekalt"
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "Tillatelse satt"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Gruppe"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Visning"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Tillatelse til å se elementer"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Tillatelse til å legge til elementer"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Endre"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Tillatelse til å endre elementer"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Tillatelse til å slette elementer"
-
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index ba14ebe5fe24..8d4b49ad061b 100644
--- a/InvenTree/locale/pl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pl/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:52\n"
 "Last-Translator: \n"
 "Language-Team: Polish\n"
@@ -34,16 +34,16 @@ msgstr "Nieprawidłowa jednostka ({unit})"
 msgid "No value provided"
 msgstr "Nie podano wartości"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Nie udało się przeliczyć {original} na {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Podano nieprawidłową ilość"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Niepoprawna ilość ({exc})"
@@ -59,10 +59,10 @@ msgstr "Wprowadź dane"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Podany e-mail domeny nie został zatwierdzony."
 msgid "Registration is disabled."
 msgstr "Rejestracja jest wyłączona."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Podano nieprawidłową ilość"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Pusty ciąg numeru seryjnego"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Podwójny numer seryjny"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Nieprawidłowy zakres grupy: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Zakres grupy {group} przekracza dozwoloną ilość ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Nieprawidłowa kolejność grup: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Nie znaleziono numerów seryjnych"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Liczba unikalnych numerów seryjnych ({len(serials)}) musi odpowiadać ilości ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Usuń znaczniki HTML z tej wartości"
 
@@ -405,10 +405,10 @@ msgstr "Załącznik"
 msgid "Select file to attach"
 msgstr "Wybierz plik do załączenia"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Wybierz plik do załączenia"
 msgid "Link"
 msgstr "Łącze"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Link do zewnętrznego adresu URL"
@@ -436,10 +436,10 @@ msgstr "Komentarz"
 msgid "File comment"
 msgstr "Komentarz pliku"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Duplikaty nazw nie mogą istnieć pod tym samym rodzicem"
 msgid "Invalid choice"
 msgstr "Błędny wybór"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Błędny wybór"
 msgid "Name"
 msgstr "Nazwa"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Błąd serwera"
 msgid "An error has been logged by the server."
 msgstr "Błąd został zapisany w logach serwera."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Numer musi być prawidłowy"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Zwrócone"
 msgid "In Progress"
 msgstr "W trakcie"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "O InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Kompilacja musi zostać anulowana, zanim będzie mogła zostać usunięta"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Materiał eksploatacyjny"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Zlecenie Budowy"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Zlecenia budowy"
 
@@ -1008,17 +1008,23 @@ msgstr "Zlecenia budowy"
 msgid "Invalid choice for parent build"
 msgstr "Nieprawidłowy wybór kompilacji nadrzędnej"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+#, fuzzy
+#| msgid "Purchase order must be specified"
+msgid "Responsible user or group must be specified"
+msgstr "Zlecenie zakupu musi być określone"
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Nie można zmienić elementu kompletacji"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Odwołanie do zamówienia wykonania"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1038,27 @@ msgstr "Odwołanie do zamówienia wykonania"
 msgid "Reference"
 msgstr "Referencja"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Krótki opis produkcji (opcjonalny)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Budowa nadrzędna"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Zamówienie budowy, do którego budowa jest przypisana"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1102,107 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
 msgid "Part"
 msgstr "Komponent"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Wybierz część do budowy"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Odwołanie do zamówienia sprzedaży"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Lokalizacja źródła"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Wybierz lokalizację, z której pobrać element do budowy (pozostaw puste, aby wziąć z dowolnej lokalizacji)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Lokalizacja docelowa"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Wybierz lokalizację, w której będą przechowywane ukończone elementy"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Ilość do stworzenia"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Ilość przedmiotów do zbudowania"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Ukończone elementy"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Ilość produktów magazynowych które zostały ukończone"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Status budowania"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Kod statusu budowania"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Kod partii"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Kod partii dla wyjścia budowy"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Data utworzenia"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Docelowy termin zakończenia"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Docelowa data zakończenia kompilacji. Po tej dacie kompilacja będzie zaległa."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Data zakończenia"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "zrealizowane przez"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Wydany przez"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Użytkownik, który wydał to zamówienie"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1213,11 @@ msgstr "Użytkownik, który wydał to zamówienie"
 msgid "Responsible"
 msgstr "Odpowiedzialny"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Użytkownik lub grupa odpowiedzialna za te zlecenie produkcji"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1229,16 @@ msgstr "Użytkownik lub grupa odpowiedzialna za te zlecenie produkcji"
 msgid "External Link"
 msgstr "Link Zewnętrzny"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Priorytet budowy"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Priorytet tego zamówienia produkcji"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1248,57 @@ msgstr "Priorytet tego zamówienia produkcji"
 msgid "Project Code"
 msgstr "Kod projektu"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Kod projektu dla tego zlecenia produkcji"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Kolejność kompilacji {build} została zakończona"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Kolejność kompilacji została zakończona"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Nie określono danych wyjściowych budowy"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Budowanie wyjścia jest już ukończone"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Skompilowane dane wyjściowe nie pasują do kolejności kompilacji"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Ilość musi być większa niż zero"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "Ilość nie może być większa niż ilość wyjściowa"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr "Wyjście budowy {serial} nie przeszło wszystkich testów"
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Zbuduj obiekt"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1340,37 @@ msgstr "Zbuduj obiekt"
 msgid "Quantity"
 msgstr "Ilość"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Wymagana ilość dla zlecenia produkcji"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Pozycja magazynowa jest nadmiernie przydzielona"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Alokowana ilość musi być większa niż zero"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Ilość musi wynosić 1 dla serializowanych zasobów"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "Wybrana pozycja magazynowa nie pasuje do pozycji w zestawieniu BOM"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1386,19 @@ msgstr "Wybrana pozycja magazynowa nie pasuje do pozycji w zestawieniu BOM"
 msgid "Stock Item"
 msgstr "Element magazynowy"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Lokalizacja magazynowania przedmiotu"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Ilość zapasów do przydzielenia do produkcji"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Zainstaluj do"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Docelowa lokalizacja magazynowa przedmiotu"
 
@@ -1429,7 +1435,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1453,7 @@ msgstr "Automatycznie przydzielaj numery seryjne"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Automatycznie przydzielaj wymagane elementy z pasującymi numerami seryjnymi"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "Poniższe numery seryjne już istnieją lub są nieprawidłowe"
 
@@ -1455,8 +1461,8 @@ msgstr "Poniższe numery seryjne już istnieją lub są nieprawidłowe"
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1502,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1576,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Akceptuj niekompletne"
 
@@ -1610,7 +1616,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr "Towar musi znajdować się w magazynie"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1629,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1669,8 @@ msgstr "Przedmiot opcjonalny"
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "Element BOM"
 
@@ -1693,15 +1699,15 @@ msgstr "W produkcji"
 msgid "Available Stock"
 msgstr "Dostępna ilość"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1824,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1862,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1913,7 @@ msgstr "Źródło magazynu"
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Przeznaczenie"
@@ -2121,1542 +2127,1562 @@ msgstr "Opis projektu"
 msgid "User or group responsible for this project"
 msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie"
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "Ustawienia wartości"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "Wybrana wartość nie jest poprawną opcją"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "Wartość musi być wartością binarną"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "Wartość musi być liczbą całkowitą"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "Ciąg musi być unikatowy"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Brak grupy"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Pusta domena nie jest dozwolona."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Niepoprawna nazwa domeny: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr "Brak wtyczki"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Wymagane ponowne uruchomienie"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "Zmieniono ustawienie, które wymaga restartu serwera"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr "Oczekujące migracje"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr "Liczba oczekujących migracji bazy danych"
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "Nazwa instancji serwera"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr "Użyj nazwy instancji"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Nazwa firmy"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Wewnętrzna nazwa firmy"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "Bazowy URL"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "Bazowy adres URL dla instancji serwera"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Domyślna waluta"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr "Interwał aktualizacji waluty"
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr "Jak często aktualizować kursy wymiany walut (ustaw zero aby wyłączyć)"
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "dni"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr "Wtyczka aktualizacji waluty"
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Pobierz z adresu URL"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Zezwól na pobieranie zewnętrznych obrazów i plików z zewnętrznego URL"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr "Limit rozmiaru pobierania"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr "Ścisła weryfikacja adresu URL"
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr "Wymagaj specyfikacji schematu podczas sprawdzania poprawności adresów URL"
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Wymagaj potwierdzenia"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Wymagaj wyraźnego potwierdzenia dla określonych działań."
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr "Głębokość drzewa"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr "Domyślna głębokość drzewa dla widoku drzewa. Głębsze poziomy mogą być leniwe, gdy są potrzebne."
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr "Częstotliwość sprawdzania aktualizacji"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr "Jak często aktualizować kursy wymiany walut (ustaw zero aby wyłączyć)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Automatyczna kopia zapasowa"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Włącz automatyczną kopię zapasową bazy danych i plików multimedialnych"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Interwał automatycznego tworzenia kopii zapasowych"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr "Określ liczbę dni między zdarzeniami automatycznej kopii zapasowej"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr "Interwał usuwania zadań"
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Obsługa kodu kreskowego"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr "Wyrażenie regularne IPN"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Zezwól na powtarzający się IPN"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "Zezwól na edycję IPN"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr "Skopiuj BOM komponentu"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Szablon"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Złożenie"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Komponent"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Możliwość zakupu"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Części są domyślnie z możliwością zakupu"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Możliwość sprzedaży"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Części są domyślnie z możliwością sprzedaży"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Możliwość śledzenia"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Części są domyślnie z możliwością śledzenia"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Wirtualny"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Części są domyślnie wirtualne"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Ceny wewnętrzne"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Włącz drukowanie etykiet"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Włącz drukowanie etykiet z interfejsu WWW"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "DPI etykiety"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Włącz raporty"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Tryb Debugowania"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Rozmiar strony"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Domyślna wielkość strony dla raportów PDF"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Włącz generowanie raportów testów"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Odpowiedzialny"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr "Automatycznie wypełniaj zlecenia zakupu"
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr "Automatycznie oznacz zlecenia jako zakończone po odebraniu wszystkich pozycji"
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Włącz opcję zapomnianego hasła"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr "Włącz funkcję zapomnianego hasła na stronach logowania"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Włącz rejestrację"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr "Włącz samodzielną rejestrację dla użytkowników na stronach logowania"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "Włącz SSO"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "Włącz SSO na stronach logowania"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Adres e-mail jest wymagany"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr "Autouzupełnianie użytkowników SSO"
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Automatycznie wypełnij dane użytkownika z danych konta SSO"
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "E-mail dwa razy"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich adres e-mail"
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Hasło dwukrotnie"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich hasło"
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr "Grupuj przy rejestracji"
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "Wymuś MFA"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "Użytkownicy muszą używać zabezpieczeń wieloskładnikowych."
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr "Sprawdź wtyczki przy starcie"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr "Włącz integrację URL"
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr "Włącz wtyczki, aby dodać ścieżki URL"
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr "Włącz integrację z aplikacją"
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr "Włącz wtyczki, aby dodać aplikacje"
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Włącz wtyczki, aby uruchamiać zaplanowane zadania"
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter"
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "Pokaż obserwowane części"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr "Pokaż obserwowane części na stronie głównej"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "Pokaż obserwowane kategorie"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr "Pokaż obserwowane kategorie części na stronie głównej"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "Pokaż najnowsze części"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "Pokaż najnowsze części na stronie głównej"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr "Pokaż niski stan magazynowy"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr "Pokaż elementy o niskim stanie na stronie głównej"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr "Pokaż wymagany stan zapasów"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Szukaj części"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr "Ukryj nieaktywne części"
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr "Wyszukaj zlecenia zakupu"
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Wyklucz nieaktywne zlecenia zakupu"
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "Pokaż ilość w formularzach"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr "Stały pasek nawigacyjny"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Format daty"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr "Preferowany format wyświetlania dat"
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Planowanie komponentów"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Cena"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr "Punkt końcowy"
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Aktywny"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Sekret"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr "Współdzielony sekret dla HMAC"
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "Id wiadomości"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr "Unikalny identyfikator dla tej wiadomości"
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr "Host, od którego otrzymano tę wiadomość"
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr "Nagłówek"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr "Nagłówek tej wiadomości"
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr "Zawartość"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "Autor"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3692,31 @@ msgstr ""
 msgid "Image"
 msgstr "Obraz"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3883,7 @@ msgid "Contact email address"
 msgstr "Kontaktowy adres e-mail"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3927,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Firma"
@@ -4066,7 +4092,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4116,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4152,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4162,11 @@ msgstr ""
 msgid "Note"
 msgstr "Uwaga"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "koszt podstawowy"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4196,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "wielokrotność"
 
@@ -4248,8 +4274,8 @@ msgstr "Pobierz obraz z adresu URL"
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4292,7 @@ msgstr "Klient"
 msgid "Uses default currency"
 msgstr "Używa domyślnej waluty"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4372,7 @@ msgstr "Zapasy dostawcy"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Zlecenia zakupu"
 
@@ -4369,7 +4395,7 @@ msgstr "Nowe zamówienie zakupu"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4420,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4648,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Towary"
 
@@ -4675,7 +4701,7 @@ msgstr "Etykieta"
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4727,7 @@ msgstr "Wysokość [mm]"
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Wzór nazwy pliku"
 
@@ -4715,8 +4741,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Filtry"
 
@@ -4847,7 +4873,7 @@ msgstr "Cena całkowita"
 msgid "No matching purchase order found"
 msgstr "Nie znaleziono pasującego zlecenia zakupu"
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4887,7 @@ msgstr "Nie znaleziono pasującego zlecenia zakupu"
 msgid "Purchase Order"
 msgstr "Zlecenie zakupu"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4900,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Link do zewnętrznej witryny"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Utworzony przez"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Odniesienie zamówienia"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr "Status zamówienia zakupu"
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr "odebrane przez"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr "Data wydania"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr "Data wystawienia zamówienia"
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr "Wartość musi być liczbą dodatnią"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Data wysyłki"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr "wysłane przez"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr "Ilość elementów"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr "Zamówienie"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5087,341 @@ msgstr ""
 msgid "Received"
 msgstr "Odebrane"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Cena zakupu"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr "Cena zakupu jednostkowego"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "Gdzie kupujący chce przechowywać ten przedmiot?"
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "Cena sprzedaży"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Jednostkowa cena sprzedaży"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr "Wysłana ilość"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr "Data wysyłki"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr "Sprawdzone przez"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr "Użytkownik, który sprawdził tę wysyłkę"
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr "Przesyłka"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr "Numer przesyłki"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "Numer śledzenia"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr "Informacje o śledzeniu przesyłki"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr "Przesyłka została już wysłana"
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr "Linia"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr "Komponent"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr "Zamówienie nie może zostać anulowane"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr "Zlecenie zakupu musi być określone"
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr "Dostawca musi być zgodny ze zleceniem zakupu"
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr "Zlecenie zakupu musi być zgodne z dostawcą"
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr "Pozycja nie pasuje do zlecenia zakupu"
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Kod kreskowy"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5825,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "ID komponentu"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Nazwa komponentu"
@@ -5813,20 +5839,20 @@ msgstr "Nazwa komponentu"
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr "Wersja"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Słowa kluczowe"
@@ -5851,11 +5877,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr "Wariant"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "Minimalny stan magazynowy"
 
@@ -5874,12 +5900,12 @@ msgstr "Użyte w"
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5923,7 @@ msgstr ""
 msgid "Category Path"
 msgstr "Ścieżka kategorii"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5931,7 @@ msgstr "Ścieżka kategorii"
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Części"
 
@@ -5921,7 +5947,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr "IPN komponentu"
 
@@ -5937,92 +5963,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr "Nadchodzące zlecenie zakupu"
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr "Ważny"
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr "Ta opcja musi być zaznaczona"
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Kategoria"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "Domyślna lokalizacja"
@@ -6036,363 +6062,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Kategoria komponentu"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Kategorie części"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Domyślna lokalizacja dla komponentów w tej kategorii"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr "Domyślne słowa kluczowe"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr "Nieprawidłowy wybór dla części nadrzędnej"
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Nazwa komponentu"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr "Czy szablon"
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr "Czy ta część stanowi szablon części?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr "Czy ta część jest wariantem innej części?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr "Domyślne wygasanie"
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr "Czy ten komponent może być zbudowany z innych komponentów?"
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr "Czy ta część może być użyta do budowy innych części?"
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr "Czy ta część wymaga śledzenia każdego towaru z osobna?"
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr "Czy ta część jest aktywna?"
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "Czy to wirtualna część, taka jak oprogramowanie lub licencja?"
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr "Tworzenie użytkownika"
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr "Ostatnia inwentaryzacja"
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr "Sprzedaj wiele"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6430,330 @@ msgstr ""
 msgid "Date"
 msgstr "Data"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr "Nazwa testu"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr "Testowy opis"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr "Wprowadź opis do tego testu"
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr "Wymagane"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr "Wymaga wartości"
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr "Wymaga załącznika"
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr "Część nadrzędna"
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr "Dane"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr "Wartość parametru"
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr "Wartość domyślna"
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr "Unikalny wartość ID komponentu"
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr "Wartość IPN części"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr "Poziom"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr "Wybierz część nadrzędną"
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr "Podczęść"
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr "Ten element BOM jest opcjonalny"
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr "Notatki pozycji BOM"
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr "Suma kontrolna"
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr "Zatwierdzone"
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr "Zezwalaj na warianty"
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr "Część zastępcza"
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr "Część 1"
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr "Część 2"
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr "Wybierz powiązaną część"
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7231,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8083,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8254,7 @@ msgstr "Wtyczka"
 msgid "Method"
 msgstr "Metoda"
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr "Nie znaleziono autora"
 
@@ -8394,111 +8420,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr "Nazwa szablonu"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr "Plik szablonu raportu"
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr "Opis szablonu raportu"
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr "Numer zmiany raportu (przyrasta automatycznie)"
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr "Domyślna wielkość strony dla raportów PDF"
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr "Renderuj raport w orientacji poziomej"
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr "Wzorzec generowania nazw plików raportu"
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr "Szablon raportu jest włączony"
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr "Filtr części"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr "Filtry zapytania zleceń zakupu"
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr "Wycinek"
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8711,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr "Data ważności"
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8788,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Lokacje stanu magazynowego"
 
@@ -10071,7 +10097,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Usuń"
 
@@ -13248,7 +13274,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "Dodaj"
 
@@ -13891,7 +13917,7 @@ msgstr "Pokaż powiadomienia"
 msgid "New Notifications"
 msgstr "Nowe powiadomienia"
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14154,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "Uprawnienia nadane"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Grupa"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Widok"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Uprawnienie do wyświetlania przedmiotów"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Uprawnienie do dodawania przedmiotów"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Zmień"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Uprawnienie do edycji przedmiotów"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Uprawnienie do usuwania przedmiotów"
-
diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po
index 75a1ab762a02..648d6c9acd14 100644
--- a/InvenTree/locale/pt/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pt/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:52\n"
 "Last-Translator: \n"
 "Language-Team: Portuguese, Brazilian\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Nenhum valor fornecido"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Não foi possível converter {original} para {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Quantidade fornecida inválida"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Quantidade fornecida inválida ({exc})"
@@ -59,10 +59,10 @@ msgstr "Insira uma Data"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "O domínio de e-mail providenciado não foi aprovado."
 msgid "Registration is disabled."
 msgstr "Cadastro está desativado."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Quantidade fornecida inválida"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Número serial em branco"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Número de série duplicado"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Intervalo de grupo inválido: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Intervalo do grupo {group} excede a quantidade permitida ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Sequência de grupo inválida:{group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Nenhum número de série foi encontrado"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Números de série únicos ({len(serials)}) deve corresponder a quantidade ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Remova as \"tags\" HTML deste valor"
 
@@ -405,10 +405,10 @@ msgstr "Anexo"
 msgid "Select file to attach"
 msgstr "Selecione arquivo para anexar"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Selecione arquivo para anexar"
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Link para URL externa"
@@ -436,10 +436,10 @@ msgstr "Comentario"
 msgid "File comment"
 msgstr "Comentario sobre arquivo"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Nomes duplicados não podem existir sob o mesmo parental"
 msgid "Invalid choice"
 msgstr "Escolha inválida"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Escolha inválida"
 msgid "Name"
 msgstr "Nome"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Erro de servidor"
 msgid "An error has been logged by the server."
 msgstr "Log de erro salvo pelo servidor."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Preicsa ser um numero valido"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Retornado"
 msgid "In Progress"
 msgstr "Em Progresso"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Sobre o InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Produção deve ser cancelada antes de ser deletada"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Consumível"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Ondem de Produção"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Ordens de Produções"
 
@@ -1008,17 +1008,23 @@ msgstr "Ordens de Produções"
 msgid "Invalid choice for parent build"
 msgstr "Escolha de Produção parental inválida"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+#, fuzzy
+#| msgid "Purchase order must be specified"
+msgid "Responsible user or group must be specified"
+msgstr "O pedido de compra deve ser especificado"
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Peça da ordem de produção não pode ser alterada"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Referência do pedido de produção"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1038,27 @@ msgstr "Referência do pedido de produção"
 msgid "Reference"
 msgstr "Referência"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Breve descrição da produção (opcional)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Produção Progenitor"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Pedido de produção para qual este serviço está alocado"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1102,107 @@ msgstr "Pedido de produção para qual este serviço está alocado"
 msgid "Part"
 msgstr "Peça"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Selecionar peça para produção"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Referência do pedido de venda"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Pedido de Venda para qual esta produção está alocada"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Local de Origem"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Selecione a localização para pegar do estoque para esta produção (deixe em branco para tirar a partir de qualquer local de estoque)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Local de Destino"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Selecione o local onde os itens concluídos serão armazenados"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Quantidade de Produção"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Número de itens em estoque para produzir"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Itens concluídos"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Número de itens em estoque concluídos"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Progresso da produção"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Código de situação da produção"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Código de Lote"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Código do lote para esta saída de produção"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Criado em"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Data alvo final"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Data alvo para finalização de produção. Estará atrasado a partir deste dia."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Data de conclusão"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "Concluído por"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Emitido por"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Usuário que emitiu este pedido de produção"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1213,11 @@ msgstr "Usuário que emitiu este pedido de produção"
 msgid "Responsible"
 msgstr "Responsável"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Usuário ou grupo responsável para este pedido de produção"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1229,16 @@ msgstr "Usuário ou grupo responsável para este pedido de produção"
 msgid "External Link"
 msgstr "Link Externo"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Prioridade de Produção"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Prioridade deste pedido de produção"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1248,57 @@ msgstr "Prioridade deste pedido de produção"
 msgid "Project Code"
 msgstr "Código do projeto"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Código do projeto para este pedido de produção"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "O Pedido de produção {build} foi concluído!"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Um pedido de produção foi concluído"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Nenhuma saída de produção especificada"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Saída de produção já completada"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Saída da produção não corresponde ao Pedido de Produção"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Quantidade deve ser maior que zero"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "Quantidade não pode ser maior do que a quantidade de saída"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Objeto de produção"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1340,37 @@ msgstr "Objeto de produção"
 msgid "Quantity"
 msgstr "Quantidade"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Quantidade necessária para o pedido de produção"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Item de produção deve especificar a saída, pois peças mestres estão marcadas como rastreáveis"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "Quantidade alocada ({q}) não deve exceder a quantidade disponível em estoque ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "O item do estoque está sobre-alocado"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Quantidade alocada deve ser maior que zero"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Quantidade deve ser 1 para estoque serializado"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "Item estoque selecionado não coincide com linha da LDM"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1386,19 @@ msgstr "Item estoque selecionado não coincide com linha da LDM"
 msgid "Stock Item"
 msgstr "Item de estoque"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Origem do item em estoque"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Quantidade do estoque para alocar à produção"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Instalar em"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Destino do Item do Estoque"
 
@@ -1429,7 +1435,7 @@ msgstr "Quantidade inteira necessária para peças rastreáveis"
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Quantidade inteira necessária, pois a lista de materiais contém peças rastreáveis"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1453,7 @@ msgstr "Alocar Números de Série Automaticamente"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Alocar automaticamente os itens necessários com os números de série correspondentes"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "Os seguintes números de série já existem ou são inválidos"
 
@@ -1455,8 +1461,8 @@ msgstr "Os seguintes números de série já existem ou são inválidos"
 msgid "A list of build outputs must be provided"
 msgstr "Uma lista de saídas de produção deve ser fornecida"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1502,8 @@ msgid "Location for completed build outputs"
 msgstr "Local para saídas de produção concluídas"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1576,7 @@ msgstr "Aceitar que os itens de estoque não foram totalmente alocados para esta
 msgid "Required stock has not been fully allocated"
 msgstr "Estoque obrigatório não foi totalmente alocado"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Aceitar Incompleto"
 
@@ -1610,7 +1616,7 @@ msgstr "bin_item.part deve indicar a mesma peça do pedido de produção"
 msgid "Item must be in stock"
 msgstr "Item deve estar em estoque"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Quantidade disponível ({q}) excedida"
@@ -1623,7 +1629,7 @@ msgstr "Saída de produção deve ser definida para alocação de peças rastrea
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "Saída de produção deve ser definida para alocação de peças não rastreadas"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "Alocação do Item precisa ser fornecida"
 
@@ -1663,8 +1669,8 @@ msgstr "Itens opcionais"
 msgid "Allocate optional BOM items to build order"
 msgstr "Alocar itens LDM opcionais para o pedido de produção"
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "Item LDM"
 
@@ -1693,15 +1699,15 @@ msgstr "Em Produção"
 msgid "Available Stock"
 msgstr "Estoque Disponível"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "Estoque obrigatório para o pedido de produção"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr "Pedido de produção vencido"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr "Pedido de produção {bo} está atrasada"
@@ -1818,8 +1824,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Estoque não foi totalmente alocado para este Pedido de Produção"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1862,8 @@ msgid "Completed Outputs"
 msgstr "Saídas Concluídas"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1913,7 @@ msgstr "Origem do estoque"
 msgid "Stock can be taken from any available location."
 msgstr "O estoque pode ser tirado de qualquer local disponível."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Destino"
@@ -2121,1542 +2127,1572 @@ msgstr "Descrição do projeto"
 msgid "User or group responsible for this project"
 msgstr "Usuário ou grupo responsável por este projeto"
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Senha de configurações (deve ser única — diferencia maiúsculas de minúsculas)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "Valor da Configuração"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "Valor escolhido não é uma opção válida"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "Valor deve ser um valor booleano"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "Valor deve ser um número inteiro"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "A frase senha deve ser diferenciada"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Nenhum grupo"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Um domínio vazio não é permitido."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Nome de domínio inválido: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr "Sem extensão"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Reinicialização necessária"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "Uma configuração que requer uma reinicialização do servidor foi alterada"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr "Migrações pendentes"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr "Número de migrações pendentes na base de dados"
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "Nome da Instância do Servidor"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr "Descritor de frases para a instância do servidor"
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr "Usar nome da instância"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr "Usar o nome da instância na barra de título"
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr "Restringir a exibição 'sobre'"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr "Mostrar 'sobre' modal apenas para superusuários"
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Nome da empresa"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Nome interno da Empresa"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "URL de Base"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "URL Base da instância do servidor"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Moeda Padrão"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr "Selecione a moeda base para cálculos de preços"
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr "Intervalo de Atualização da Moeda"
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr "Com que frequência atualizar as taxas de câmbio (defina como zero para desativar)"
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "dias"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr "Extensão de Atualização de Moeda"
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr "Extensão de Atualização de Moeda a utilizar"
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Baixar do URL"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Permitir baixar imagens remotas e arquivos de URLs externos"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr "Limite de tamanho para baixar"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr "Maior tamanho de imagem remota baixada permitida"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr "Usuário-agente utilizado para baixar da URL"
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr "Permitir a substituição de imagens e arquivos usados baixados por usuário-agente (deixar em branco por padrão)"
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr "Validação rigorosa de URL"
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr "Exigir especificação de esquema ao validar URLs"
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Exigir confirmação"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Exigir confirmação explícita do usuário para uma certa ação."
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr "Profundidade da árvore"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr "Profundidade padrão de visualização da árvore. Níveis mais profundos podem ser carregados gradualmente conforme necessário."
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr "Atualizar Intervalo de Verificação"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr "Frequência para verificar atualizações (defina como zero para desativar)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Cópia de Segurança Automática"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Ativar cópia de segurança automática do banco de dados e arquivos de mídia"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Intervalo de Backup Automático"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr "Especificar o número de dia entre as cópias de segurança"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr "Intervalo para Excluir da Tarefa"
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr "Os resultados da tarefa no plano de fundo serão excluídos após um número especificado de dias"
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr "Intervalo para Excluir do Registro de Erro"
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr "Registros de erros serão excluídos após um número especificado de dias"
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr "Intervalo para Excluir de Notificação"
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr "Notificações de usuários será excluído após um número especificado de dias"
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Suporte aos códigos de barras"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr "Ativar suporte a leitor de código de barras na interface web"
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr "Atraso na entrada de código de barras"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr "Tempo de atraso de processamento de entrada de barras"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr "Suporte a código de barras via Câmera"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Permitir escanear código de barras por câmera pelo navegador"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr "Revisões de peças"
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr "Habilitar campo de revisão para a Peça"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr "Regex IPN"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Padrão de expressão regular adequado para Peça IPN"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Permitir Duplicação IPN"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Permitir que várias peças compartilhem o mesmo IPN"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "Permitir Edição IPN"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Permitir trocar o valor do IPN enquanto se edita a peça"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr "Copiar dados da LDM da Peça"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Copiar dados da LDM por padrão quando duplicar a peça"
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr "Copiar Dados de Parâmetro da Peça"
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Copiar dados de parâmetros por padrão quando duplicar uma peça"
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr "Copiar Dados Teste da Peça"
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr "Copiar dados de teste por padrão quando duplicar a peça"
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr "Copiar Parâmetros dos Modelos de Categoria"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr "Copiar parâmetros do modelo de categoria quando criar uma peça"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Modelo"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "Peças são modelos por padrão"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Montagem"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "Peças podem ser montadas a partir de outros componentes por padrão"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Componente"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "Peças podem ser usadas como sub-componentes por padrão"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Comprável"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Peças são compráveis por padrão"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Vendível"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Peças vão vendíveis por padrão"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Rastreável"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Peças vão rastreáveis por padrão"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Virtual"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Peças são virtuais por padrão"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Mostrar Importações em Visualizações"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr "Exibir o assistente de importação em algumas visualizações de partes"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Mostra peças relacionadas"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Mostrar peças relacionadas para uma peça"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr "Dados Iniciais de Estoque"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr "Permitir Criação de estoque inicial quando adicional uma nova peça"
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr "Dados Iniciais de Fornecedor"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr "Permitir criação de dados iniciais de fornecedor quando adicionar uma nova peça"
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Formato de Exibição do Nome da Peça"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Formato para exibir o nome da peça"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr "Ícone de Categoria de Peça Padrão"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr "Ícone padrão de categoria de peça (vazio significa sem ícone)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr "Forçar Unidades de Parâmetro"
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr "Se as unidades são fornecidas, os valores do parâmetro devem corresponder às unidades especificadas"
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr "Mínimo de Casas Decimais do Preço"
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr "Mínimo número de casas decimais a exibir quando renderizar dados de preços"
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr "Máximo Casas Decimais de Preço"
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr "Número máximo de casas decimais a exibir quando renderizar dados de preços"
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr "Usar Preços do Fornecedor"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr "Incluir quebras de preço do fornecedor nos cálculos de preços globais"
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr "Sobrescrever histórico de compra"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr "Histórico do pedido de compra substitui os intervalos dos preços do fornecedor"
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr "Usar Preços do Item em Estoque"
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr "Usar preço inserido manualmente no estoque para cálculos de valores"
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr "Idade do preço do Item em Estoque"
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr "Não incluir itens em estoque mais velhos que este número de dias no cálculo de preços"
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr "Usar Preço Variável"
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr "Incluir preços variáveis nos cálculos de valores gerais"
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr "Apenas Ativar Variáveis"
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr "Apenas usar peças variáveis ativas para calcular preço variáveis"
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr "Intervalo de Reconstrução de Preços"
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr "Número de dias antes da atualização automática dos preços das peças"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Preços Internos"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr "Habilitar preços internos para peças"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr "Sobrepor Valor Interno"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr "Se disponível, preços internos sobrepõe variação de cálculos de preço"
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Ativar impressão de etiquetas"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Ativar impressão de etiqueta pela interface da internet"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "DPI da Imagem na Etiqueta"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr "Resolução de DPI quando gerar arquivo de imagens para fornecer à extensão de impressão de etiquetas"
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Habilitar Relatórios"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Ativar geração de relatórios"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Modo de depuração"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Gerar relatórios em modo de depuração (saída HTML)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Tamanho da página"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Tamanho padrão da página PDF para relatórios"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Ativar Relatórios Teste"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Ativar geração de relatórios de teste"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr "Anexar Relatórios de Teste"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr "Quando imprimir um Relatório de Teste, anexar uma cópia do mesmo ao item de estoque associado"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr "Seriais Únicos Globais"
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr "Números de série para itens de estoque devem ser globalmente únicos"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "Preenchimento automático de Números Seriais"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr "Preencher números de série automaticamente no formulário"
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr "Excluir Estoque Esgotado"
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Determines default behaviour when a stock item is depleted"
+msgid "Determines default behavior when a stock item is depleted"
 msgstr "Determina o comportamento padrão quando um item de estoque é esgotado"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr "Modelo de Código de Lote"
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr "Modelo para gerar códigos de lote padrão para itens de estoque"
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr "Validade do Estoque"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr "Ativar função de validade de estoque"
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr "Vender estoque expirado"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr "Permitir venda de estoque expirado"
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr "Tempo de Estoque Inativo"
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr "Número de dias em que os itens em estoque são considerados obsoleto antes de vencer"
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr "Produzir Estoque Vencido"
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr "Permitir produção com estoque vencido"
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr "Controle de propriedade do estoque"
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr "Ativar controle de propriedade sobre locais e itens de estoque"
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr "Ícone padrão do local de estoque"
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr "Ícone padrão de local de estoque (vazio significa sem ícone)"
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr "Mostrar Itens de Estoque Instalados"
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr "Exibir itens de estoque instalados nas tabelas de estoque"
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr "Modelo de Referência de Pedidos de Produção"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr "Modelo necessário para gerar campo de referência do Pedido de Produção"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Responsável"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+#, fuzzy
+#| msgid "Only salable parts can be assigned to a sales order"
+msgid "A responsible owner must be assigned to each order"
+msgstr "Apenas peças vendáveis podem ser atribuídas a um pedido de venda"
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr "Ativar Pedidos de Devolução"
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr "Ativar funcionalidade de pedido de retorno na interface do usuário"
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr "Modelo de Referência de Pedidos de Devolução"
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr "Editar os Pedidos de Devolução Concluídos"
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr "Permitir a edição de pedidos de devolução após serem enviados ou concluídos"
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr "Modelo de Referência de Pedidos de Venda"
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr "Modelo necessário para gerar campo de referência do Pedido de Venda"
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr "Envio Padrão de Pedidos de Venda"
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr "Habilitar criação de envio padrão com Pedidos de Vendas"
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr "Editar os Pedidos de Vendas concluídos"
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr "Permitir a edição de pedidos de vendas após serem enviados ou concluídos"
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr "Modelo de Referência de Pedidos de Compras"
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr "Modelo necessário para gerar campo de referência do Pedido de Compra"
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr "Editar Pedidos de Compra Concluídos"
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr "Permitir a edição de pedidos de compras após serem enviados ou concluídos"
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr "Autocompletar Pedidos de Compra"
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr "Marcar automaticamente os pedidos de compra como concluídos quando todos os itens de linha forem recebidos"
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Habitar esquecer senha"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr "Habilitar a função \"Esqueci minha senha\" nas páginas de acesso"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Habilitar cadastro"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr "Ativar auto-registro para usuários na página de entrada"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "Ativar SSO"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "Ativar SSO na página de acesso"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr "Ativar registro SSO"
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr "Ativar auto-registro por SSO para usuários na página de entrada"
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Email obrigatório"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr "Exigir do usuário o e-mail no cadastro"
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr "Auto-preencher usuários SSO"
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Preencher automaticamente os detalhes do usuário a partir de dados da conta SSO"
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "Enviar email duplo"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr "No registro pedir aos usuários duas vezes pelo email"
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Senha duas vezes"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr "No registro pedir aos usuários duas vezes pela senha"
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Domínios permitidos"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr "Restringir registros a certos domínios (separados por vírgula, começando com @)"
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr "Grupo no cadastro"
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr "Grupo ao qual novos usuários são atribuídos no registro"
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "Forçar AMF"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "Os usuários devem usar uma segurança multifator."
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr "Checar extensões no início"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr "Checar que todas as extensões instaladas no início — ativar em ambientes de contêineres"
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr "Verificar por atualizações de plugin"
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr "Habilitar verificações periódicas de atualizações para plugins instalados"
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr "Ativar integração URL"
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr "Ativar extensão para adicionar rotas URL"
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr "Ativar integração de navegação"
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr "Ativar extensões para integrar à navegação"
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr "Ativa integração com aplicativo"
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr "Ativar extensões para adicionar aplicativos"
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr "Ativar integração do calendário"
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Ativar extensões para executar tarefas agendadas"
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr "Ativar integração de eventos"
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr "Ativar extensões para responder a eventos internos"
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr "Habilitar códigos de projeto"
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr "Ativar códigos de projeto para rastrear projetos"
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr "Funcionalidade de Balanço do Inventário"
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr "Ativar funcionalidade de balanço para gravar níveis de estoque e calcular seu valor"
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr "Excluir Locais Externos"
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr "Excluir itens de estoque em locais externos dos cálculos do estoque"
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr "Período de Balanço Automático"
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr "Número de dias entre gravação do balanço de estoque (coloque zero para desativar)"
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr "Intervalo para Excluir o Relatório"
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr "Relatórios de balanço serão apagados após um número de dias especificado"
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr "Mostrar nomes completos dos usuários"
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr "Mostrar Nomes Completos em vez de Nomes de Usuário"
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Senha de configurações (deve ser única — diferencia maiúsculas de minúsculas"
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr "Ocultar peças inativas"
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr "Ocultar peças inativas nos resultados exibidos na página inicial"
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "Mostrar peças subscritas"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr "Mostrar peças subscritas na tela inicial"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "Mostrar categorias subscritas"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr "Mostrar categorias de peças subscritas na tela inicial"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "Mostrar peças mais recentes"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "Mostrar as peças mais recentes na página inicial"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Show unvalidated BOMs"
+msgid "Show invalid BOMs"
 msgstr "Mostrar LDMs não validadas"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Mostrar LDMs que aguardam validação na página inicial"
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr "Mostrar alterações recentes de estoque"
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr "Mostrar itens de estoque alterados recentemente na página inicial"
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr "Mostrar estoque baixo"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr "Mostrar itens de baixo estoque na página inicial"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr "Mostrar estoque esgotado"
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr "Mostrar itens sem estoque na página inicial"
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr "Mostrar estoque necessário"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Mostrar itens de estoque necessários para produções na tela inicial"
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr "Mostrar estoque expirado"
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr "Mostrar expirados itens em estoque na tela inicial"
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr "Mostrar estoque inativo"
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr "Mostrar estoque inativo na tela inicial"
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr "Mostrar produções pendentes"
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr "Mostrar produções pendentes na tela inicial"
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr "Mostrar produções atrasadas"
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr "Mostrar produções atrasadas na tela inicial"
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr "Mostrar pedidos de compra pendentes"
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr "Mostrar os Pedidos de Compras pendentes na página inicial"
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr "Mostrar Pedidos de Compra atrasados"
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr "Mostrar os Pedidos de Compras atrasadas na tela inicial"
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr "Mostrar pedidos de vendas pendentes"
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr "Mostrar os Pedidos de Vendas pendentes na página inicial"
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr "Mostrar Pedidos de Venda atrasados"
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr "Mostrar os Pedidos de Vendas atrasadas na tela inicial"
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr "Mostrar remessas de OV pendentes"
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr "Mostrar envios OV pendentes na tela inicial"
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Mostrar notícias"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr "Mostrar notícias na tela inicial"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr "Mostrar etiqueta em linha"
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "Mostrar etiquetas em PDF no navegador, ao invés de baixar o arquivo"
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr "Impressora de etiquetas padrão"
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr "Configurar qual impressora de etiqueta deve ser selecionada por padrão"
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr "Mostrar relatório em linha"
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "Mostrar relatórios em PDF no navegador, ao invés de baixar o arquivo"
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Procurar Peças"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr "Mostrar peças na janela de visualização de pesquisa"
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr "Buscar Peças do Fornecedor"
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr "Mostrar fornecedor de peças na janela de visualização de pesquisa"
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr "Buscar peças do fabricante"
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr "Mostrar fabricante de peças na janela de visualização de pesquisa"
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr "Ocultar peças inativas"
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr "Não incluir peças inativas na janela de visualização de pesquisa"
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr "Pesquisar Categorias"
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr "Mostrar categoria das peças na janela de visualização de pesquisa"
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr "Pesquisar Estoque"
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr "Mostrar itens do estoque na janela de visualização de pesquisa"
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr "Ocultar itens do estoque indisponíveis"
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr "Não incluir itens de estoque que não estão disponíveis na janela de visualização de pesquisa"
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr "Procurar Locais"
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr "Mostrar locais de estoque na janela de visualização de pesquisa"
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr "Pesquisar empresas"
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr "Mostrar empresas na janela de visualização de pesquisa"
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr "Procurar Pedidos de Produção"
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr "Mostrar pedidos de produção na janela de visualização de pesquisa"
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr "Mostrar Pedido de Compras"
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr "Mostrar pedidos de compra na janela de visualização de pesquisa"
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Não incluir Pedidos de Compras Inativos"
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr "Não incluir pedidos de compras inativos na janela de visualização de pesquisa"
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr "Procurar Pedidos de Vendas"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr "Mostrar pedidos de vendas na janela de visualização de pesquisa"
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr "Não Incluir Pedidos de Compras Inativas"
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Não incluir pedidos de vendas inativos na janela de visualização de pesquisa"
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr "Procurar Pedidos de Devolução"
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr "Mostrar pedidos de devolução na janela de visualização de pesquisa"
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr "Não Incluir Pedidos de Devolução Inativas"
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr "Não incluir pedidos de devolução inativos na janela de visualização de pesquisa"
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr "Mostrar Resultados Anteriores"
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr "Número de resultados mostrados em cada seção da janela de visualização de pesquisa"
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr "Pesquisa de Regex"
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr "Permitir expressôes comuns nas conultas de pesquisas"
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr "Busca de Palavras Inteira"
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr "Pesquisa retorna que palavra inteira coincide"
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "Mostrar Quantidade nos Formulários"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr "Mostrar a quantidade de peças disponíveis em alguns formulários"
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr "Tecla Esc Fecha Formulários"
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr "Usar a tecla Esc para fechar fomulários modais"
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr "Fixar Navbar"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr "A posição do Navbar é fixa no topo da tela"
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Formato da data"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr "Formato preferido para mostrar datas"
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Agendamento de peças"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr "Mostrar informações de agendamento de peças"
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr "Balanço de Peça"
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr "Mostrar informação de balanço da peça (se a funcionalidade de balanço estiver habilitada)"
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr "Comprimento da Tabela de Frases"
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr "Limite máximo de comprimento para frases exibidas nas visualizações de tabela"
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr "Modelo de rótulo padrão da peça"
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr "O modelo de rótulo da peça a ser selecionado automaticamente"
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr "Modelo padrão de item de estoque"
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr "O modelo de rótulo do item a ser selecionado automaticamente"
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr "Modelo de rótulo de localização do estoque padrão"
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr "O modelo de rótulo do local de estoque a ser selecionado automaticamente"
 
-#: common/models.py:2410
+#: common/models.py:2462
+#, fuzzy
+#| msgid "Default stock location label template"
+msgid "Default build line label template"
+msgstr "Modelo de rótulo de localização do estoque padrão"
+
+#: common/models.py:2464
+#, fuzzy
+#| msgid "The stock item label template to be automatically selected"
+msgid "The build line label template to be automatically selected"
+msgstr "O modelo de rótulo do item a ser selecionado automaticamente"
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr "Receber relatório de erros"
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr "Receber notificações para erros do sistema"
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr "Últimas máquinas de impressão utilizadas"
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr "Salvar as últimas máquinas de impressão usadas para um usuário"
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr "Quantidade de Parcelamentos"
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Preço"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr "Preço unitário na quantidade especificada"
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr "Ponto final"
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr "Ponto final em qual o gancho web foi recebido"
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr "Nome para este webhook"
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Ativo"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr "Este gancho web está ativo"
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr "Token"
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr "Token de acesso"
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Segredo"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr "Segredo compartilhado para HMAC"
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "ID da Mensagem"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr "Identificador exclusivo desta mensagem"
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr "Servidor"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr "Servidor do qual esta mensagem foi recebida"
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr "Cabeçalho"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr "Cabeçalho da mensagem"
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr "Corpo"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr "Corpo da mensagem"
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr "Ponto do qual esta mensagem foi recebida"
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr "Trabalhado em"
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr "O trabalho desta mensagem foi concluído?"
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr "Id"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr "Título"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr "Publicado"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "Autor"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr "Resumo"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr "Lida"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr "Esta notícia do item foi lida?"
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3702,31 @@ msgstr "Esta notícia do item foi lida?"
 msgid "Image"
 msgstr "Imagem"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr "Arquivo de imagem"
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr "Nome da unidade deve ser um identificador válido"
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr "Nome da unidade"
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr "Símbolo"
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr "Símbolo de unidade opcional"
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr "Definição"
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr "Definição de unidade"
 
@@ -3857,7 +3893,7 @@ msgid "Contact email address"
 msgstr "Endereço de e-mail do contato"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3937,7 @@ msgstr "Moeda padrão utilizada para esta empresa"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Empresa"
@@ -4066,7 +4102,7 @@ msgid "Parameter value"
 msgstr "Valor do Parâmetro"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4126,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "Parte do fabricante vinculado deve fazer referência à mesma peça base"
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4162,7 @@ msgid "Supplier part description"
 msgstr "Descrição da peça fornecedor"
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4172,11 @@ msgstr "Descrição da peça fornecedor"
 msgid "Note"
 msgstr "Anotação"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "preço base"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Taxa mínima (ex.: taxa de estoque)"
 
@@ -4170,7 +4206,7 @@ msgstr "Quantidade de embalagens"
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr "Quantidade total fornecida em um único pacote. Deixe em branco para itens únicos."
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "múltiplo"
 
@@ -4248,8 +4284,8 @@ msgstr "Baixar imagem do URL"
 msgid "Delete image"
 msgstr "Excluir imagem"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4302,7 @@ msgstr "Cliente"
 msgid "Uses default currency"
 msgstr "Usar moeda padrão"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4382,7 @@ msgstr "Estoque do Fornecedor"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Pedidos de compra"
 
@@ -4369,7 +4405,7 @@ msgstr "Novo Pedido de Compra"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Pedidos de vendas"
 
@@ -4394,7 +4430,7 @@ msgstr "Estoque Atribuído"
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr "Pedidos de Devolução"
 
@@ -4622,7 +4658,7 @@ msgstr "Atualizar Disponibilidade de Peças"
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Itens de Estoque"
 
@@ -4675,7 +4711,7 @@ msgstr "Etiqueta"
 msgid "Label template file"
 msgstr "Arquivo de modelo de etiqueta"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4737,7 @@ msgstr "Altura [mm]"
 msgid "Label height, specified in mm"
 msgstr "Altura da Etiqueta, em mm"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Padrão de Nome de Arquivo"
 
@@ -4715,8 +4751,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr "Filtros de consulta (lista de valores separados por vírgula)"
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Filtros"
 
@@ -4847,7 +4883,7 @@ msgstr "Preço Total"
 msgid "No matching purchase order found"
 msgstr "Nenhum pedido de compra correspondente encontrado"
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4897,7 @@ msgstr "Nenhum pedido de compra correspondente encontrado"
 msgid "Purchase Order"
 msgstr "Pedido de Compra"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4910,184 @@ msgstr "Devolver pedido"
 msgid "Total price for this order"
 msgstr "Preço total deste pedido"
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr "Moeda do pedido"
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr "Moeda para este pedido (deixe em branco para usar o padrão da empresa)"
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr "O contato não corresponde à empresa selecionada"
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr "Descrição do pedido (opcional)"
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr "Selecione o código do projeto para este pedido"
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Link para página externa"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr "Data esperada para entrega do pedido. O Pedido estará atrasado após esta data."
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Criado por"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Usuário ou grupo responsável para este pedido"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr "Ponto de contato para este pedido"
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr "Endereço da empresa para este pedido"
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Referência do pedido"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr "Situação do pedido de compra"
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "Empresa da qual os itens estão sendo encomendados"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr "Referencia do fornecedor"
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr "Código de referência do pedido fornecedor"
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr "recebido por"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr "Data de emissão"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr "Dia que o pedido foi feito"
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr "Dia que o pedido foi concluído"
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr "Fornecedor de peça deve corresponder a fornecedor da OC"
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr "Quantidade deve ser um número positivo"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "Empresa para qual os itens foi vendidos"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr "Referência do Cliente "
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr "Código de Referência do pedido do cliente"
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Data de Envio"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr "enviado por"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr "O pedido não pode ser concluído, pois nenhuma parte foi atribuída"
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr "Apenas um pedido aberto pode ser marcado como completo"
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr "Pedido não pode ser concluído, pois, há envios incompletos"
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr "Pedido não pode ser concluído, pois, há itens na linha incompletos"
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr "Quantidade do item"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr "Referência do Item em Linha"
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr "Observações do Item de Linha"
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr "Data alvo para este item de linha (deixe em branco para usar a data alvo do pedido)"
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr "Descrição item de linha (opcional)"
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr "Contexto"
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr "Contexto adicional para esta linha"
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr "Preço Unitário"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr "A peça do fornecedor deve corresponder ao fornecedor"
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr "excluído"
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr "Pedido"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr "Fornecedor da Peça"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5097,341 @@ msgstr "Fornecedor da Peça"
 msgid "Received"
 msgstr "Recebido"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr "Número de itens recebidos"
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Preço de Compra"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr "Preço unitário de compra"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "Onde o Comprador quer que este item seja armazenado?"
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr "Peça virtual não pode ser atribuída a um pedido de venda"
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr "Apenas peças vendáveis podem ser atribuídas a um pedido de venda"
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "Preço de Venda"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Preço de venda unitário"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr "Quantidade enviada"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr "Data do envio"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr "Data de Entrega"
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr "Data da entrega do envio"
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr "Verificado por"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr "Usuário que verificou esta remessa"
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr "Remessa"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr "Número do Envio"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "Número de Rastreamento"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr "Informação de rastreamento da remessa"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr "Número da Fatura"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr "Número de referência para fatura associada"
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr "O pedido já foi enviado"
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr "Remessa não foi alocada nos itens de estoque"
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr "O item do estoque não foi atribuído"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr "Não é possível alocar o item de estoque para uma linha de uma peça diferente"
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr "Não é possível alocar uma linha sem uma peça"
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "A quantidade de alocação não pode exceder a quantidade em estoque"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "Quantidade deve ser 1 para item de estoque serializado"
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr "Pedidos de venda não coincidem com a remessa"
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr "Remessa não coincide com pedido de venda"
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr "Linha"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr "Referência de remessa do pedido de venda"
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr "Item"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr "Selecione o item de estoque para alocar"
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr "Insira a quantidade de atribuição de estoque"
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr "Referência de Pedidos de Devolução"
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr "Empresa da qual os itens estão sendo retornados"
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr "Estado do pedido de retorno"
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr "Somente itens da série podem ser devolvidos"
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr "Selecione o item a ser devolvido pelo cliente"
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr "Data de Recebimento"
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr "Data que o pedido a ser devolvido foi recebido"
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr "Despesa/gastos"
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr "Gastos com esta linha de itens"
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr "Gastos para reparar e/ou devolver esta linha de itens"
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr "Pedido não pode ser cancelado"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr "Permitir que o pedido seja fechado com itens de linha incompletos"
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr "O pedido tem itens da linha incompletos"
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr "O pedido não está aberto"
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr "Moeda de preço de compra"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr "A peça do fornecedor deve ser especificada"
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr "O pedido de compra deve ser especificado"
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr "O fornecedor deve corresponder o pedido de compra"
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr "Pedido de compra deve corresponder ao fornecedor"
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr "Itens de linha"
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr "O item de linha não corresponde ao pedido de compra"
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr "Selecione o local de destino para os itens recebidos"
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr "Digite o código do lote para itens de estoque recebidos"
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Digite o número de série para itens de estoque recebidos"
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Código de barras"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr "Código de barras lido"
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr "Código de barras já em uso"
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Quantidade inteira deve ser fornecida para peças rastreáveis"
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr "Itens de linha deve ser providenciados"
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr "Loca de destino deve ser especificado"
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr "Código de barras fornecido deve ser único"
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr "Moeda de preço de venda"
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr "Nenhum detalhe da remessa fornecido"
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr "Item de linha não está associado a este pedido"
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr "Quantidade deve ser positiva"
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr "Digite números de série para alocar"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr "O pedido já foi enviado"
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr "O envio não está associado a este pedido"
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr "Nenhuma correspondência encontrada para os seguintes números de série"
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr "Os seguintes números de série já estão alocados"
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr "Devolver item do pedido"
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr "Item do pedido não bate com o pedido de devolução"
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr "Item do pedido já foi recebido"
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr "Itens só podem ser recebidos de pedidos em processamento"
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr "Tipo de moeda para o item do pedido"
 
@@ -5799,12 +5835,12 @@ msgstr "Atualizado {part} unid.-preço para {price}"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "Atualizado {part} unid.-preço para {price} e quantidade para {qty}"
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "ID da Peça"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Nome da Peça"
@@ -5813,20 +5849,20 @@ msgstr "Nome da Peça"
 msgid "Part Description"
 msgstr "Descrição da Peça"
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr "IPN"
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr "Revisão"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Palavras chave"
@@ -5851,11 +5887,11 @@ msgstr "ID Local Padrão"
 msgid "Default Supplier ID"
 msgstr "ID de Fornecedor Padrão"
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr "Variante de"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "Estoque Mínimo"
 
@@ -5874,12 +5910,12 @@ msgstr "Usado em"
 msgid "Building"
 msgstr "Produzindo"
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr "Custo Mínimo"
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr "Custo Máximo"
@@ -5897,7 +5933,7 @@ msgstr "Nome Paternal"
 msgid "Category Path"
 msgstr "Caminho da Categoria"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5941,7 @@ msgstr "Caminho da Categoria"
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Peças"
 
@@ -5921,7 +5957,7 @@ msgstr "ID Item LDM"
 msgid "Parent IPN"
 msgstr "IPN Paternal"
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr "IPN da Peça"
 
@@ -5937,92 +5973,92 @@ msgstr "Preço Mínimo"
 msgid "Maximum Price"
 msgstr "Preço Máximo"
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr "Pedido de compra recebido"
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr "Pedidos de Venda Feitos"
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr "Estoque produzido pelo Pedido de Produção"
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr "Estoque obrigatório para Pedido de Produção"
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr "Válido"
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr "Validar a Lista de Materiais completa"
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr "Esta opção deve ser selecionada"
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Categoria"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "Local Padrão"
@@ -6036,363 +6072,363 @@ msgstr "Estoque Total"
 msgid "Input quantity for price calculation"
 msgstr "Quantidade para o cálculo de preço"
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Categoria da Peça"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Categorias de Peça"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Local padrão para peças desta categoria"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr "Estrutural"
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr "Peças não podem ser diretamente atribuídas a uma categoria estrutural, mas podem ser atribuídas a categorias filhas."
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr "Palavras-chave Padrão"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr "Palavras-chave padrão para peças nesta categoria"
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr "Ícone"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr "Ícone (opcional)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr "Você não pode tornar esta categoria em estrutural, pois, algumas partes já estão alocadas!"
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr "Escolha inválida para peça parental"
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr "Peça '{self}' não pode ser utilizada na BOM para '{parent}' (recursiva)"
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr "Peça '{parent}' é usada na BOM para '{self}' (recursiva)"
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr "IPN deve corresponder ao padrão regex {pattern}"
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr "Item em estoque com este número de série já existe"
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "Não é permitido duplicar IPN em configurações de partes"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr "Uma parte com este Nome, IPN e Revisão já existe."
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr "Peças não podem ser atribuídas a categorias estruturais!"
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Nome da peça"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr "É um modelo"
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr "Esta peça é uma peça modelo?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr "Esta peça é variante de outra peça?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr "Descrição da peça (opcional)"
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr "Palavras-chave para melhorar a visibilidade nos resultados da pesquisa"
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "Categoria da Peça"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr "Numero interno do produto"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr "Revisão de peça ou número de versão"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr "Onde este item é armazenado normalmente?"
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr "Fornecedor Padrão"
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr "Fornecedor padrão da peça"
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr "Validade Padrão"
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Validade (em dias) para itens do estoque desta peça"
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr "Nível mínimo de estoque permitido"
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr "Unidade de medida para esta peça"
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr "Essa peça pode ser construída a partir de outras peças?"
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr "Essa peça pode ser usada para construir outras peças?"
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr "Esta parte tem rastreamento para itens únicos?"
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Esta peça pode ser comprada de fornecedores externos?"
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr "Esta peça pode ser vendida a clientes?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr "Esta parte está ativa?"
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "Esta é uma peça virtual, como um software de produto ou licença?"
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr "Soma de Verificação da LDM"
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr "Soma de verificação da LDM armazenada"
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr "LDM conferida por"
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr "LDM verificada no dia"
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr "Criação de Usuário"
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr "Proprietário responsável por esta peça"
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr "Último Balanço"
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr "Venda múltipla"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr "Moeda usada para armazenar os cálculos de preços"
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr "Custo Mínimo da LDM"
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr "Custo mínimo das peças componentes"
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr "Custo Máximo da LDM"
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr "Custo máximo das peças componentes"
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr "Custo Mínimo de Compra"
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr "Custo mínimo histórico de compra"
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr "Custo Máximo de Compra"
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr "Custo máximo histórico de compra"
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr "Preço Interno Mínimo"
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr "Custo mínimo baseado nos intervalos de preço internos"
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr "Preço Interno Máximo"
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr "Custo máximo baseado nos intervalos de preço internos"
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr "Preço Mínimo do Fornecedor"
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr "Preço mínimo da peça de fornecedores externos"
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr "Preço Máximo do Fornecedor"
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr "Preço máximo da peça de fornecedores externos"
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr "Custo Mínimo variável"
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr "Custo mínimo calculado das peças variáveis"
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr "Custo Máximo Variável"
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr "Custo máximo calculado das peças variáveis"
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr "Sobrepor o custo mínimo"
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr "Sobrepor o custo máximo"
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr "Custo total mínimo calculado"
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr "Custo total máximo calculado"
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr "Preço Mínimo de Venda"
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr "Preço mínimo de venda baseado nos intervalos de preço"
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr "Preço Máximo de Venda"
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr "Preço máximo de venda baseado nos intervalos de preço"
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr "Custo Mínimo de Venda"
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr "Preço histórico mínimo de venda"
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr "Custo Máximo de Venda"
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr "Preço histórico máximo de venda"
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr "Peça para Balanço"
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr "Total de Itens"
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr "Número de entradas de estoques individuais no momento do balanço"
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr "Estoque total disponível no momento do balanço"
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6440,330 @@ msgstr "Estoque total disponível no momento do balanço"
 msgid "Date"
 msgstr "Data"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr "Data de realização do balanço"
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr "Notas adicionais"
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr "Usuário que fez o balanço"
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr "Custo Mínimo de Estoque"
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr "Custo mínimo estimado de estoque disponível"
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr "Custo Máximo de Estoque"
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr "Custo máximo estimado de estoque disponível"
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr "Reportar"
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr "Arquivo de Relatório de Balanço (gerado internamente)"
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr "Contagem de Peças"
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr "Número de peças cobertas pelo Balanço"
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr "Usuário que solicitou este relatório de balanço"
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr "Modelos de teste só podem ser criados para peças rastreáveis"
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr "Nome de Teste"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr "Insira um nome para o teste"
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr "Descrição do Teste"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr "Digite a descrição para este teste"
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr "Requerido"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr "Este teste é obrigatório passar?"
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr "Requer Valor"
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr "Este teste requer um valor ao adicionar um resultado de teste?"
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr "Anexo obrigatório"
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr "Este teste requer um anexo ao adicionar um resultado de teste?"
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr "Parâmetros da caixa de seleção não podem ter unidades"
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr "Os parâmetros da caixa de seleção não podem ter escolhas"
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr "Escolhas devem ser únicas"
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr "Nome do modelo de parâmetro deve ser único"
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr "Nome do Parâmetro"
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr "Unidades físicas para este parâmetro"
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr "Descrição do Parâmetro"
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr "Caixa de seleção"
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr "Este parâmetro é uma caixa de seleção?"
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr "Escolhas"
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr "Opções válidas para este parâmetro (separadas por vírgulas)"
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr "Escolha inválida para valor do parâmetro"
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr "Peça Paternal"
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr "Modelo de parâmetro"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr "Dados"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr "Valor do Parâmetro"
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr "Valor Padrão"
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr "Valor Padrão do Parâmetro"
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr "ID da peça ou nome da peça"
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr "Valor exclusivo do ID de peça"
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr "Valor da parte IPN"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr "Nível"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr "Nível da LDM"
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr "Selecione a Peça Parental"
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr "Sub peça"
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr "Selecionar peça a ser usada na LDM"
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr "Quantidade de LDM para este item LDM"
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr "Este item LDM é opcional"
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr "Este item LDM é consumível (não é rastreado nos pedidos de construção)"
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Excedente"
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Quantidade estimada de desperdício (absoluto ou porcentagem)"
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr "Referência do Item LDM"
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr "Notas do Item LDM"
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr "Soma de verificação"
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr "Soma de Verificação da LDM da linha"
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr "Validado"
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr "O item da LDM foi validado"
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr "Obtém herdados"
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr "Este item da LDM é herdado por LDMs para peças variáveis"
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr "Permitir variações"
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr "Itens de estoque para as peças das variantes podem ser usados para este item LDM"
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr "Quantidade deve ser valor inteiro para peças rastreáveis"
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr "Sub peça deve ser especificada"
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr "Substituir Item da LDM"
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr "A peça de substituição não pode ser a mesma que a peça mestre"
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr "Item LDM Parental"
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr "Substituir peça"
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr "Parte 1"
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr "Parte 2"
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr "Selecionar Peça Relacionada"
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr "Relacionamento da peça não pode ser criada com ela mesma"
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr "Relação duplicada já existe"
 
@@ -7205,7 +7241,7 @@ msgstr "Adicionar informações de balanço de estoque"
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr "Balanço"
 
@@ -8057,7 +8093,7 @@ msgstr "Borda"
 msgid "Print a border around each label"
 msgstr "Imprima uma borda em torno de cada etiqueta"
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr "Paisagem"
 
@@ -8228,7 +8264,7 @@ msgstr "Extensões"
 msgid "Method"
 msgstr "Método"
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr "Nenhum autor encontrado"
 
@@ -8394,111 +8430,111 @@ msgstr "Ofício"
 msgid "Letter"
 msgstr "Carta"
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr "Nome do modelo"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr "Arquivo modelo de relatório"
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr "Descrição do modelo de relatório"
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr "Relatar número de revisão (auto-incrementos)"
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr "Tamanho da página para relatórios PDF"
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr "Renderizar relatório em orientação paisagem"
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr "Padrão para gerar nomes de arquivo de relatórios"
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr "Modelo de relatório Habilitado"
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr "Filtros de consulta de itens de estoque(lista de valores separados por vírgula)"
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr "Incluir testes instalados"
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr "Incluir resultados de testes para itens de estoque instalados dentro de item montado"
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr "Filtros de Produção"
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr "Filtros de consulta de produção (lista de valores separados por vírgula"
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr "Filtros de Peças"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr "Filtros de consulta de peças (lista de valores separados por vírgula"
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr "Filtros de consultas de pedidos de compra"
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr "Filtros de consultas de pedidos de venda"
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr "Filtrar pesquisa de itens devolvidos"
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr "Recorte"
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr "Relatar arquivo de recorte"
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr "Descrição do arquivo de recorte"
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr "Patrimônio"
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr "Reportar arquivo de ativos"
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr "Descrição do arquivo de ativos"
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr "filtros de consulta de locais de estoque(lista de valores separados por vírgula)"
 
@@ -8685,60 +8721,60 @@ msgstr "Excluir quando esgotado"
 msgid "Expiry Date"
 msgstr "Data de validade"
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr "Localização externa"
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr "Árvore de Peças"
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr "Data de validade antes"
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr "Data de validade depois"
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr "Inativo"
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr "Quantidade obrigatória"
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr "Uma peça válida deve ser fornecida"
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr "A peça do fornecedor informado não existe"
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr "A peça do fornecedor tem um tamanho de pacote definido, mas o item use_pack_size não foi definida"
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr "Números de série não podem ser fornecidos para uma parte não rastreável"
 
@@ -8762,7 +8798,7 @@ msgstr "Localização do estoque"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Locais de estoque"
 
@@ -10071,7 +10107,7 @@ msgstr "Taxa"
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Excluir"
 
@@ -13248,7 +13284,7 @@ msgstr "Pegar"
 msgid "Add Stock"
 msgstr "Adicionar Estoque"
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "Adicionar"
 
@@ -13891,7 +13927,7 @@ msgstr "Mostrar Notificações"
 msgid "New Notifications"
 msgstr "Novas Notificações"
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr "Administrador"
 
@@ -14128,35 +14164,34 @@ msgstr "Última vez que o token foi usado"
 msgid "Revoked"
 msgstr "Revogado"
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "Permissão definida"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Grupo"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Visualizar"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Permissão para ver itens"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Permissão para adicionar itens"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Alterar"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Permissões para editar itens"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Permissão para excluir itens"
-
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index e1e2afc20916..a645ea6aa9b4 100644
--- a/InvenTree/locale/ru/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ru/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:52\n"
 "Last-Translator: \n"
 "Language-Team: Russian\n"
@@ -34,16 +34,16 @@ msgstr "Предоставлено недопустимое значение ({u
 msgid "No value provided"
 msgstr "Значение не указано"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Невозможно преобразовать {original} в {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Недопустимое количество"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Недопустимое количество ({exc})"
@@ -59,10 +59,10 @@ msgstr "Введите дату"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Указанный домен электронной почты не у
 msgid "Registration is disabled."
 msgstr "Регистрация отключена."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "недопустимое количество"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Пустая строка серийного номера"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Повторяющийся серийный номер"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Недопустимый диапазон группы: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Диапазон группы {group} превышает допустимое количество ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Неверная последовательность групп: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Серийных номеров не найдено"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Число уникальных серийных номеров ({s}) должно соответствовать количеству ({q})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Удалить HTML теги из этого значения"
 
@@ -405,10 +405,10 @@ msgstr "Вложения"
 msgid "Select file to attach"
 msgstr "Выберите файл для вложения"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Выберите файл для вложения"
 msgid "Link"
 msgstr "Ссылка"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Ссылка на внешний URL"
@@ -436,10 +436,10 @@ msgstr "Комментарий"
 msgid "File comment"
 msgstr "Комментарий к файлу"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Повторяющиеся имена не могут существов
 msgid "Invalid choice"
 msgstr "Неверный выбор"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Неверный выбор"
 msgid "Name"
 msgstr "Название"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Ошибка сервера"
 msgid "An error has been logged by the server."
 msgstr "Сервер зарегистрировал ошибку."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Должно быть действительным номером"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Возвращено"
 msgid "In Progress"
 msgstr "Выполняется"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "О программе InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Заказ на производство должен быть отменен перед удалением"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Расходники"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Заказ на производство"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Заказы на производство"
 
@@ -1008,17 +1008,21 @@ msgstr "Заказы на производство"
 msgid "Invalid choice for parent build"
 msgstr "Неверный выбор для родительской сборки"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Деталь заказа на производства не может быть изменена"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Ссылка на заказ на производство"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Ссылка на заказ на производство"
 msgid "Reference"
 msgstr "Отсылка"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Краткое описание заказа на производство (необязательно)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Родительский заказ на производство"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Заказ на производство, которому принадлежит этот заказ на производство"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "Заказ на производство, которому принад
 msgid "Part"
 msgstr "Деталь"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Выберите деталь для производства"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Ссылка на заказ"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Заказ на продажу, которому принадлежит этот заказ на производство"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Место хранения - источник"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Выберите место хранения для этого заказа на производство (оставьте пустым, чтобы взять с любого места на складе)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Место хранения результата"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Выберите место хранения завершенных элементов"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Количество производимых деталей"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Количество складских позиций для производства"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Произведенные детали"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Количество складских позиций, которые были произведены"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Статус заказа на производство"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Код статуса заказа на производство"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Код партии"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Код партии для продукции"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Дата создания"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Целевая дата завершения"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Целевая дата для заказа на производства. Заказ будет просрочен после этой даты."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Дата завершения"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "выполнено"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Создано"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Пользователь, создавший этот заказ на производство"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr "Пользователь, создавший этот заказ на п
 msgid "Responsible"
 msgstr "Ответственный"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Пользователь, ответственный за этот заказ на производство"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr "Пользователь, ответственный за этот за
 msgid "External Link"
 msgstr "Внешняя ссылка"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Приоритет производства"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Приоритет этого заказа на производство"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr "Приоритет этого заказа на производство
 msgid "Project Code"
 msgstr "Код проекта"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Код проекта для этого заказа на производство"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Заказ на производство {build} был завершен"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Заказ на производство был завершен"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Продукция не указана"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Продукция уже произведена"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Продукция не совпадает с заказом на производство"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Количество должно быть больше нуля"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "Количество не может быть больше количества продукции"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr "Сборка {serial} не прошла все необходимые тесты"
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Объект производства"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr "Объект производства"
 msgid "Quantity"
 msgstr "Количество"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Требуемое количество для заказа на производство"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Элемент производства должен указать продукцию, как главную деталь помеченную как отслеживаемая"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "Резервируемое количество ({q}) не должно превышать доступное количество на складе ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Складская позиция перераспределена"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Резервируемое количество должно быть больше нуля"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Количество должно быть 1 для сериализованных запасов"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "Выбранная складская позиция не соответствует позиции в BOM"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr "Выбранная складская позиция не соответ
 msgid "Stock Item"
 msgstr "Складская позиция"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Исходная складская позиция"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Количество на складе для производства"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Установить в"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Целевая складская позиция"
 
@@ -1429,7 +1433,7 @@ msgstr "Для отслеживаемых деталей должно быть 
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Требуется целое количество, так как материал содержит отслеживаемые детали"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr "Автоматически выделить серийные номер
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Автоматически зарезервировать необходимые элементы с соответствующими серийными номерами"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "Следующие серийные номера уже существуют или недействительны"
 
@@ -1455,8 +1459,8 @@ msgstr "Следующие серийные номера уже существу
 msgid "A list of build outputs must be provided"
 msgstr "Необходимо представить список выхода деталей"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr "Место хранения для завершенной продукции"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr "Подтвердите, что складские позиции не б
 msgid "Required stock has not been fully allocated"
 msgstr "Необходимые запасы не были полностью зарезервированы"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Разрешить незавершенные производимые детали"
 
@@ -1610,7 +1614,7 @@ msgstr "bom_item.part должна указывать на ту же часть,
 msgid "Item must be in stock"
 msgstr "Элемент должен быть в наличии"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Превышено доступное количество ({q})"
@@ -1623,7 +1627,7 @@ msgstr "Продукция должна быть указан для резер
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "Продукция не может быть указана для резервирования не отслеживаемых частей"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "Необходимо указать резервируемые элементы"
 
@@ -1663,8 +1667,8 @@ msgstr "Необязательные элементы"
 msgid "Allocate optional BOM items to build order"
 msgstr "Зарезервировать необязательные позиции BOM для заказа на производство"
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "Позиция BOM"
 
@@ -1693,15 +1697,15 @@ msgstr "В производстве"
 msgid "Available Stock"
 msgstr "Доступный запас"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "Необходимый запас для заказа на производство"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr "Просроченный заказ сборки"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr "Заказ на производство {bo} просрочен"
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Остатки не были полностью зарезервированы для этого заказа на производство"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr "Завершенная продукция"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr "Источник запаса"
 msgid "Stock can be taken from any available location."
 msgstr "Остатки не могут быть получены из любого доступного места хранения."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Назначение"
@@ -2121,1542 +2125,1570 @@ msgstr "Описание проекта"
 msgid "User or group responsible for this project"
 msgstr "Пользователь или группа, ответственные за этот проект"
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Ключ настроек (должен быть уникальным - не чувствителен к регистрам)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "Значения настроек"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "Выбранное значение не является допустимым"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "Значение должно быть булевым"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "Значение должно быть целым числом"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "Строка ключа должна быть уникальной"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Нет группы"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Пустой домен не допускается."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Недопустимое доменное имя: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr "Нет плагина"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Требуется перезапуск"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "Настройки были изменены, что требует перезапуска сервера"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr "Ожидаемые миграции"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr "Количество ожидаемых миграций базы данных"
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "Название сервера"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr "Текстовое описание сервера"
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr "Название инстанса"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr "Имя сервера в заголовке"
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr "Ограничить отображение `О...`"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr "Показать `О...` только суперпользователям"
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Название компании"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Внутреннее название компании"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "Базовая ссылка"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "Базовая ссылка для экземпляра сервера"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Валюта по умолчанию"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr "Выберите базовую валюту для расчета цены"
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr "Интервал обновления  курса валют"
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr "Как часто обновлять курс валют (установите \"ноль\", чтобы выключить)"
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "дней"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr "Плагин обновления валют"
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr "Модуль обновления валюты"
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Скачать по ссылке"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Разрешить загрузку удаленных изображений и файлов по внешнему URL"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr "Ограничение размера загрузки"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr "Максимально допустимый размер загрузки для удалённого изображения"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr "User-Agent, используемый для загрузки из URL"
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr "Позволяет переопределить user-Agent, используемый для загрузки изображений и файлов с внешнего URL (оставьте пустым по умолчанию)"
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr "Строгая проверка URL-адреса"
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr "Требуется спецификация схемы при проверке URL-адресов"
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Требуется подтверждение"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Требовать явное подтверждение пользователя для определенного действия."
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr "Глубина дерева"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr "Глубина дерева по умолчанию для просмотра дерева. Глубокие уровни загружены по мере необходимости."
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr "Интервал проверки обновлений"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr "Как часто проверять наличие обновлений (установите ноль чтобы выключить)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Автоматическое резервное копирование"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Включить автоматическое резервное копирование базы данных и медиа-файлов"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Интервал резервного копирования"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr "Укажите количество дней между событиями автоматического резервного копирования"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr "Интервал удаления задачи"
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr "Результаты фоновых задач будут удалены после указанного количества дней"
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr "Интервал удаления журнала ошибок"
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr "Журналы ошибок будут удалены после указанного количества дней"
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr "Интервал удаления уведомления"
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr "Уведомления пользователя будут удалены после указанного количества дней"
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Поддержка штрих-кодов"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr "Включить поддержку сканера штрих-кодов в веб-интерфейсе"
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr "Задержка сканирования штрих-кода"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr "Время задержки обработки штрих-кода"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr "Поддержка веб-камер штрих-кодов"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Разрешить сканирование штрих-кода через веб-камеру в браузере"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr "Ревизия детали"
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr "Включить поле ревизии для элемента"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Шаблон регулярного выражения для сопоставления IPN детали"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Разрешить повторяющиеся IPN"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Разрешить нескольким элементам использовать один и тот же IPN"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "Разрешить редактирование IPN"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Разрешить изменение значения IPN при редактировании детали"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr "Скопировать данные BOM детали"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Копировать данные BOM по умолчанию при дублировании детали"
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr "Скопировать данные параметров детали"
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Копировать данных параметров по умолчанию при дублировании детали"
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr "Скопировать данные тестирования детали"
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr "Копировать данные тестирования по умолчанию при дублировании детали"
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr "Скопировать параметры по шаблону категории"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr "Копировать параметры по шаблону категории при создании детали"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Шаблон"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "По умолчанию детали являются шаблонами"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Производимая деталь"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "По умолчанию детали могут быть собраны из других компонентов"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Компонент"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "По умолчанию детали могут использоваться в качестве суб-компонентов"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Можно купить"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "По умолчанию детали являются отслеживаемыми"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Можно продавать"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Детали продаются по умолчанию"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Отслеживание"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "По умолчанию детали являются отслеживаемыми"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Виртуальная"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Детали являются виртуальными по умолчанию"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Показать Импорт в просмотре"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Показывать связанные детали"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Отображать связанные детали для элемента"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr "Начальные данные о запасах"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr "Исходные данные о поставщике"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Формат отображения детали"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Формат для отображения имени детали"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr "Значок раздела по умолчанию"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr "Значок категории по умолчанию (пустой означает отсутствие значка)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr "Если введены единицы, значения параметра должны соответствовать указанным единицам измерения"
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr "Минимальные Цены Десятичные Значки"
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr "Минимальное количество десятичных знаков при отображении данных о ценах"
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr "Макс. Цены десятичные знаки"
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr "Минимальное количество десятичных знаков при отображении данных о ценах"
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr "Использовать цены поставщика"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr "Включить разницу цен поставщиков при расчетах цен"
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr "Изменить историю покупки"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr "Использовать цены из складских позиций"
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr "Использовать расценки из ручного ввода данных о запасах для расчета цен"
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr "Возраст цен складских позиций"
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr "Исключить складские позиции старше указанного количества дней с расчёта цен"
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr "Использовать варианты цен"
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr "Включить разницу цен поставщиков при расчетах цен"
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr "Только Активные Варианты"
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr "Использовать только активные запчасти для расчета стоимости варианта"
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr "Интервал пересчета цен"
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr "Количество дней до автоматического обновления цены"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Внутренние цены"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr "Разрешить внутренние цены для частей"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr "Переопределение внутренней цены"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr "При наличии внутренних цен переопределить ценовой диапазон"
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Включить печать этикеток"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Включить печать этикеток из веб-интерфейса"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "Изображение меток DPI"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr "Разрешение DPI при создании файлов изображений для печати этикеток плагинов"
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Включить отчеты"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Включить генерацию отчетов"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Режим отладки"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Генерировать отчеты в режиме отладки (вывод HTML)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr "Журнал ошибок отчета"
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr "Журнал ошибок, которые возникают при создании отчетов"
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Размер страницы"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Размер страницы по умолчанию для PDF отчетов"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Включить отчеты"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Включить генерацию отчетов"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr "Прикрепить отчеты о тестах"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr "При печати отчета о тестировании приложить копию тестового отчета к соответствующему складской позиции"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr "Серийные номера для складских позиций должны быть уникальными глобально"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Determines default behaviour when a stock item is depleted"
+msgid "Determines default behavior when a stock item is depleted"
 msgstr "Определяет поведение по умолчанию, когда складская позиция заканчивается"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr "Шаблон для создания кодов партии по умолчанию для складских позиций"
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr "Срок годности Запасов"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr "Время Залежалости Запасов"
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr "Количество дней перед тем как складская единица будет считаться просроченной"
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr "Использовать просроченные остатки в производстве"
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr "Разрешить использовать просроченные остатки в производстве"
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr "Показать установленные складские позиции"
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr "Отображать установленные складские позиции в складских таблицах"
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr "Паттерн ссылки заказа на производство"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr "Поле требуемого паттерна для создания ссылки заказа на производство"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Ответственный"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr "Включить заказы на возврат"
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr "Редактировать завершенные заказы на покупку"
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "Включить SSO"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Необходимо указать EMail"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "Написать дважды"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Пароль дважды"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Разрешенные домены"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "Принудительное MFA"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "Пользователи должны использовать многофакторную безопасность."
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr "Проверять плагины при запуске"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr "Исключить складские позиции во внешних местах хранения из инвентаризации"
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "Показывать детали, на которые включены уведомления"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr "Показывать детали, на которые включены уведомления, на главной странице"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "Показывать категории, на которые включены уведомления"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr "Показывать категории, на которые включены уведомления, на главной странице"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "Показывать последние детали"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "Показывать последние детали на главной странице"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Show unvalidated BOMs"
+msgid "Show invalid BOMs"
 msgstr "Показывать непроверенные BOMы"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Показывать BOMы, ожидающие проверки, на главной странице"
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr "Показывать изменившиеся складские запасы"
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr "Показывать складские позиции с недавно изменившимися запасами на главной странице"
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr "Показывать низкие складские запасы"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr "Показывать складские позиции с низкими запасами на главной странице"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr "Показывать закончившиеся складские позиции"
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr "Показывать закончившиеся складские позиции на главной странице"
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr "Показывать требуемые складские позиции"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Показывать требуемые для производства складские позиции на главной странице"
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr "Показывать складские позиции с истекшим сроком годности"
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr "Показывать складские позиции с истёкшим сроком годности на главной странице"
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr "Показывать залежалые складские позиции"
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr "Показывать складские позиции с истекающим сроком годности на главной странице"
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr "Показывать незавершённые производства"
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr "Показывать незавершённые производства на главной странице"
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr "Показывать просроченные производства"
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr "Показывать просроченные производства на главной странице"
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr "Показать просроченные заказы на производство"
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr "Показать просроченные заказы на продажу"
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Показывать новости"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Поиск Деталей"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr "Поиск Запасов"
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr "Отображать складские позиции в окне предварительного просмотра поиска"
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr "Скрыть недоступные складские позиции"
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr "Исключить недоступные складские позиции из окна предварительного просмотра поиска"
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr "Поиск мест хранения"
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr "Поиск компаний"
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr "Поиск заказов на производство"
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr "Отображать заказы на производство в окне предварительного просмотра поиска"
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr "Поиск заказов на продажу"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr "Поиск заказов на возврат"
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr "Поиск по Regex"
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr "Фиксированная панель навигации"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Формат даты"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Планирование деталей"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr "Инвентаризация детали"
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr "Шаблон складской позиции по умолчанию"
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr "Шаблон метки складской позиции для автоматического выбора"
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+#, fuzzy
+#| msgid "Default stock item template"
+msgid "Default build line label template"
+msgstr "Шаблон складской позиции по умолчанию"
+
+#: common/models.py:2464
+#, fuzzy
+#| msgid "The stock item label template to be automatically selected"
+msgid "The build line label template to be automatically selected"
+msgstr "Шаблон метки складской позиции для автоматического выбора"
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Цена"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr "Конечная точка"
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Активный"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr "Токен"
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr "Токен для доступа"
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Секрет"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "ID Сообщения"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr "Хост"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr "Заголовок"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr "Тело"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr "Работал над"
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr "Код"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr "Заголовок"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr "Опубликовано"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "Автор"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr "Итого"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr "Читать"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3698,31 @@ msgstr ""
 msgid "Image"
 msgstr "Изображение"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr "Файл изображения"
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr "Название единицы"
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr "Символ"
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr "Определение"
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3889,7 @@ msgid "Contact email address"
 msgstr "Контактный EMail"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3933,7 @@ msgstr "Для этой компании используется валюта 
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Компания"
@@ -4066,7 +4098,7 @@ msgid "Parameter value"
 msgstr "Значение параметра"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4122,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4158,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4168,11 @@ msgstr ""
 msgid "Note"
 msgstr "Запись"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "базовая стоимость"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4202,7 @@ msgstr "Кол-во в упаковке"
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "множественные"
 
@@ -4248,8 +4280,8 @@ msgstr "Скачать изображение по ссылке"
 msgid "Delete image"
 msgstr "Удалить изображение"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4298,7 @@ msgstr "Покупатель"
 msgid "Uses default currency"
 msgstr "Использовать валюту по умолчанию"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4378,7 @@ msgstr "Склад поставщика"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Заказы на закупку"
 
@@ -4369,7 +4401,7 @@ msgstr "Новый заказ на закупку"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Заказы на продажу"
 
@@ -4394,7 +4426,7 @@ msgstr "Назначенный Запас"
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr "Заказы на возврат"
 
@@ -4622,7 +4654,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Складские позиции"
 
@@ -4675,7 +4707,7 @@ msgstr "Метка"
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4733,7 @@ msgstr "Высота [мм]"
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Шаблон имени файла"
 
@@ -4715,8 +4747,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Фильтры"
 
@@ -4847,7 +4879,7 @@ msgstr "Общая стоимость"
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4893,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr "Заказ на закупку"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4906,184 @@ msgstr "Заказ на возврат"
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr "Валюта Заказа"
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr "Контакт не соответствует выбранной компании"
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr "Описание заказа (дополнительно)"
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr "Выберите код проекта для этого заказа"
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Создал"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Пользователь или группа, ответственная за этот заказ"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Ссылка на заказ"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "Компания, в которой детали заказываются"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr "получил"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr "Дата создания"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "Компания, которой детали продаются"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Дата отгрузки"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr "Отправлено"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr "Количество"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr "Записи о позиции"
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr "Описание позиции (необязательно)"
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr "Контекст"
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr "Дополнительный контекст для этой строки"
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr "Цена за единицу"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr "удалено"
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr "Заказ"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr "Деталь поставщика"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5093,341 @@ msgstr "Деталь поставщика"
 msgid "Received"
 msgstr "Получено"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Закупочная цена"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "Цена продажи"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Цена последней продажи"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr "Отгруженное кол-во"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr "Дата отправления"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr "Дата доставки"
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr "Проверн"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr "Отправление"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr "Номер отправления"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "Номер отслеживания"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr "Информация об отслеживании доставки"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr "Номер счета"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr "Отправка не имеет зарезервированных складских позиций"
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr "Складская позиция не была назначена"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr "Невозможно зарезервировать складскую позицию в позицию другой детали"
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "Количество должно быть 1 для сериализированных складских позиций"
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr "Строка"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr "Элемент"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr "Выберите складскую позицию для резервирования"
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr "Укажите резервируемое количество"
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr "Выберите позицию, возвращаемую от клиента"
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr "Дата получения"
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr "Результат"
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr "Заказ не открыт"
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr "Валюта цены закупки"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr "Позиция"
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr "Выберите место назначения для полученных элементов"
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr "Введите код партии для поступающих складских позиций"
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Введите серийные номера для входящих складских позиций"
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Штрих-код"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr "Сканированный штрих-код"
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество"
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr "Валюта цены продажи"
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr "Введите серийные номера для резервирования"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5831,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "Код детали"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Наименование детали"
@@ -5813,20 +5845,20 @@ msgstr "Наименование детали"
 msgid "Part Description"
 msgstr "Описание детали"
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr "Ревизия"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Ключевые слова"
@@ -5851,11 +5883,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr "Разновидность"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "Минимальный запас"
 
@@ -5874,12 +5906,12 @@ msgstr "Используется в"
 msgid "Building"
 msgstr "Производится"
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr "Минимальная Стоимость"
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr "Максимальная Стоимость"
@@ -5897,7 +5929,7 @@ msgstr "Имя родителя"
 msgid "Category Path"
 msgstr "Путь к категории"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5937,7 @@ msgstr "Путь к категории"
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Детали"
 
@@ -5921,7 +5953,7 @@ msgstr "ID Элемента BOM"
 msgid "Parent IPN"
 msgstr "Родительский IPN"
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr "IPN детали"
 
@@ -5937,92 +5969,92 @@ msgstr "Минимальная цена"
 msgid "Maximum Price"
 msgstr "Максимальная цена"
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr "Остатки произведенные заказом на производство"
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr "Остатки требуемые для заказов на производство"
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr "Корректный"
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr "Необходимо выбрать эту опцию"
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Категория"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "Место хранения по умолчанию"
@@ -6036,363 +6068,363 @@ msgstr "Общий запас"
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Категория детали"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Категория детали"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Место хранения по умолчанию для деталей этой категории"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr "Структура"
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr "Детали не могут быть непосредственно отнесены к структурной категории, но могут быть отнесены к дочерним категориям."
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr "Ключевые слова по умолчанию"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr "Ключевые слова по умолчанию для деталей этой категории"
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr "Иконка"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr "Иконка (необязательно)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr "Складская позиция с этим серийным номером уже существует"
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Наименование детали"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr "Шаблон"
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr "Эта деталь является шаблоном?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr "Эта деталь является разновидностью другой детали?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr "Описание детали (необязательно)"
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr "Ключевые слова для улучшения видимости в результатах поиска"
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "Категория"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr "Внутренний код детали"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr "Ревизия или серийный номер детали"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr "Где обычно хранится эта деталь?"
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr "Поставщик по умолчанию"
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr "Срок действия по умолчанию"
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Срок годности (в днях) для складских позиций этой детали"
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr "Минимально допустимый складской запас"
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr "Единицы измерения этой детали"
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr "Может ли эта деталь быть создана из других деталей?"
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr "Может ли эта деталь использоваться для создания других деталей?"
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr "Является ли каждый экземпляр этой детали уникальным, обладающим серийным номером?"
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Может ли эта деталь быть закуплена у внешних поставщиков?"
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr "Может ли эта деталь быть продана покупателям?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr "Эта деталь активна?"
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "Эта деталь виртуальная, как программный продукт или лицензия?"
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr "Контрольная сумма BOM"
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr "BOM проверил"
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr "Дата проверки BOM"
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr "Создатель"
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr "Последняя инвентаризация"
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr "Продать несколько"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr "Минимальная Стоимость BOM"
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr "Максимальная Стоимость BOM"
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr "Количество Элементов"
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6436,330 @@ msgstr ""
 msgid "Date"
 msgstr "Дата"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr "Дополнительные Записи"
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr "Отчет"
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr "Количество Деталей"
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr "Шаблоны тестирования могут быть созданы только для отслеживаемых деталей"
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr "Название теста"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr "Введите имя для теста"
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr "Описание теста"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr "Введите описание для этого теста"
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr "Требуется"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr "Требуется значение"
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr "Название параметра"
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr "Чекбокс"
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr "Варианты"
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr "Родительская деталь"
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr "Шаблон параметра"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr "Данные"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr "Значение Параметра"
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr "Значение по умолчанию"
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr "Код или наименование детали"
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr "Значение IPN"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr "Уровень"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr "Уровень BOM"
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr "Выберите родительскую деталь"
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr "Суб-деталь"
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr "Выбрать деталь для использования в BOM"
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr "Эта позиция - расходник. (она не отслеживается в заказах на производство)"
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Перерасход"
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Расчетное количество перерасходов производства (абсолютное или процентное)"
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr "Записи о позиции BOM"
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr "Контрольная сумма"
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr "Проверен"
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr "Разрешить разновидности"
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr "Складские позиции для разновидностей деталей могут быть использованы для этой позиции BOM"
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr "Для отслеживаемых деталей количество должно быть целым числом"
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr "Позиция BOM-родителя"
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr "Замена детали"
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr "Часть 1"
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr "Часть 2"
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr "Выберите связанную часть"
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7237,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr "Инвентаризация"
 
@@ -8057,7 +8089,7 @@ msgstr "Граница"
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr "Альбомная"
 
@@ -8228,7 +8260,7 @@ msgstr "Плагин"
 msgid "Method"
 msgstr "Метод"
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr "Автор не найден"
 
@@ -8394,111 +8426,111 @@ msgstr "Правовая информация"
 msgid "Letter"
 msgstr "Письмо"
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr "Название шаблона"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr "Файл шаблона отчёта"
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr "Включить результаты тестирования для складских позиций установленных в производимую деталь"
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr "Фильтры производства"
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr "Фильтры запросов производства (разделенные запятыми список ключей=значения пар ключей"
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr "Фильтры деталей"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr "Сниппет"
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr "Объект"
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8717,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr "Истекает"
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr "Древо Деталей"
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr "Залежалый"
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr "Необходимо указать количество"
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8794,7 @@ msgstr "Место хранения"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Места хранения"
 
@@ -10071,7 +10103,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Удалить"
 
@@ -13248,7 +13280,7 @@ msgstr "Взять"
 msgid "Add Stock"
 msgstr "Добавить Запасы"
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "Добавить"
 
@@ -13891,7 +13923,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr "Админ"
 
@@ -14128,35 +14160,34 @@ msgstr ""
 msgid "Revoked"
 msgstr "Отозван"
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "Права доступа"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Группа"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Вид"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Разрешение на просмотр элементов"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Разрешение на добавление элементов"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Изменить"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Разрешение на редактирование элементов"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Разрешение на удаление элементов"
-
diff --git a/InvenTree/locale/sk/LC_MESSAGES/django.po b/InvenTree/locale/sk/LC_MESSAGES/django.po
index 2e23f792ad63..ac79a3d270f3 100644
--- a/InvenTree/locale/sk/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sk/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:52\n"
 "Last-Translator: \n"
 "Language-Team: Slovak\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr ""
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -59,10 +59,10 @@ msgstr ""
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr ""
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr ""
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr ""
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr ""
 
@@ -405,10 +405,10 @@ msgstr ""
 msgid "Select file to attach"
 msgstr ""
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr ""
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr ""
@@ -436,10 +436,10 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr ""
 msgid "Name"
 msgstr ""
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr ""
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr ""
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr ""
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1008,17 +1008,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr ""
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4869,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8250,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/sl/LC_MESSAGES/django.po b/InvenTree/locale/sl/LC_MESSAGES/django.po
index a3a6270d91da..fa8668b5fce9 100644
--- a/InvenTree/locale/sl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sl/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:52\n"
 "Last-Translator: \n"
 "Language-Team: Slovenian\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Vrednost ni vnesena"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Ni mogoče pretvoriti {original} v {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Vnesena napačna količina"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Vnesena napačna količina ({exc})"
@@ -59,10 +59,10 @@ msgstr "Vnesi datum"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Domena epošte ni podprta."
 msgid "Registration is disabled."
 msgstr "Registracija je onemogočena."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Podana napačna količina"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Prazno polje serijske številke"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Dvojna serijska številka"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Neveljavni doseg skupine: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Doseg skupine {group} presega dovoljene količine ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Nepravilno zaporedje skupine: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Serijske številke niso najdene"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Število unikatnih serijskih številk ({len(serials)}) se mora ujemati s količino ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Odstranite oznako HTML iz te vrednosti"
 
@@ -405,10 +405,10 @@ msgstr "Priloga"
 msgid "Select file to attach"
 msgstr "Izberite prilogo"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Izberite prilogo"
 msgid "Link"
 msgstr "Povezava"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Zunanja povezava"
@@ -436,10 +436,10 @@ msgstr "Komentar"
 msgid "File comment"
 msgstr "Komentar datoteke"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr "Nedovoljena izbira"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Nedovoljena izbira"
 msgid "Name"
 msgstr "Ime"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Napaka strežnika"
 msgid "An error has been logged by the server."
 msgstr "Zaznana napaka na strežniku."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Mora biti veljavna številka"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Vrnjeno"
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "O InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Izgradnja mora biti najprej preklicana, nato je lahko izbrisana"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Nalog izgradnje"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Nalogi izgradnje"
 
@@ -1008,17 +1008,21 @@ msgstr "Nalogi izgradnje"
 msgid "Invalid choice for parent build"
 msgstr "Neveljavna izbira za nadrejeno izgradnjo"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Referenca naloga izgradnje"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Referenca naloga izgradnje"
 msgid "Reference"
 msgstr "Referenca"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Nadrejena izgradnja"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša"
 msgid "Part"
 msgstr "Del"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Izberite del za izgradnjo"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Referenca dobavnica"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Dobavnica na katero se navezuje ta izgradnja"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Lokacija vira"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Izberite lokacijo dela za to izgradnjo (v primeru da ni pomembno pusti prazno)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Ciljna lokacija"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Izberite lokacijo, kjer bodo končne postavke shranjene"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Količina izgradenj"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Število postavk za izgradnjo"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Končane postavke"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Število postavk zaloge, ki so bile končane"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Status izgradnje"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Koda statusa izgradnje"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Številka serije"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Številka serije za to izgradnjo"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Datum ustvarjenja"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Rok dokončanja"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Rok končanja izdelave. Izdelava po tem datumu bo v zamudi po tem datumu."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Datom končanja"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "dokončal"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Izdal"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Uporabnik, ki je izdal nalog za izgradnjo"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr "Uporabnik, ki je izdal nalog za izgradnjo"
 msgid "Responsible"
 msgstr "Odgovoren"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr "Zunanja povezava"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Nalog izgradnje {build} je dokončan"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Nalog izgradnej dokončan"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Ni določena izgradnja"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Igradnja je že dokončana"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Izgradnja se ne ujema s nalogom izdelave"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr "Količina"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Izdelana postavka mora imeti izgradnjo, če je glavni del označen kot sledljiv"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "Prestavljena zaloga ({q}) ne sme presegati zaloge ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Preveč zaloge je prestavljene"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Prestavljena količina mora biti večja od 0"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Količina za zalogo s serijsko številko mora biti 1"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr "Postavka zaloge"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Izvorna postavka zaloge"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Količina zaloge za prestavljanje za izgradnjo"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Inštaliraj v"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Destinacija postavke zaloge"
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1562 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Odgovoren"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3690,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3881,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3925,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4090,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4114,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4150,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4160,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4194,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4272,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4290,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4370,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4393,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4418,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4646,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4699,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4725,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4739,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4871,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4885,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4898,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5085,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5823,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5837,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5875,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5898,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5921,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5929,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5945,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5961,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6060,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6428,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7229,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8081,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8252,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8418,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8709,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8786,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10095,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13272,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13915,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14152,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/sr/LC_MESSAGES/django.po b/InvenTree/locale/sr/LC_MESSAGES/django.po
index 02edac888553..da6c30b03200 100644
--- a/InvenTree/locale/sr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sr/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-20 12:27\n"
 "Last-Translator: \n"
 "Language-Team: Serbian (Latin)\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Nije navedena vrednost"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Nije moguće konvertovati {original} u {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Isporučena nevažeća količina"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Isporučena nevažeća količina ({exc})"
@@ -59,10 +59,10 @@ msgstr "Unesite datum"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Navedeni domen adrese e-pošte nije prihvaćen."
 msgid "Registration is disabled."
 msgstr "Registracija je onemogućena."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Isporučena nevažeća količina"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Serijski broj nije popunjen"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Dupliciraj serijski broj"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Nevažeći raspon grupe: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Raspon grupe {group} prelazi dozvoljenu količinu ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Nevažeća sekvenca grupe: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Nisu pronađeni serijski brojevi"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Broj jedinstvenih serijskih brojeva ({len(serials)}) mora odgovarati količini ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Uklonite HTML oznake iz ove vrednosti"
 
@@ -405,10 +405,10 @@ msgstr "Prilog"
 msgid "Select file to attach"
 msgstr "Izaberite datoteku za prilog"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Izaberite datoteku za prilog"
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Link za eksterni URL"
@@ -436,10 +436,10 @@ msgstr "Komentar"
 msgid "File comment"
 msgstr "Datoteka komentara"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Dvostruka imena ne mogu postojati pod istom nadredjenom grupom"
 msgid "Invalid choice"
 msgstr "Nevažeći izvor"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Nevažeći izvor"
 msgid "Name"
 msgstr "Ime"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Greška servera"
 msgid "An error has been logged by the server."
 msgstr "Server je zabležio grešku."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Mora biti važeći broj"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Vraćeno"
 msgid "In Progress"
 msgstr "U progresu"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr ""
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Nalog za izradu"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Nalozi za izradu"
 
@@ -1008,17 +1008,21 @@ msgstr "Nalozi za izradu"
 msgid "Invalid choice for parent build"
 msgstr "Nevažeći izbor za nadređenu verziju"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Deo u nalogu za izradu ne može se izmeniti"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Reference naloga za pravljenje"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Reference naloga za pravljenje"
 msgid "Reference"
 msgstr "Referenca"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Kratak opis izrade (nije obavezno)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr ""
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr ""
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4869,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr ""
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8250,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po
index 0853578ece87..ae7f74834209 100644
--- a/InvenTree/locale/sv/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sv/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-22 10:34+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-22 14:07\n"
 "Last-Translator: \n"
 "Language-Team: Swedish\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Inget värde angivet"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Kunde inte konvertera {original} till {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Ogiltigt antal angivet"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Ogiltigt antal angivet ({exc})"
@@ -59,10 +59,10 @@ msgstr "Ange datum"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Den angivna e-postdomänen är inte godkänd."
 msgid "Registration is disabled."
 msgstr "Registrering är stängd."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Ogiltigt antal angivet"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Tom serienummersträng"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Serienummret finns redan"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Inga serienummer hittades"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Ta bort HTML-taggar från detta värde"
 
@@ -405,10 +405,10 @@ msgstr "Bilaga"
 msgid "Select file to attach"
 msgstr "Välj fil att bifoga"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Välj fil att bifoga"
 msgid "Link"
 msgstr "Länk"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Länk till extern URL"
@@ -436,10 +436,10 @@ msgstr "Kommentar"
 msgid "File comment"
 msgstr "Fil kommentar"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr "Ogiltigt val"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Ogiltigt val"
 msgid "Name"
 msgstr "Namn"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Serverfel"
 msgid "An error has been logged by the server."
 msgstr "Ett fel har loggats av servern."
 
-#: InvenTree/serializers.py:62 part/models.py:4165
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Måste vara ett giltigt nummer"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Återlämnad"
 msgid "In Progress"
 msgstr "Pågående"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Om InvenTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Byggnationen måste avbrytas innan den kan tas bort"
 
-#: build/api.py:281 part/models.py:4043 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4037 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Byggorder"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Byggordrar"
 
@@ -1008,17 +1008,21 @@ msgstr "Byggordrar"
 msgid "Invalid choice for parent build"
 msgstr "Ogiltigt val för överordnad bygge"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Byggorderreferens"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4058 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Byggorderreferens"
 msgid "Reference"
 msgstr "Referens"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Överordnat Bygge"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Byggorder till vilken detta bygge är tilldelad"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3916 part/models.py:4009
-#: part/models.py:4370 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "Byggorder till vilken detta bygge är tilldelad"
 msgid "Part"
 msgstr "Del"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Välj del att bygga"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Försäljningsorderreferens"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Försäljningsorder till vilken detta bygge allokeras"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Källa Plats"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Välj plats att ta lager från för detta bygge (lämna tomt för att ta från någon lagerplats)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Destinationsplats"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Välj plats där de färdiga objekten kommer att lagras"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Bygg kvantitet"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Antal lagerobjekt att bygga"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Slutförda objekt"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Antal lagerposter som har slutförts"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Byggstatus"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Bygg statuskod"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Batchkod"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Batch-kod för denna byggutdata"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Skapad"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Datum för slutförande"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Måldatum för färdigställande. Byggandet kommer att förfallas efter detta datum."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Slutförandedatum"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "slutfört av"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Utfärdad av"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Användare som utfärdade denna byggorder"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr "Användare som utfärdade denna byggorder"
 msgid "Responsible"
 msgstr "Ansvarig"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr "Extern länk"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr "Projektkod"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Byggorder {build} har slutförts"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "En byggorder har slutförts"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Ingen byggutgång angiven"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Byggutgång är redan slutförd"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Byggutgång matchar inte bygg order"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4031
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr "Antal"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Byggobjekt måste ange en byggutgång, eftersom huvuddelen är markerad som spårbar"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "Tilldelad kvantitet ({q}) får inte överstiga tillgängligt lagersaldo ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Lagerposten är överallokerad"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Allokeringsmängden måste vara större än noll"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Antal måste vara 1 för serialiserat lager"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr "Artikel i lager"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Källa lagervara"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Lagersaldo att allokera för att bygga"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Installera till"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Destination lagervara"
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Acceptera ofullständig"
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3926 part/models.py:4362
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Mål"
@@ -2121,1542 +2125,1564 @@ msgstr "Projektbeskrivning"
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Ingen grupp"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Omstart krävs"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "Serverinstans (Namn)"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Företagsnamn"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Internt företagsnamn"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "Bas-URL"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "Bas-URL för serverinstans"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Standardvaluta"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "dagar"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Ladda ned från URL"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Tillåt nedladdning av bilder och filer från extern URL"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Kräv bekräftelse"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Kräv uttrycklig användarbekräftelse för vissa åtgärder."
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Stöd för streckkoder"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Mall"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Virtuell"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Delar är virtuella som standard"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Visa import i vyer"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr "Visa importguiden i vissa delvyer"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Visa relaterade delar"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Visa relaterade delar för en del"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Visningsformat för delnamn"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Formatera för att visa artikelnamnet"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Interna priser"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Aktivera etikettutskrift"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Aktivera etikettutskrift från webbgränssnittet"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "Etikettbild DPI"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Aktivera rapporter"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Aktivera generering av rapporter"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Debugläge"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Sidstorlek"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Standard sidstorlek för PDF-rapporter"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Aktivera testrapporter"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Ansvarig"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Tillåtna domäner"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr "Aktivera projektkoder"
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
-msgstr ""
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Showing all rows"
+msgid "Show invalid BOMs"
+msgstr "Visar alla rader"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Sök efter artiklar"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr "Sök efter leverantörsartikel"
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr "Sök efter tillverkarartikel"
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3692,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3883,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3927,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Företag"
@@ -4066,7 +4092,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4116,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4152,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4066 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4162,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4196,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4274,8 @@ msgstr ""
 msgid "Delete image"
 msgstr "Radera bild"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4292,7 @@ msgstr "Kund"
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4372,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4395,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4420,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4648,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4701,7 @@ msgstr "Etikett"
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4727,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4741,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4873,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4887,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4900,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5087,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr "Leveransdatum"
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Streckkod"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5825,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3917 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3918 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5839,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Nyckelord"
@@ -5851,11 +5877,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5900,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5923,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5931,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Artiklar"
 
@@ -5921,7 +5947,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3919
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5963,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3862
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Kategori"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6062,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3863 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr "Ikon"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr "Ikon (valfritt)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3918
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr "Standardleverantör"
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6430,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3870 part/models.py:3871
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3877 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3878
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3916
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3917
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3919
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3920
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3920
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:4020
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:4021
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4032
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4038
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4044
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4051 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4059
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4067
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4073
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4074
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4079 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4080
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4085 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4086
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4091 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4092
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4177 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4187 part/models.py:4189
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4329
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4350
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4363
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4371
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4387
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4395
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4396
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4415
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4420
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7231,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8083,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8394,111 +8420,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8711,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8788,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10097,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Radera"
 
@@ -13248,7 +13274,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "Lägg till"
 
@@ -13891,7 +13917,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14154,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po
index 8eee74f3aadb..98cb4c3fe4dc 100644
--- a/InvenTree/locale/th/LC_MESSAGES/django.po
+++ b/InvenTree/locale/th/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-22 10:34+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-23 14:58\n"
 "Last-Translator: \n"
 "Language-Team: Thai\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr ""
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr ""
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr ""
@@ -59,10 +59,10 @@ msgstr "ป้อนวันที่"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr ""
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "ปริมาณสินค้าไม่ถูกต้อง"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr ""
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "หมายเลขซีเรียลซ้ำกัน"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr ""
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "ไม่พบหมายเลขซีเรียล"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr ""
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr ""
 
@@ -405,10 +405,10 @@ msgstr "ไฟล์แนบ"
 msgid "Select file to attach"
 msgstr "เลือกไฟล์ที่ต้องการแนบ"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "เลือกไฟล์ที่ต้องการแนบ"
 msgid "Link"
 msgstr "ลิงก์"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr ""
@@ -436,10 +436,10 @@ msgstr "ความคิดเห็น"
 msgid "File comment"
 msgstr "ความเห็นของไฟล์"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr ""
 msgid "Name"
 msgstr "ชื่อ"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "เกิดข้อผิดพลาดที่เซิร์ฟเ
 msgid "An error has been logged by the server."
 msgstr ""
 
-#: InvenTree/serializers.py:62 part/models.py:4165
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "ต้องเป็นตัวเลข"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "ส่งคืนแล้ว"
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "เกี่ยวกับ Inventree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4043 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4037 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr ""
 
@@ -1008,17 +1008,21 @@ msgstr ""
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4058 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr ""
 msgid "Reference"
 msgstr ""
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr ""
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3916 part/models.py:4009
-#: part/models.py:4370 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr ""
 msgid "Part"
 msgstr ""
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr ""
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr ""
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr ""
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr ""
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr ""
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr ""
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr ""
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr ""
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr ""
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr ""
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr ""
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "ออกโดย"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr ""
 msgid "Responsible"
 msgstr ""
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "จำนวนต้องมีค่ามากกว่า 0"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4031
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr ""
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3926 part/models.py:4362
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr ""
 msgid "Stock can be taken from any available location."
 msgstr ""
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr ""
@@ -2121,1542 +2125,1560 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr ""
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr ""
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr ""
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr ""
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3688,31 @@ msgstr ""
 msgid "Image"
 msgstr ""
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3879,7 @@ msgid "Contact email address"
 msgstr ""
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3923,7 @@ msgstr ""
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4088,7 @@ msgid "Parameter value"
 msgstr ""
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4112,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4148,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4066 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4158,11 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4192,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4248,8 +4270,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4288,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4368,7 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr ""
 
@@ -4369,7 +4391,7 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr ""
 
@@ -4394,7 +4416,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4644,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr ""
 
@@ -4675,7 +4697,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4723,7 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr ""
 
@@ -4715,8 +4737,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr ""
 
@@ -4847,7 +4869,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4883,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4896,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5083,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5821,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3917 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3918 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5835,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr ""
@@ -5851,11 +5873,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr ""
 
@@ -5874,12 +5896,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5919,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5927,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "ชิ้นส่วน"
 
@@ -5921,7 +5943,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3919
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5959,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3862
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr ""
@@ -6036,363 +6058,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3863 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3918
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6426,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3870 part/models.py:3871
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3877 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3878
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3916
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3917
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3919
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3920
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3920
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:4020
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:4021
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4032
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4038
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4044
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4051 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4059
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4067
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4073
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4074
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4079 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4080
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4085 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4086
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4091 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4092
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4177 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4187 part/models.py:4189
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4329
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4350
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4363
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4371
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4387
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4395
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4396
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4415
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4420
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7227,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8079,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8394,111 +8416,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8707,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8784,7 @@ msgstr ""
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr ""
 
@@ -10071,7 +10093,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13270,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13913,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14150,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr ""
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr ""
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index 6661bd214f3f..7b4d05505f18 100644
--- a/InvenTree/locale/tr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/tr/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:52\n"
 "Last-Translator: \n"
 "Language-Team: Turkish\n"
@@ -34,16 +34,16 @@ msgstr "Geçersiz ürün girildi ({unit})"
 msgid "No value provided"
 msgstr "Değer verilmemiş"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "{original} birimi {unit} birimine dönüştürülemedi"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Geçersiz miktar sağlandı"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Geçersiz miktar sağlandı({exc})"
@@ -59,10 +59,10 @@ msgstr "Tarih giriniz"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Sağlanan e-posta alanı onaylanmadı."
 msgid "Registration is disabled."
 msgstr "Kayıt devre dışı."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Geçersiz veri sağlandı"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Boş seri numarası dizesi"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Yinelenen seri"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Geçersiz grup aralığı: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Grup aralığı {group}, izin verilen miktarı aşmaktadır ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Geçersiz grup aralığı: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Seri numarası bulunamadı"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Benzersiz seri numaralarının sayısı ({len(serials)}) ile miktarın ({expected_quantity}) eşleşmesi gerekmektedir"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Bu değerden HTML etiketlerini kaldır"
 
@@ -405,10 +405,10 @@ msgstr "Ek"
 msgid "Select file to attach"
 msgstr "Eklenecek dosyayı seç"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Eklenecek dosyayı seç"
 msgid "Link"
 msgstr "Bağlantı"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Harici URL'ye bağlantı"
@@ -436,10 +436,10 @@ msgstr "Yorum"
 msgid "File comment"
 msgstr "Dosya yorumu"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Aynı kaynak altında birden fazla aynı isim kullanılamaz"
 msgid "Invalid choice"
 msgstr "Geçersiz seçim"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Geçersiz seçim"
 msgid "Name"
 msgstr "Adı"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Sunucu Hatası"
 msgid "An error has been logged by the server."
 msgstr "Bir hafta sunucu tarafından kayıt edildi."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Geçerli bir numara olmalı"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "İade"
 msgid "In Progress"
 msgstr "Devam Ediyor"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "InvenTree Hakkında"
 msgid "Build must be cancelled before it can be deleted"
 msgstr ""
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Yapım İşi Emri"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Yapım İşi Emirleri"
 
@@ -1008,17 +1008,21 @@ msgstr "Yapım İşi Emirleri"
 msgid "Invalid choice for parent build"
 msgstr ""
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr ""
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Yapım İşi Emri Referansı"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1036,27 @@ msgstr "Yapım İşi Emri Referansı"
 msgid "Reference"
 msgstr "Referans"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr ""
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Üst Yapım İşi"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
 msgid "Part"
 msgstr "Parça"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Yapım işi için parça seçin"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Satış Emri Referansı"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Bu yapım işinin tahsis edildiği satış emri"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Kaynak Konum"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Bu yapım işi için stok alınacak konumu seçin (her hangi bir stok konumundan alınması için boş bırakın)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Hedef Konum"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Tamamlanmış ögelerin saklanacağı konumu seçiniz"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Yapım İşi Miktarı"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Yapım işi stok kalemlerinin sayısı"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Tamamlanmış ögeler"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Tamamlanan stok kalemlerinin sayısı"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Yapım İşi Durumu"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Yapım işi durum kodu"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Sıra numarası"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Yapım işi çıktısı için sıra numarası"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Oluşturulma tarihi"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Hedef tamamlama tarihi"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım işi gecikmiş olacak."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Tamamlama tarihi"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "tamamlayan"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Veren"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Bu yapım işi emrini veren kullanıcı"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1211,11 @@ msgstr "Bu yapım işi emrini veren kullanıcı"
 msgid "Responsible"
 msgstr "Sorumlu"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr ""
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1227,16 @@ msgstr ""
 msgid "External Link"
 msgstr "Harici Bağlantı"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr ""
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr ""
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1246,57 @@ msgstr ""
 msgid "Project Code"
 msgstr ""
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr ""
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr ""
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr ""
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Yapım işi çıktısı belirtilmedi"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Yapım işi çıktısı zaten tamamlanmış"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Yapım işi çıktısı, yapım işi emri ile eşleşmiyor"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr ""
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr ""
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1338,37 @@ msgstr ""
 msgid "Quantity"
 msgstr "Miktar"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr ""
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Ana parça izlenebilir olarak işaretlendiğinden, yapım işi çıktısı için bir yapım işi ögesi belirtmelidir"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Stok kalemi fazladan tahsis edilmiş"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Seri numaralı stok için miktar bir olmalı"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr ""
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1384,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr "Stok Kalemi"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Kaynak stok kalemi"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Yapım işi için tahsis edilen stok miktarı"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Kurulduğu yer"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Hedef stok kalemi"
 
@@ -1429,7 +1433,7 @@ msgstr ""
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr ""
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1451,7 @@ msgstr ""
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr ""
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr ""
 
@@ -1455,8 +1459,8 @@ msgstr ""
 msgid "A list of build outputs must be provided"
 msgstr ""
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1500,8 @@ msgid "Location for completed build outputs"
 msgstr ""
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1574,7 @@ msgstr ""
 msgid "Required stock has not been fully allocated"
 msgstr "Gerekli stok tamamen tahsis edilemedi"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr ""
 
@@ -1610,7 +1614,7 @@ msgstr ""
 msgid "Item must be in stock"
 msgstr ""
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr ""
@@ -1623,7 +1627,7 @@ msgstr ""
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr ""
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr ""
 
@@ -1663,8 +1667,8 @@ msgstr ""
 msgid "Allocate optional BOM items to build order"
 msgstr ""
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr ""
 
@@ -1693,15 +1697,15 @@ msgstr ""
 msgid "Available Stock"
 msgstr ""
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr ""
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr ""
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr ""
@@ -1818,8 +1822,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1860,8 @@ msgid "Completed Outputs"
 msgstr ""
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1911,7 @@ msgstr "Stok Kaynağı"
 msgid "Stock can be taken from any available location."
 msgstr "Stok herhangi bir konumdan alınabilir."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Hedef"
@@ -2121,1542 +2125,1562 @@ msgstr ""
 msgid "User or group responsible for this project"
 msgstr ""
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "Anahtar dizesi benzersiz olmalı"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr ""
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr ""
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr ""
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr ""
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr ""
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr ""
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Şirket adı"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "Ana URL"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Varsayılan Para Birimi"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "günler"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "URL'den indir"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Harici URL'den resim ve dosyaların indirilmesine izin ver"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Barkod Desteği"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr ""
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr ""
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr ""
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr "DPN Regex"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Parça DPN eşleştirmesi için Düzenli İfade Kalıbı (Regex)"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Yinelenen DPN'ye İzin Ver"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Birden çok parçanın aynı DPN'yi paylaşmasına izin ver"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "DPN Düzenlemeye İzin Ver"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr "Kategori Paremetre Sablonu Kopyala"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr "Parça oluştururken kategori parametre şablonlarını kopyala"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Şablon"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "Parçaları varsayılan olan şablondur"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Montaj"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "Parçalar varsayılan olarak başka bileşenlerden monte edilebilir"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Bileşen"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "Parçalar varsayılan olarak alt bileşen olarak kullanılabilir"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Satın Alınabilir"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Parçalar varsayılan olarak satın alınabilir"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Satılabilir"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Parçalar varsayılan olarak satılabilir"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Takip Edilebilir"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Parçalar varsayılan olarak takip edilebilir"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Sanal"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Parçalar varsayılan olarak sanaldır"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "İlgili parçaları göster"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr ""
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Hata Ayıklama Modu"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Sayfa Boyutu"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "PDF raporlar için varsayılan sayfa boyutu"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin"
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr ""
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Sorumlu"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr ""
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr ""
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr ""
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr ""
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr ""
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr ""
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr ""
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "Formlarda Miktarı Göster"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr ""
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr ""
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Fiyat"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Aktif"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr ""
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3690,31 @@ msgstr ""
 msgid "Image"
 msgstr "Resim"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr ""
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr ""
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr ""
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr ""
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr ""
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -3857,7 +3881,7 @@ msgid "Contact email address"
 msgstr "İletişim e-posta adresi"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3925,7 @@ msgstr "Bu şirket için varsayılan para birimi"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr ""
@@ -4066,7 +4090,7 @@ msgid "Parameter value"
 msgstr "Parametre değeri"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4114,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4150,7 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4160,11 @@ msgstr ""
 msgid "Note"
 msgstr "Not"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "temel maliyet"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
@@ -4170,7 +4194,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "çoklu"
 
@@ -4248,8 +4272,8 @@ msgstr ""
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4290,7 @@ msgstr "Müşteri"
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4370,7 @@ msgstr "Tedarikçi Stoku"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Satın Alma Emirleri"
 
@@ -4369,7 +4393,7 @@ msgstr "Yeni Satın Alma Emri"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Satış Emirleri"
 
@@ -4394,7 +4418,7 @@ msgstr "Atanan Stok"
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr ""
 
@@ -4622,7 +4646,7 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Stok Kalemleri"
 
@@ -4675,7 +4699,7 @@ msgstr "Etiket"
 msgid "Label template file"
 msgstr "Etiket şablon listesi"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4725,7 @@ msgstr "Yükseklik [mm]"
 msgid "Label height, specified in mm"
 msgstr "Etiket yüksekliği mm olarak belirtilmeli"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Dosya Adı Deseni"
 
@@ -4715,8 +4739,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Filtreler"
 
@@ -4847,7 +4871,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4885,7 @@ msgstr ""
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4898,184 @@ msgstr ""
 msgid "Total price for this order"
 msgstr ""
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr ""
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr ""
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr ""
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr ""
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Harici sayfaya bağlantı"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Oluşturan"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr ""
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr ""
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr ""
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Sipariş referansı"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr ""
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr ""
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr ""
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr ""
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5085,341 @@ msgstr ""
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr ""
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "Tahsis miktarı stok miktarını aşamaz"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "Seri numaralı stok kalemi için miktar bir olmalı"
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr "Stok tahsis miktarını girin"
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr ""
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr ""
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr ""
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr ""
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr ""
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr ""
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr ""
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr ""
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr ""
 
@@ -5799,12 +5823,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr ""
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -5813,20 +5837,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr "DPN"
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr "Revizyon"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Anahtar kelimeler"
@@ -5851,11 +5875,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr "Çeşidi"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "Minimum Stok"
 
@@ -5874,12 +5898,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -5897,7 +5921,7 @@ msgstr ""
 msgid "Category Path"
 msgstr ""
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5929,7 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Parçalar"
 
@@ -5921,7 +5945,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -5937,92 +5961,92 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr ""
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "Varsayılan Konum"
@@ -6036,363 +6060,363 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Parça Kategorileri"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Bu kategori içindeki parçalar için varsayılan konum"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr ""
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Parça adı"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr "Şablon Mu"
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr "Bu parça bir şablon parçası mı?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr "Bu parça başka bir parçanın çeşidi mi?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr ""
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr "Parça revizyon veya versiyon numarası"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr "Varsayılan Tedarikçi"
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr "Varsayılan tedarikçi parçası"
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr "Bu parça diğer parçalardan yapılabilir mi?"
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr "Bu parça diğer parçaların yapımında kullanılabilir mi?"
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?"
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr "Bu parça müşterilere satılabilir mi?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr "Bu parça aktif mi?"
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr "Oluşturan Kullanıcı"
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr ""
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6428,330 @@ msgstr ""
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabilir"
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr "Test Adı"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr "Test Açıklaması"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr "Gerekli"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr "Testi geçmesi için bu gerekli mi?"
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr ""
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr "Parametre şablon adı benzersiz olmalıdır"
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr ""
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr "Parametre Şablonu"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr ""
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr "Bu malzeme listesi, çeşit parçalar listesini kalıtsalıdır"
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr "Çeşide İzin Ver"
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr "Çeşit parçaların stok kalemleri bu malzeme listesinde kullanılabilir"
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7205,7 +7229,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -8057,7 +8081,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8228,7 +8252,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8394,111 +8418,111 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr "Şablon adı"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr "Rapor şablon dosyası"
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr "Rapor şablon tanımı"
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr "Revizyon numarası raporla (otomatik artış)"
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr ""
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr "Rapor şablonu etkin"
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr "Stok kalemi sorgu filtreleri (anahter=değer [key=value] olarak virgülle ayrılmış liste)"
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr ""
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
@@ -8685,60 +8709,60 @@ msgstr ""
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr ""
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -8762,7 +8786,7 @@ msgstr "Stok Konumu"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Stok Konumları"
 
@@ -10071,7 +10095,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr ""
 
@@ -13248,7 +13272,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr ""
 
@@ -13891,7 +13915,7 @@ msgstr "Bildirimleri Göster"
 msgid "New Notifications"
 msgstr "Yeni Bildirimler"
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr ""
 
@@ -14128,35 +14152,34 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "İzinleri ayarla"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Grup"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Görünüm"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Parçayı görüntüleme izni"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Parça ekleme izni"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Değiştir"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Parçaları düzenleme izni"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Parçaları silme izni"
-
diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po
index 14225320e9f7..b8712df2e627 100644
--- a/InvenTree/locale/vi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/vi/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2024-03-19 11:52\n"
 "Last-Translator: \n"
 "Language-Team: Vietnamese\n"
@@ -34,16 +34,16 @@ msgstr ""
 msgid "No value provided"
 msgstr "Chưa cung cấp giá trị"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr "Không thể chuyển đổi {original} sang {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
 msgstr "Số lượng cung cấp không hợp lệ"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
 msgstr "Số lượng cung cấp không hợp lệ ({exc})"
@@ -59,10 +59,10 @@ msgstr "Nhập ngày"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -132,42 +132,42 @@ msgstr "Miền email được cung cấp không được phê duyệt."
 msgid "Registration is disabled."
 msgstr "Đăng ký bị vô hiệu hóa."
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "Số lượng cung cấp không hợp lệ"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "Chuỗi số sê-ri trống"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "Trùng lặp sê-ri"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
 msgstr "Phạm vi nhóm không hợp lệ: {group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "Khoảng nhóm {group} vượt cho phép số lượng ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
 msgstr "Thứ tự nhóm không hợp lệ: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "Không tìm thấy số sê-ri"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "Số sê ri duy nhất ({len(serials)}) phải phù hợp số lượng ({expected_quantity})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "Xóa thẻ HTML từ giá trị này"
 
@@ -405,10 +405,10 @@ msgstr "Đính kèm"
 msgid "Select file to attach"
 msgstr "Chọn file đính kèm"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -422,7 +422,7 @@ msgstr "Chọn file đính kèm"
 msgid "Link"
 msgstr "Liên kết"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "Liên kết đến URL bên ngoài"
@@ -436,10 +436,10 @@ msgstr "Bình luận"
 msgid "File comment"
 msgstr "Bình luận tệp tin"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
@@ -483,10 +483,10 @@ msgstr "Tên trùng lặp không thể tồn tại trong cùng cấp thư mục"
 msgid "Invalid choice"
 msgstr "Lựa chọn sai"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -503,17 +503,17 @@ msgstr "Lựa chọn sai"
 msgid "Name"
 msgstr "Tên"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -585,12 +585,12 @@ msgstr "Lỗi máy chủ"
 msgid "An error has been logged by the server."
 msgstr "Lỗi đã được ghi lại bởi máy chủ."
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "Phải là một số hợp lệ"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -731,7 +731,7 @@ msgstr "Đã trả lại"
 msgid "In Progress"
 msgstr "Đang tiến hành"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -942,14 +942,14 @@ msgstr "Giới thiệu"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "Bạn dựng phải được hủy bỏ trước khi có thể xóa được"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr "Vật tư tiêu hao"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1000,7 +1000,7 @@ msgstr "Tạo đơn hàng"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "Tạo đơn hàng"
 
@@ -1008,17 +1008,23 @@ msgstr "Tạo đơn hàng"
 msgid "Invalid choice for parent build"
 msgstr "Lựa chọn sai cho bản dựng cha"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+#, fuzzy
+#| msgid "Purchase order must be specified"
+msgid "Responsible user or group must be specified"
+msgstr "Đơn đặt mua phải được chỉ định"
+
+#: build/models.py:133
 msgid "Build order part cannot be changed"
 msgstr "Sản phẩm đơn đặt bản dựng không thể thay đổi được"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "Tham chiếu đơn đặt bản dựng"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1032,27 +1038,27 @@ msgstr "Tham chiếu đơn đặt bản dựng"
 msgid "Reference"
 msgstr "Tham chiếu"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
 msgstr "Mô tả ngắn về phiên bạn (Tùy chọn)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "Phiên bản cha"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "Đơn đặt bản dựng với bản dựng này đã được phân bổ"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1102,107 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b
 msgid "Part"
 msgstr "Nguyên liệu"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "Chọn sản phẩm để xây dựng"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "Tham chiếu đơn đặt bản dựng"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "Đơn đặt bán hàng với bản dựng này đã được phân bổ"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "Địa điểm nguồn"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "Chọn địa điểm để lấy trong kho cho bản dựng này (để trống để lấy từ bất kỳ vị trí kho nào)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "Địa điểm đích"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "Chọn địa điểm nơi hàng hóa hoàn thiện sẽ được lưu kho"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "Xây dựng số lượng"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "Số kho hàng để dựng"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "Những mục hoàn thành"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "Số sản phẩm trong kho đã được hoàn thiện"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "Trnạg thái bản dựng"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "Mã trạng thái bản dựng"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "Mã lô hàng"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "Mã lô cho đầu ra bản dựng này"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "Ngày tạo"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "Ngày hoàn thành mục tiêu"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Ngày mục tiêu để hoàn thành bản dựng. Bản dựng sẽ bị quá hạn sau ngày này."
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "Ngày hoàn thành"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "hoàn thành bởi"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "Cấp bởi"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "Người dùng người đã được phân công cho đơn đặt bản dựng này"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1207,11 +1213,11 @@ msgstr "Người dùng người đã được phân công cho đơn đặt bản
 msgid "Responsible"
 msgstr "Chịu trách nhiệm"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "Người dùng hoặc nhóm có trách nhiệm với đơn đặt bản dựng này"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1223,16 +1229,16 @@ msgstr "Người dùng hoặc nhóm có trách nhiệm với đơn đặt bản
 msgid "External Link"
 msgstr "Liên kết bên ngoài"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "Độ ưu tiên"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "Độ quan trọng của đơn đặt bản dựng"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1242,57 +1248,57 @@ msgstr "Độ quan trọng của đơn đặt bản dựng"
 msgid "Project Code"
 msgstr "Mã dự án"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
 msgstr "Mã dự án cho đơn đặt bản dựng này"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "Đơn đặt bản dựng {build} đã được hoàn thành"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "Một đơn đặt bản dựng đã được hoàn thành"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "Không có đầu ra bản dựng đã được chỉ ra"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "Đầu ra bản dựng đã được hoàn thiện"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "Đầu ra bản dựng không phù hợp với đơn đặt bản dựng"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "Số lượng phải lớn hơn 0"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "Số lượng không thể lớn hơn số lượng đầu ra"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
 msgstr "Dựng đối tượng"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1334,37 +1340,37 @@ msgstr "Dựng đối tượng"
 msgid "Quantity"
 msgstr "Số lượng"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
 msgstr "Yêu cầu số lượng để dựng đơn đặt"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Xây dựng mục phải xác định đầu ra, bởi vì sản phẩm chủ được đánh dấu là có thể theo dõi"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "Số lượng được phân bổ ({q}) không thể vượt quá số lượng có trong kho ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "Kho hàng đã bị phân bổ quá đà"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "Số lượng phân bổ phải lớn hơn 0"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Số lượng phải là 1 cho kho sê ri"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
 msgstr "Hàng trong kho đã chọn không phù hợp với đường BOM"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1380,19 +1386,19 @@ msgstr "Hàng trong kho đã chọn không phù hợp với đường BOM"
 msgid "Stock Item"
 msgstr "Kho hàng"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "Kho hàng gốc"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "Số lượng kho hàng cần chỉ định để xây dựng"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "Cài đặt vào"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "Kho hàng đích"
 
@@ -1429,7 +1435,7 @@ msgstr "Số lượng nguyên dương cần phải điền cho sản phẩm có
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "Cần nhập số lượng nguyên dương, bởi vì hóa đơn vật liệu chứa sản phẩm có thể theo dõi"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
@@ -1447,7 +1453,7 @@ msgstr "Số sêri tự cấp"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "Tự động cấp số seri phù hợp cho hàng hóa được yêu cầu"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "Số sêri sau đây đã tồn tại hoặc không hợp lệ"
 
@@ -1455,8 +1461,8 @@ msgstr "Số sêri sau đây đã tồn tại hoặc không hợp lệ"
 msgid "A list of build outputs must be provided"
 msgstr "Danh sách đầu ra bản dựng phải được cung cấp"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1496,8 +1502,8 @@ msgid "Location for completed build outputs"
 msgstr "Vị trí cho đầu ra bản dựng hoàn thiện"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1570,7 +1576,7 @@ msgstr "Chấp nhận hàng hóa không được phân bổ đầy đủ vào đ
 msgid "Required stock has not been fully allocated"
 msgstr "Kho được yêu cầu chưa được phân bổ hết không gian"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "Chấp nhận không hoàn thành"
 
@@ -1610,7 +1616,7 @@ msgstr "bom_item.part phải trỏ đến phần tương tự của đơn đặt
 msgid "Item must be in stock"
 msgstr "Hàng hóa phải trong kho"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "Số lượng có sẵn ({q}) đã bị vượt quá"
@@ -1623,7 +1629,7 @@ msgstr "Đầu ra bản dựng phải được xác định cho việc phân s
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "Đầu ra bản dựng không thể chỉ định cho việc phân sản phẩm chưa được theo dõi"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "Hàng hóa phân bổ phải được cung cấp"
 
@@ -1663,8 +1669,8 @@ msgstr "Mục tùy chọn"
 msgid "Allocate optional BOM items to build order"
 msgstr "Phân bổ các mục hóa đơn vật liệu tùy chọn đến đơn đặt bản dựng"
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "Mục BOM"
 
@@ -1693,15 +1699,15 @@ msgstr "Đang sản xuất"
 msgid "Available Stock"
 msgstr "Số hàng tồn"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "Kho được yêu cầu cho đặt hàng bản dựng"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr "Đơn đặt bản dựng quá hạn"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr "Đặt hàng bản dựng {bo} đang quá hạn"
@@ -1818,8 +1824,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "Kho không được phân bổ đầy đủ với yêu cầu bản dựng này"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1856,8 +1862,8 @@ msgid "Completed Outputs"
 msgstr "Đầu ra hoàn thiện"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1907,7 +1913,7 @@ msgstr "Nguồn kho"
 msgid "Stock can be taken from any available location."
 msgstr "Kho có thể được lấy từ bất kỳ địa điểm nào."
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "Đích đến"
@@ -2121,1542 +2127,1572 @@ msgstr "Mô tả dự án"
 msgid "User or group responsible for this project"
 msgstr "Người dùng hoặc nhóm có trách nhiệm với dự án này"
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Khóa thiết lập (phải duy nhất - phân biệt hoa thường)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "Giá trị cài đặt"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "Giá trị đã chọn không hợp lệ"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "Giá trị phải là kiểu boolean"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "Giá trị phải là một số nguyên dương"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "Chuỗi khóa phải duy nhất"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "Không có nhóm"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "Tên miền rỗng là không được phép."
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "Tên miền không hợp lệ: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
 msgstr "Không phần mở rộng"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "Cần khởi động lại"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "Một thiết lập đã bị thay đổi yêu cầu khởi động lại máy chủ"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
 msgstr "Chuyển dữ liệu chờ xử lý"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr "Số đợt nâng cấp cơ sở dữ liệu chờ xử lý"
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "Tên thực thể máy chủ"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr "Mô tả chuỗi cho thực thể máy chủ"
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr "Sử dụng tên thực thể"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr "Sử dụng tên thực thể trên thanh tiêu đề"
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr "Cấm hiển thị `giới thiệu`"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr "Chỉ hiển thị cửa sổ `giới thiệu` với siêu người dùng"
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "Tên công ty"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "Tên công ty nội bộ"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr "URL cơ sở"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr "URL cơ sở cho thực thể máy chủ"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr "Tiền tệ mặc định"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr "Chọn tiền tệ chính khi tính giá"
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr "Tần suất cập nhật tiền tệ"
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr "Mức độ thường xuyên để cập nhật tỉ giá hối đoái (điền 0 để tắt)"
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "ngày"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr "Phần mở rộng cập nhật tiền tệ"
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr "Phần mở rộng cập nhật tiền tệ được sử dụng"
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr "Tải về từ URL"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr "Cho phép tải ảnh và tệp tin từ xa theo URL bên ngoài"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr "Giới hạn kích thước tải xuống"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr "Kích thước tải xuống tối đa với hình ảnh từ xa"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr "User-agent được dùng để tải xuống theo URL"
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr "Cho phép ghi đè user-agent được dùng để tải về hình ảnh và tệp tin từ xa theo URL bên ngoài (để trống nghĩa là dùng mặc định)"
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr "Yêu cầu xác nhận"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr "Yêu cầu người dùng xác nhận rõ ràng với một số chức năng nhất định."
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr "Cấp độ cây"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr "Độ sâu cây mặc định cho màn hình cây. Cấp độ sâu hơn sẽ sử dụng kỹ thuật tải chậm nếu cần thiết."
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr "Thời gian kiểm tra bản cập nhật"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr "Mức độ thường xuyên để kiểm tra bản cập nhật (điền 0 để tắt)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr "Sao lưu tự động"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr "Bật tính năng sao lưu tự động cơ sở dữ liệu và tệp tin đa phương tiện"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr "Khoảng thời gian sao lưu tự động"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr "Xác định số ngày giữa các kỳ sao lưu tự động"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr "Khoảng thời gian xóa tác vụ"
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr "Kết quả tác vụ chạy ngầm sẽ bị xóa sau số ngày được chỉ định"
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr "Khoảng thời gian xóa nhật ký lỗi"
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr "Nhật ký lỗi sẽ bị xóa sau số ngày được chỉ định"
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr "Khoảng thời gian xóa thông báo"
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr "Thông báo sẽ bị xóa sau số ngày được chỉ định"
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Hỗ trợ mã vạch"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
 msgstr "Bật hỗ trợ máy quét mã vạch trong giao diện web"
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr "Độ trễ quét mã vạch"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr "Thời gian trễ xử lý đầu đọc mã vạch"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr "Hỗ trợ mã vạch qua webcam"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr "Cho phép quét mã vạch qua webcam bên trong trình duyệt"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
 msgstr "Phiên bản Sản phẩm"
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
 msgstr "Bật trường phiên bản cho sản phẩm"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr "Mẫu IPN"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Mẫu dùng nhanh phổ biến dành cho tìm IPN sản phẩm"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr "Cho phép trùng IPN"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Cho phép nhiều sản phẩm dùng IPN giống nhau"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr "Cho phép sửa IPN"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Cho phép đổi giá trị IPN khi sửa một sản phẩm"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr "Sao chép dữ liệu BOM của sản phẩm"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Sao chép dữ liệu BOM mặc định khi nhân bản 1 sản phẩm"
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr "Sao chép dữ liệu tham số sản phẩm"
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr "Sao chép dữ liệu tham số mặc định khi nhân bản 1 sản phẩm"
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr "Chép thông tin kiểm thử sản phẩm"
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr "Sao chép dữ liệu kiểm thử mặc định khi nhân bản 1 sản phẩm"
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr "Sao chéo mẫu tham số danh mục"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr "Sao chéo mẫu tham số danh mục khi tạo 1 sản phẩm"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "Mẫu"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr "Sản phẩm là mẫu bởi mặc định"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "Lắp ráp"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr "Sản phẩm có thể lắp giáp từ thành phần khác theo mặc định"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "Thành phần"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr "Sản phẩm có thể được sử dụng mặc định như thành phần phụ"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "Có thể mua"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "Sản phẩm mặc định có thể mua được"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "Có thể bán"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "Sản phẩm mặc định có thể bán được"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "Có thể theo dõi"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "Sản phẩm mặc định có thể theo dõi được"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "Ảo"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "Sản phẩm mặc định là số hóa"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "Hiển thị Nhập liệu trong khung xem"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr "Hiển thị đồ thuật nhập dữ liệu trong một số khung nhìn sản phẩm"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "Hiển thị sản phẩm liên quan"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr "Hiện sản phẩm liên quan cho 1 sản phẩm"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr "Số liệu tồn kho ban đầu"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr "Cho phép tạo tồn kho ban đầu khi thêm 1 sản phẩm mới"
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr "Dữ liệu nhà cung cấp ban đầu"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr "Cho phép tạo dữ liệu nhà cung cấp ban đầu khi thêm 1 sản phẩm mới"
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr "Định dạng tên sản phẩm hiển thị"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr "Định dạng để hiển thị tên sản phẩm"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr "Biểu tượng mặc định của danh mục sản phẩm"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr "Biểu tượng mặc định của danh mục sản phẩm (để trống nghĩa là không có biểu tượng)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
 msgstr "Bắt buộc đơn vị tham số"
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr "Nếu đơn vị được cung cấp, giá trị tham số phải phù hợp với các đơn vị xác định"
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr "Vị trí phần thập phân giá bán tối thiểu"
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr "Số vị trí thập phân tối thiểu cần hiển thị khi tạo dữ liệu giá"
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr "Vị trí phần thập phân giá bán tối đa"
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr "Số vị trí thập phân tối đa cần hiển thị khi tạo dữ liệu giá"
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr "Sử dụng giá bán nhà cung cấp"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr "Bao gồm giá phá vỡ cả nhà cung cấp trong tính toán giá tổng thể"
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr "Ghi đè lịch sử mua hàng"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr "Giá đơn hàng đặt mua trước đó ghi đè giá phá vỡ của nhà cung cấp"
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr "Sử dụng giá hàng hóa trong kho"
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr "Dùng giá bán từ dữ liệu kho nhập vào thủ công đối với bộ tính toán giá bán"
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr "Tuổi giá kho hàng"
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr "Loại trừ hàng hóa trong kho cũ hơn số ngày ngày từ bảng tính giá bán"
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr "Sử dụng giá biến thể"
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr "Bao gồm giá biến thể trong bộ tính toán giá tổng thể"
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr "Chỉ các biến thể hoạt động"
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr "Chỉ sử dụng sản phẩm biến thể hoạt động để tính toán giá bán biến thể"
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr "Tần suất tạo lại giá"
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr "Số ngày trước khi giá sản phẩm được tự động cập nhật"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "Giá nội bộ"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr "Bật giá nội bộ cho sản phẩm"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr "Ghi đè giá nội bộ"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr "Nếu khả dụng, giá nội bộ ghi đè tính toán khoảng giá"
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr "Bật in tem nhãn"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr "Bật chức năng in tem nhãn từ giao diện web"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr "DPI hỉnh ảnh tem nhãn"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr "Độ phân giải DPI khi tạo tệp hình ảnh để cung cấp cho plugin in ấn tem nhãn"
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr "Bật báo cáo"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr "Cho phép tạo báo cáo"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Chế độ gỡ lỗi"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Tạo báo cáo trong chế độ gỡ lỗi (đầu ra HTML)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
 msgstr ""
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "Khổ giấy"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "Kích thước trang mặc định cho báo cáo PDF"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr "Bật báo cáo kiểm thử"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "Cho phép tạo báo cáo kiểm thử"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr "Đính kèm báo cáo kiểm thử"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr "Khi in một báo cáo kiểm thử, đính kèm một bản sao của báo cáo kiểm thử với hàng trong kho đã được kết hợp"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr "Sê ri toàn cục duy nhất"
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr "Số sê ri cho hàng trong kho phải là duy nhất trong toàn hệ thống"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr "Tự động điền số sê ri"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr "Tự động điền số sê ri vào biểu mẫu"
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr "Xóa kho đã hết hàng"
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+#, fuzzy
+#| msgid "Determines default behaviour when a stock item is depleted"
+msgid "Determines default behavior when a stock item is depleted"
 msgstr "Nhận dạng hành vi mặc định khi hàng trong kho bị hết"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr "Mẫu sinh mã theo lô"
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr "Mẫu tạo mã theo lô mặc định cho hàng trong kho"
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr "Quá hạn trong kho"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr "Bật chức năng quá hạn tồn kho"
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr "Bán kho quá hạn"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr "Cho phép bán hàng kho quá hạn"
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr "Thời gian hàng cũ trong kho"
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr "Số ngày hàng trong kho được xác định là cũ trước khi quá hạn"
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr "Dựng kho quá hạn"
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr "Cho phép xây dựng với kho hàng quá hạn"
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr "Kiểm soát sở hữu kho"
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr "Bật chức năng kiểm soát sở hữu kho với địa điểm và hàng trong kho"
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr "Biểu tượng địa điểm kho mặc định"
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr "Biểu tượng địa điểm kho hàng mặc định (trống nghĩa là không có biểu tượng)"
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
 msgstr "Hiển thị hàng hóa đã lắp đặt"
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr "Hiển thị hàng trong kho đã được lắp đặt trên bảng kho"
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr "Mã tham chiếu đơn đặt bản dựng"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr "Mẫu bắt buộc cho để trường tham chiếu đơn đặt bản dựng"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "Chịu trách nhiệm"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+#, fuzzy
+#| msgid "Only salable parts can be assigned to a sales order"
+msgid "A responsible owner must be assigned to each order"
+msgstr "Chỉ có thể gán sản phẩm có thể bán vào đơn đặt bán hàng"
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
 msgstr "Bật đơn hàng trả lại"
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr "Bật chức năng đơn hàng trả lại trong giao diện người dùng"
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
 msgstr "Mẫu tham chiếu đơn hàng trả lại"
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
 msgstr "Sửa đơn hàng trả lại đã hoàn thành"
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr "Cho phép sửa đơn hàng trả lại sau khi đã hoàn thành rồi"
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr "Mẫu tham chiếu đơn đặt hàng"
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr "Mẫu bắt buộc để tạo trường tham chiếu đơn đặt hàng"
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr "Vận chuyển mặc định đơn đặt hàng"
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr "Cho phép tạo vận chuyển mặc định với đơn đặt hàng"
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr "Sửa đơn đặt hàng đã hoàn thành"
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr "Cho phép sửa đơn đặt hàng sau khi đã vận chuyển hoặc hoàn thành"
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr "Mẫu tham chiếu đơn đặt mua"
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr "Mẫu bắt buộc cho để trường tham chiếu đơn đặt mua"
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr "Sửa đơn đặt mua đã hoàn thành"
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr "Cho phép sửa đơn đặt mua sau khi đã vận chuyển hoặc hoàn thành"
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
 msgstr "Tự động hoàn thành đơn đặt mua"
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr "Bật quên mật khẩu"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr "Bật chức năng quên mật khẩu trong trang đăng nhập"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr "Bật đăng ký"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr "Cho phép người dùng tự đăng ký tại trang đăng nhập"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr "Bật SSO"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr "Cho phép SSO tại trang đăng nhập"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr "Bật đăng ký SSO"
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr "Cho phép người dùng tự đăng ký SSO tại trang đăng nhập"
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr "Yêu cầu email"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr "Yêu cầu người dùng cung cấp email để đăng ký"
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr "Người dùng tự động điền SSO"
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Tự động điền thông tin chi tiết từ dữ liệu tài khoản SSO"
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr "Thư 2 lần"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr "Khi đăng ký sẽ hỏi người dùng hai lần thư điện tử của họ"
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr "Mật khẩu 2 lần"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr "Khi đăng ký sẽ hỏi người dùng hai lần mật khẩu của họ"
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr "Các tên miền được phép"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr "Cấm đăng ký với 1 số tên miền cụ thể (dấu phẩy ngăn cách, bắt đầu với dấu @)"
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr "Nhóm khi đăng ký"
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr "Nhóm được gán cho người dùng mới khi đăng ký"
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr "Bắt buộc MFA"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr "Người dùng phải sử dụng bảo mật đa nhân tố."
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr "Kiểm tra phần mở rộng khi khởi động"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr "Kiểm tra toàn bộ phần mở rộng đã được cài đặt khi khởi dộng - bật trong môi trường ảo hóa"
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr "Kiểm tra cập nhật plugin"
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr "Bật tích hợp URL"
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr "Bật phần mở rộng để thêm định tuyến URL"
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr "Bật tích hợp điều hướng"
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr "Bật phần mở rộng để tích hợp thanh định hướng"
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr "Bật tích hợp ứng dụng"
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr "Bật phần mở rộng để thêm ứng dụng"
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr "Cho phép tích hợp lập lịch"
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Bật phẩn mở rộng để chạy các tác vụ theo lịch"
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr "Bật tích hợp nguồn cấp sự kiện"
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr "Bật phần mở rộng để trả lời sự kiện bên trong"
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
 msgstr "Bật mã dự án"
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr "Bật mã dự án để theo dõi dự án"
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr "Chức năng kiểm kê"
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr "Bật chức năng kiểm kê theo mức độ ghi nhận kho và tính toán giá trị kho"
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
 msgstr "Ngoại trừ vị trí bên ngoài"
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr "Loại trừ hàng trong kho thuộc địa điểm bên ngoài ra khỏi tính toán kiểm kê"
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr "Giai đoạn kiểm kê tự động"
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr "Số ngày giữa ghi chép kiểm kê tự động (đặt không để tắt)"
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr "Khoảng thời gian xóa báo cáo"
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr "Báo cáo kiểm kê sẽ bị xóa sau số ngày xác định"
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr "Hiển thị tên đầy đủ của người dùng"
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr "Hiển thị tên đầy đủ thay vì tên đăng nhập"
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
 msgstr ""
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Khóa thiết lập (phải duy nhất - phân biệt hoa thường"
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
 msgstr "Ẩn sản phẩm ngừng hoạt động"
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr "Ẩn sản phẩm bị tắt trong kết quả trình bày tại trang chủ"
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr "Hiện sản phẩm đã đăng ký"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr "Hiện sản phẩm đã đăng ký trên trang chủ"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr "Hiện danh mục đã đăng ký"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr "Hiện danh mục sản phẩm đã đăng ký trên trang chủ"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "Hiển thị nguyên liệu mới nhất"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "Hiển thị nguyên liệu mới nhất trên trang chủ"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+#, fuzzy
+#| msgid "Show unvalidated BOMs"
+msgid "Show invalid BOMs"
 msgstr "Hiển thị BOM chưa được xác thực"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Hiện BOM chờ xác thực tại trang chủ"
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr "Hiện thay đổi kho hàng gần đây"
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr "Hiện hàng trong kho được thay đổi gần nhất trên trang chủ"
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr "Hiển thị hàng còn ít"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr "Hiển thị hàng hóa còn ít tại trang chủ"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr "Hiển thị hết hàng"
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr "Hiển thị hàng hóa đã bán hết tại trang chủ"
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr "Hiển thị hàng cần thiết"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Hiện hàng trong kho cần thiết cho xây dựng tại trang chủ"
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr "Bán kho quá hạn"
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr "Hiển thị hàng hóa đã quá hạn trên trang chủ"
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr "Hiện kho hàng ế"
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr "Hiện hàng trong kho bị ế trên trang chủ"
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr "Hiện bản dựng chờ xử lý"
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr "Hiện bản dựng chờ xử lý trên trang chủ"
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr "Hiện bản dựng quá hạn"
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr "Hiện bản dựng quá hạn trên trang chủ"
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr "Hiện PO nổi bật"
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr "Hiện PO nổi bật trên trang chủ"
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr "Hiện PO quá hạn"
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr "Hiện đơn mua hàng quá hạn trên trang chủ"
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr "Hiện đơn hàng vận chuyển nổi bật"
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr "Hiện đơn hàng vận chuyển nổi bật tại trang chủ"
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr "Hiện đơn vận chuyển quá hạn"
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr "Hiện đơn vận chuyển quá hạn trên trang chủ"
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr "Hiện đơn vận chuyển chờ xử lý"
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
 msgstr "Hiện đơn vận chuyển chờ xử lý trên trang chủ"
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
 msgstr "Hiện tin tức"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr "Hiện tin tức trên trang chủ"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr "Hiển thị nhãn cùng dòng"
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "Hiển thị nhãn PDF trong trình duyệt, thay vì tải về dạng tệp tin"
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr "Máy in tem nhãn mặc định"
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr "Cấu hình máy in tem nhãn nào được chọn mặc định"
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr "Hiển thị báo cáo cùng hàng"
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "Hiện báo cáo PDF trong trình duyệt, thay vì tải về dạng tệp tin"
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr "Tìm sản phẩm"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr "Hiện hàng hóa trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr "Tìm sản phẩm nhà cung cấp"
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr "Hiện sản phẩm nhà cung cấp trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr "Tìm sản phẩm nhà sản xuất"
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr "Hiện sản phẩm nhà sản xuất trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr "Ẩn sản phẩm ngừng hoạt động"
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr "Loại trừ sản phẩm ngưng hoạt động trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr "Tìm kiếm danh mục"
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr "Hiện danh mục sản phẩm trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr "Tìm kiếm kho"
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr "Hiện hàng hóa ở kho trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr "Ẩn hàng hóa trong kho không có sẵn"
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr "Không bao gồm hàng hóa trong kho mà không sẵn sàng từ màn hình xem trước tìm kiếm"
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr "Tìm kiếm vị trí"
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr "Hiện vị trí kho hàng trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr "Tìm kiếm công ty"
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr "Hiện công ty trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr "Tìm kiếm đặt hàng xây dựng"
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr "Hiện đơn đặt xây dựng trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr "Tìm kiếm đơn đặt mua"
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr "Hiện đơn đặt mua trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr "Loại trừ đơn đặt mua không hoạt động"
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr "Loại trừ đơn đặt mua không hoạt động ra khỏi cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr "Tìm đơn đặt hàng người mua"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr "Hiện đơn đặt hàng người mua trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr "Loại trừ đơn đặt hàng người mua không hoạt động"
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr "Không bao gồm đơn đặt hàng người mua không hoạt động trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
 msgstr "Tìm kiếm đơn hàng trả lại"
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr "Hiện đơn hàng trả lại trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr "Loại trừ đơn hàng trả lại không hoạt động"
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr "Không bao gồm đơn hàng trả lại không hoạt động trong cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr "Kết quả xem trước tìm kiếm"
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr "Số kết quả cần hiển thị trong từng phần của cửa sổ xem trước tìm kiếm"
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
 msgstr "Tìm kiếm biểu thức"
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr "Bật tìm kiếm biểu thức chính quy trong câu truy vấn tìm kiếm"
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr "Tìm phù hợp toàn bộ chữ"
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr "Truy vấn tìm trả về kết quả phù hợp toàn bộ chữ"
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "Hiện số lượng trong biểu mẫu"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr "Hiển thị số lượng sản phẩm có sẵn trong một số biểu mẫu"
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr "Phím escape để đóng mẫu biểu"
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr "Sử dụng phím escape để đóng mẫu biểu hộp thoại"
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr "Cố định điều hướng"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr "Vị trí thành điều hướng là cố định trên cùng màn hình"
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
 msgstr "Định dạng ngày"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr "Định dạng ưa chuộng khi hiển thị ngày"
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr "Lập lịch sản phẩm"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr "Hiển thị thông tin lịch sản phẩm"
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr "Kiểm kê sản phẩm"
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr "Hiển thị thông tin kiểm kê sản phẩm (nếu chức năng kiểm kê được bật)"
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr "Độ dài chuỗi trong bảng"
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr "Giới hạn độ dài tối đa cho chuỗi hiển thị trong kiểu xem bảng biểu"
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
 msgstr "Mẫu nhãn sản phẩm mặc định"
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr "Mẫu nhãn sản phẩm mặc định được chọn tự động"
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
 msgstr "Mẫu hàng hóa trong khi mặc định"
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr "Mẫu nhãn hàng hóa trong kho tự động được chọn"
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
 msgstr "Mẫu nhãn vị trí kho mặc định"
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr "Mẫu nhãn vị trí kho được chọn tự động"
 
-#: common/models.py:2410
+#: common/models.py:2462
+#, fuzzy
+#| msgid "Default stock location label template"
+msgid "Default build line label template"
+msgstr "Mẫu nhãn vị trí kho mặc định"
+
+#: common/models.py:2464
+#, fuzzy
+#| msgid "The stock item label template to be automatically selected"
+msgid "The build line label template to be automatically selected"
+msgstr "Mẫu nhãn hàng hóa trong kho tự động được chọn"
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr "Nhận báo cáo lỗi"
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr "Nhận thông báo khi có lỗi hệ thống"
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr "Số lượng giá phá vỡ"
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "Giá"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr "Đơn vị giá theo số lượng cụ thể"
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr "Đầu mối"
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr "Đầu mối tại điểm webhook được nhận"
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr "Tên của webhook này"
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr "Hoạt động"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr "Webhook có hoạt động không"
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr "Chữ ký số"
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
 msgstr "Chữ ký số để truy cập"
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
 msgstr "Bí mật"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr "Mã bí mật dùng chung cho HMAC"
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
 msgstr "Mã Tin nhắn"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr "Định danh duy nhất cho tin nhắn này"
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
 msgstr "Máy chủ"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr "Mãy chủ từ tin nhắn này đã được nhận"
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
 msgstr "Đầu mục"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr "Đầu mục tin nhắn"
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
 msgstr "Thân"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr "Thân tin nhắn này"
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr "Đầu mối của tin nhắn này đã nhận được"
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
 msgstr "Làm việc vào"
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr "Công việc trong tin nhắn này đã kết thúc?"
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
 msgstr "Mã"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr "Tiêu đề"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr "Đã công bố"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr "Tác giả"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr "Tóm tắt"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
 msgstr "Đọc"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr "Tin này đã được đọc?"
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3666,31 +3702,31 @@ msgstr "Tin này đã được đọc?"
 msgid "Image"
 msgstr "Hình ảnh"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
 msgstr "Tệp ảnh"
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
 msgstr "Tên đơn vị phải là một định danh hợp lệ"
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
 msgstr "Tên đơn vị"
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr "Biểu tượng"
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
 msgstr "Biểu tượng đơn vị tùy chọn"
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
 msgstr "Định nghĩa"
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr "Định nghĩa đơn vị"
 
@@ -3857,7 +3893,7 @@ msgid "Contact email address"
 msgstr "Địa chỉ email liên hệ"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -3901,7 +3937,7 @@ msgstr "Tiền tệ mặc định dùng cho công ty này"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "Doanh nghiêp"
@@ -4066,7 +4102,7 @@ msgid "Parameter value"
 msgstr "Giá trị tham số"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4090,7 +4126,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr "Sản phẩm nhà sản xuất đã liên kết phải tham chiếu với sản phẩm cơ bản tương tự"
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4126,7 +4162,7 @@ msgid "Supplier part description"
 msgstr "Mô tả sản phẩm nhà cung cấp"
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4136,11 +4172,11 @@ msgstr "Mô tả sản phẩm nhà cung cấp"
 msgid "Note"
 msgstr "Ghi chú"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr "chi phí cơ sở"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Thu phí tối thiểu (vd: phí kho bãi)"
 
@@ -4170,7 +4206,7 @@ msgstr "Số lượng gói"
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr "Tổng số lượng được cung cấp trong một gói đơn. Để trống cho các hàng hóa riêng lẻ."
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr "nhiều"
 
@@ -4248,8 +4284,8 @@ msgstr "Tải hình ảnh từ URL"
 msgid "Delete image"
 msgstr "Xóa ảnh"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4266,7 +4302,7 @@ msgstr "Khách hàng"
 msgid "Uses default currency"
 msgstr "Dùng tiền mặc định"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4346,7 +4382,7 @@ msgstr "Kho nhà cung cấp"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "Đơn mua hàng"
 
@@ -4369,7 +4405,7 @@ msgstr "Đơn đặt hàng mới"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "Đơn hàng bán"
 
@@ -4394,7 +4430,7 @@ msgstr "Kho đã được giao"
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
 msgstr "Đơn hàng trả lại"
 
@@ -4622,7 +4658,7 @@ msgstr "Cập nhật độ sẵn sàng sản phẩm"
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "Hàng trong kho"
 
@@ -4675,7 +4711,7 @@ msgstr "Nhãn"
 msgid "Label template file"
 msgstr "Tệp mẫu nhãn"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4701,7 +4737,7 @@ msgstr "Chiều cao [mm]"
 msgid "Label height, specified in mm"
 msgstr "Chiều cao nhãn, tính theo mm"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "Mẫu tên tệp"
 
@@ -4715,8 +4751,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr "Truy vấn bộ lọc (dùng dấu phẩy ngăn cách các cặp key=value)"
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "Bộ lọc"
 
@@ -4847,7 +4883,7 @@ msgstr "Tổng tiền"
 msgid "No matching purchase order found"
 msgstr "Không tìm thấy đơn đặt mua phù hợp"
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4861,7 +4897,7 @@ msgstr "Không tìm thấy đơn đặt mua phù hợp"
 msgid "Purchase Order"
 msgstr "Đơn hàng"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
@@ -4874,184 +4910,184 @@ msgstr "Đơn hàng trả lại"
 msgid "Total price for this order"
 msgstr "Tổng tiền cho đơn hàng hàng"
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
 msgstr "Tiền tệ đơn đặt hàng"
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr "Tiền tệ cho đơn đặt này (để trống để sử dụng tiền mặc định)"
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
 msgstr "Liên hệ không phù hợp với doanh nghiệp đã chọn"
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
 msgstr "Mô tả đơn đặt (tùy chọn)"
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
 msgstr "Mã dự án đã chọn cho đơn đặt hàng này"
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr "Liên kết đến trang bên ngoài"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr "Ngày mong muốn giao được hàng. Đơn đặt sẽ quá hạn sau ngày này."
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr "Tạo bởi"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "Người dùng hoặc nhóm có trách nhiệm với đơn đặt này"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
 msgstr "Đầu mối liên hệ của đơn đặt này"
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
 msgstr "Địa chỉ công ty cho đơn đặt này"
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr "Mã đặt hàng"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr "Trạng thái đơn đặt mua"
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "Doanh nghiệp từ những hàng hóa đang được đặt mua"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr "Tham chiếu nhà cung cấp"
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr "Mã tham chiếu đơn đặt nhà cung cấp"
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr "nhận bởi"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr "Ngày phát hành"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr "Ngày đặt hàng đã phát hành"
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr "Ngày đặt hàng đã được hoàn thiện"
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr "Nhà cung cấp sản phẩm phải trùng với nhà cung cấp PO"
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr "Số lượng phải là số dương"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "Doanh nghiệp từ những hàng hóa đang được bán"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr "Tham chiếu khách hàng "
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr "Mã tham chiếu đơn đặt của khách hàng"
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr "Ngày giao hàng"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr "vận chuyển bằng"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr "Đơn đặt hàng không thể hoàn thiện vì chưa có sản phẩm nào được chọn"
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
 msgstr "Những đơn hàng đang mở thì sẽ được đánh dấu là hoàn thành"
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr "Đơn hàng không thể hoàn thành được vì vận chuyển chưa xong"
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr "Đơn hàng không thể hoàn thành được vì những khoản riêng chưa xong"
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr "Số lượng mặt hàng"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr "Tham chiếu khoản riêng"
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr "Ghi chú khoản riêng"
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr "Ngày mục tiêu cho khoản riêng này (để trống để sử dụng ngày mục tiêu từ đơn đặt)"
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
 msgstr "Mô tả khoản riêng (tùy chọn)"
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr "Ngữ cảnh"
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr "Ngữ cảnh bổ sung"
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr "Đơn giá"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr "Sản phẩm nhà cung cấp phải phù hợp với nhà cung cung cấp"
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr "đã bị xóa"
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr "Đặt hàng"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr "Sản phẩm nhà cung cấp"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5061,341 +5097,341 @@ msgstr "Sản phẩm nhà cung cấp"
 msgid "Received"
 msgstr "Đã nhận"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr "Số mục đã nhận"
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "Giá mua"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr "Giá đơn vị mua"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr "Có phải người mua hàng muốn mặt hàng này được tích trữ?"
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr "Không thể gán sản phẩm ảo vào trong đơn đặt bán hàng"
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr "Chỉ có thể gán sản phẩm có thể bán vào đơn đặt bán hàng"
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "Giá bán"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr "Giá bán đơn vị"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr "Số lượng đã vận chuyển"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr "Ngày vận chuyển"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr "Ngày giao hàng"
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr "Ngày giao hàng của vận chuyển"
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr "Kiểm tra bởi"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr "Người dùng đã kiểm tra vận chuyển này"
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr "Vận chuyển"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr "Mã vận chuyển"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr "Số theo dõi"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr "Thông tin theo dõi vận chuyển"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr "Mã hóa đơn"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr "Số tham chiếu liên kết với hóa đơn"
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr "Vận đơn đã được gửi đi"
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr "Vận đơn chưa có hàng hóa được phân bổ"
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr "Hàng trong kho chưa được giao"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr "Không thể phân bổ hàng hóa vào cùng với dòng với sản phẩm khác"
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr "Không thể phân bổ hàng hóa vào một dòng mà không có sản phẩm nào"
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "Số lượng phân bổ không thể vượt quá số lượng của kho"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "Số lượng phải là 1 cho hàng hóa sêri"
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr "Đơn bán hàng không phù hợp với vận đơn"
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr "Vận đơn không phù hợp với đơn bán hàng"
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr "Dòng"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr "Tham chiếu vận đơn của đơn hàng bán"
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr "Hàng hóa"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr "Chọn hàng trong kho để phân bổ"
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr "Nhập số lượng phân kho"
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
 msgstr "Tham chiếu đơn hàng trả lại"
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
 msgstr "Công ty có hàng hóa sẽ được trả lại"
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr "Trạng thái đơn hàng trả lại"
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr "Chỉ hàng hóa thêo sêri mới có thể được gán vào đơn hàng trả lại"
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
 msgstr "Chọn hàng hóa để trả lại từ khách hàng"
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr "Ngày nhận được"
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr "Ngày mà hàng hóa trả lại đã được nhận"
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr "Kết quả"
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr "Kết quả cho hàng hóa dòng này"
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr "Chi phí gắn với hàng trả lại hoặc sửa chữa cho dòng hàng hóa này"
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr "Đơn đặt không thể bị hủy"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr "Cho phép đơn đặt phải đóng lại cùng với các mục dòng hàng hóa chưa hoàn thành"
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr "Đơn đặt có dòng hàng hóa chưa hoàn thành"
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr "Đơn đặt là không được mở"
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
 msgstr ""
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr "Tiền tệ giá mua"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
 msgstr ""
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr "Sản phẩm nhà cung cấp phải được chỉ định"
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr "Đơn đặt mua phải được chỉ định"
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr "Nhà cung cấp phải phù hợp với đơn đặt mua"
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr "Đơn đặt mua phải phù hợp với nhà cung cấp"
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr "Mục dòng"
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr "Mục dòng không phù hợp với đơn đặt mua"
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr "Chọn vị trí đích cho hàng hóa đã nhận"
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr "Nhập mã lô cho hàng trong kho đang đến"
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr "Nhập số sê ri cho hàng trong kho đang đến"
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "Mã vạch"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
 msgstr "Mã vạch đã quét"
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr "Mã vạch đã được dùng"
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr "Cần điền số nguyên cho sản phẩm có thể theo dõi"
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr "Dòng hàng hóa phải được cung cấp"
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr "Vị trí đích phải được chỉ ra"
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr "Giá trị mã vạch đã cung cấp phải duy nhất"
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr "Tiền tệ giá bán"
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr "Chưa cung cấp thông tin vận chuyển"
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr "Dòng hàng hóa chưa được gắn với đơn đặt này"
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr "Số lượng phải là số dương"
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr "Nhập số sê ri để phân bổ"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr "Vận đơn đã được chuyển đi"
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr "Vận đơn không được gắn với đơn đặt này"
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr "Không tìm thấy số sê ri sau đây"
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr "Những số sê ri sau đây đã được phân bổ"
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr "Dòng riêng biệt đơn hàng trả lại"
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
 msgstr "Line item không phù hợp với đơn hàng trả lại"
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
 msgstr "Line item đã nhận được"
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr "Hàng hóa chỉ có thể được nhận theo đơn hàng đang trong tiến trình"
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
 msgstr "Tiền tệ giá đồng hạng"
 
@@ -5799,12 +5835,12 @@ msgstr "Cập nhật {part} giá đơn vị đến {price}"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "Cập nhật {part} giá đơn vị đến {price} và số lượng đến {qty}"
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "ID sản phẩm"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr "Tên sản phẩm"
@@ -5813,20 +5849,20 @@ msgstr "Tên sản phẩm"
 msgid "Part Description"
 msgstr "Mô tả sản phẩm"
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr "IPN"
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr "Phiên bản"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "Từ khóa"
@@ -5851,11 +5887,11 @@ msgstr "ID vị trí mặc định"
 msgid "Default Supplier ID"
 msgstr "ID nhà cung ứng mặc định"
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr "Biến thể của"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "Kho tối thiểu"
 
@@ -5874,12 +5910,12 @@ msgstr "Sử dụng trong"
 msgid "Building"
 msgstr "Đang dựng"
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr "Chi phí tối thiểu"
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr "Chi phí tối đa"
@@ -5897,7 +5933,7 @@ msgstr "Tên cha"
 msgid "Category Path"
 msgstr "Đưỡng dẫn danh mục"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,7 +5941,7 @@ msgstr "Đưỡng dẫn danh mục"
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "Nguyên liệu"
 
@@ -5921,7 +5957,7 @@ msgstr "ID hàng hóa BOM"
 msgid "Parent IPN"
 msgstr "IPN cha"
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr "IPN sản phẩm"
 
@@ -5937,92 +5973,92 @@ msgstr "Giá thấp nhất"
 msgid "Maximum Price"
 msgstr "Giá cao nhất"
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
 msgstr ""
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
 msgstr ""
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
 msgstr ""
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
 msgstr ""
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr "Đơn đặt mua vào"
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr "Đơn hàng bán ra"
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr "Kho sản xuất bởi Đơn đặt bản dựng"
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr "Kho được yêu cầu cho đơn đặt bản dựng"
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr "Hợp lệ"
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr "Xác minh toàn bộ hóa đơn vật liệu"
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr "Tùy chọn này phải được chọn"
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "Danh mục"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "Điểm bán mặc định"
@@ -6036,363 +6072,363 @@ msgstr "Tổng số lượng"
 msgid "Input quantity for price calculation"
 msgstr "Số lượng đầu ra cho tính toán giá bán"
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Danh mục sản phẩm"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "Danh mục sản phẩm"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "Vị trí mặc định cho sản phẩm trong danh mục này"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr "Cấu trúc"
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr "Hàng hóa không được gán trực tiếp vào danh mục có cấu trúc nhưng có thể được gán vào danh mục con."
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr "Từ khóa mặc định"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr "Từ khóa mặc định cho sản phẩm trong danh mục này"
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr "Biểu tượng"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr "Biểu tượng (tùy chọn)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr "Bạn không thể thay đổi cấu trúc nhóm sản phẩm này vì một số sản phẩm đã được gắn với nó rồi!"
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr "Lựa chọn sai cho sản phẩm cha"
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr "Không thể dùng sản phẩm '{self}' trong BOM cho '{parent}' (đệ quy)"
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr "Sản phẩm '{parent}' được dùng trong BOM cho '{self}' (đệ quy)"
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
 msgstr "IPN phải phù hợp mẫu biểu thức chính quy {pattern}"
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr "Hàng trong kho với số sê ri này đã tồn tại"
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "IPN trùng lặp không được cho phép trong thiết lập sản phẩm"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr "Sản phẩm với Tên, IPN và Duyệt lại đã tồn tại."
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr "Sản phẩm không thể được phân vào danh mục sản phẩm có cấu trúc!"
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "Tên sản phẩm"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr "Là Mẫu"
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr "Sản phẩm này có phải là sản phẩm mẫu?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr "Đây có phải là 1 biến thể của sản phẩm khác?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
 msgstr "Mô tả (không bắt buộc)"
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr "Từ khóa sản phẩm để cải thiện sự hiện diện trong kết quả tìm kiếm"
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "Danh mục sản phẩm"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr "Mã sản phẩm nội bộ"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr "Số phiên bản hoặc bản duyệt lại sản phẩm"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr "Hàng hóa này sẽ được cất vào đâu?"
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr "Nhà cung ứng mặc định"
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr "Nhà cung ứng sản phẩm mặc định"
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr "Hết hạn mặc định"
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Thời gian hết hạn (theo ngày) để nhập kho hàng hóa cho sản phẩm này"
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr "Cấp độ kho tối thiểu được phép"
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr "Đơn vị đo cho sản phẩm này"
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr "Sản phẩm này có thể được dựng từ sản phẩm khác?"
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr "Sản phẩm này có thể dùng để dựng các sản phẩm khác?"
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr "Sản phẩm này có đang theo dõi cho hàng hóa duy nhất?"
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Sản phẩm này có thể mua được từ nhà cung ứng bên ngoài?"
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr "Sản phẩm này có thể được bán cho khách hàng?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr "Sản phẩm này đang hoạt động?"
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "Đây là sản phẩm ảo, ví dụ như sản phẩm phần mềm hay bản quyền?"
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr "Giá trị tổng kiểm BOM"
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr "Giá trị tổng kiểm BOM đã được lưu"
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr "BOM kiểm tra bởi"
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr "Ngày kiểm tra BOM"
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr "Tạo người dùng"
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
 msgstr "Trách nhiệm chủ sở hữu cho sản phẩm này"
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr "Kiểm kê cuối cùng"
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr "Bán nhiều"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr "Tiền được dùng để làm đệm tính toán giá bán"
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr "Chi phí BOM tối thiểu"
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr "Chi phí thành phần sản phẩm tối thiểu"
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr "Chi phí BOM tối đa"
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr "Chi phí thành phần sản phẩm tối đa"
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr "Chi phí mua vào tối thiểu"
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr "Chi phí mua vào tối thiểu trong lịch sử"
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr "Chi phí mua tối đa"
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr "Chi phí thành phần sản phẩm tối đa trong lịch sử"
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr "Giá nội bộ tối thiểu"
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr "Chi phí tối thiểu dựa trên phá vỡ giá nội bộ"
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr "Giá nội bộ tối đa"
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr "Chi phí tối đa dựa trên phá vỡ giá nội bộ"
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr "Giá nhà cung ứng tối thiểu"
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr "Giá sản phẩm tối thiểu từ nhà cung ứng bên ngoài"
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr "Giá nhà cung ứng tối đa"
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr "Giá sản phẩm tối đã từ nhà cung ứng bên ngoài"
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr "Giá trị biến thể tối thiểu"
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr "Chi phí tối thiểu của sản phẩm biến thể đã tính"
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr "Chi phí biến thể tối đa"
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr "Chi phí tối đa của sản phẩm biến thể đã tính"
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr "Ghi đề chi phí tối thiểu"
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr "Ghi đề chi phí tối đa"
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr "Chi phí tối thiểu tính toán tổng thể"
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr "Chi phí tối đa tính toán tổng thể"
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr "Giá bán thấp nhất"
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr "Giá bán tối thiểu dựa trên phá giá"
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr "Giá bán cao nhất"
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr "Giá bán cao nhất dựa trên phá giá"
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr "Chi phí bán hàng tối thiểu"
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr "Giá bán hàng tối thiểu trong lịch sử"
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr "Giá bán hàng tối đa"
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr "Giá bán hàng tối đa trong lịch sử"
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr "Sản phẩm dành cho kiểm kê"
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr "Tổng số hàng"
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr "Số mục kho độc lậo tại thời điểm kiểm kê"
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr "Tống số kho tại thời điểm kiểm kê"
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6404,330 +6440,330 @@ msgstr "Tống số kho tại thời điểm kiểm kê"
 msgid "Date"
 msgstr "Ngày"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr "Kiểm kê đã thực hiện"
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr "Ghi chú bổ sung"
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr "Người dùng đã thực hiện đợt kiểm kê này"
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr "Chi phí kho tối thiểu"
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr "Chi phí kho tối thiểu ước tính của kho đang có"
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr "Chi phí kho tối đa"
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr "Chi phí kho tối đa ước tính của kho đang có"
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr "Báo cáo"
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr "Tệp báo cáo kiểm kê (được sinh nội bộ)"
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr "Bộ đếm sản phẩm"
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr "Số sản phẩm đã được bao quát bởi kiểm kê"
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr "Người dùng đã yêu cầu báo cáo kiểm kê này"
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr "Chỉ có thể tạo mẫu kiểm thử cho sản phẩm có thể theo dõi"
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
 msgstr ""
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr "Tên kiểm thử"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr "Nhập tên cho kiểm thử"
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr "Mô tả kiểm thử"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr "Nhập mô tả cho kiểm thử này"
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr "Bắt buộc"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr "Kiểm thử này bắt buộc phải đạt?"
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr "Giá trị bắt buộc"
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr "Kiểm thử này yêu cầu 1 giá trị khi thêm một kết quả kiểm thử?"
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr "Yêu cầu đính kèm"
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr "Kiểm thử này yêu cầu tệp đính kèm khi thêm một kết quả kiểm thử?"
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr "Tham số hộp kiểm tra không thể có đơn vị"
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr "Tham số hộp kiểm tra không thể có lựa chọn"
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
 msgstr "Lựa chọn phải duy nhất"
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr "Tên tham số mẫu phải là duy nhất"
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr "Tên tham số"
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr "Đơn vị vật lý cho tham số này"
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr "Mô tả tham số"
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr "Ô lựa chọn"
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr "Tham số này có phải là hộp kiểm tra?"
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr "Lựa chọn"
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr "Lựa chọn hợp lệ từ tham số này (ngăn cách bằng dấu phẩy)"
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
 msgstr "Lựa chọn sai cho giá trị tham số"
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr "Sản phẩm cha"
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr "Mẫu tham số"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr "Dữ liệu"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr "Giá trị tham số"
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr "Giá trị mặc định"
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr "Giá trị tham số mặc định"
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr "Tên hoặc mã sản phẩm"
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr "Giá trị mã sản phẩm duy nhất"
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr "Giá trị IPN sản phẩm"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr "Cấp độ"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr "Cấp độ BOM"
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr "Chọn sản phẩm cha"
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr "Sản phẩm phụ"
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr "Chọn sản phẩm được dùng trong BOM"
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr "Số lượng BOM cho mục BOM này"
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr "Mục BOM này là tùy chọn"
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr "Mục BOM này bị tiêu hao (không được theo dõi trong đơn đặt bản dựng)"
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Dư thừa"
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Số lượng bản dựng lãng phí ước tính (tuyệt đối hoặc phần trăm)"
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr "Tham chiếu mục BOM"
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr "Ghi chú mục BOM"
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr "Giá trị tổng kiểm"
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr "Giá trị tổng kiểm dòng BOM"
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr "Đã xác minh"
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
 msgstr "Mục BOM này là hợp lệ"
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr "Nhận thừa hưởng"
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr "Mục BOM này được thừa kế bởi BOM cho sản phẩm biến thể"
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr "Cho phép biến thể"
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr "Hàng trong kho cho sản phẩm biến thể có thể được dùng bởi mục BOM này"
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr "Số lượng phải là giá trị nguyên dùng cho sản phẩm có thể theo dõi được"
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr "Sản phẩm phụ phải được chỉ định"
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr "Sảm phẩm thay thế mục BOM"
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr "Sản phẩm thay thế không thể giống sản phẩm chủ đạo"
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr "Hàng hóa BOM cha"
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr "Sản phẩm thay thế"
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr "Sản phẩm 1"
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr "Sản phẩm 2"
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr "Chọn sản phẩm liên quan"
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr "Không thể tạo mối quan hệ giữa một sản phẩm và chính nó"
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr "Đã tồn tại mối quan hệ trùng lặp"
 
@@ -7205,7 +7241,7 @@ msgstr "Thêm thông tin kiểm kê"
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr "Kiểm kê"
 
@@ -8057,7 +8093,7 @@ msgstr "Viền"
 msgid "Print a border around each label"
 msgstr "In một viền xung quanh từng nhãn"
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr "Ngang"
 
@@ -8228,7 +8264,7 @@ msgstr "Phần bổ sung"
 msgid "Method"
 msgstr "Phương thức"
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr "Không tìm thấy tác giả"
 
@@ -8394,111 +8430,111 @@ msgstr "Pháp lý"
 msgid "Letter"
 msgstr "Thư"
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr "Tên mẫu"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr "Tệp mẫu báo cáo"
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr "Mô tả tệp mẫu báo cáo"
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr "Số phiên bản báo cáo (tự động tăng)"
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
 msgstr "Khổ giấy cho báo cáo PDF"
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr "Tạo báo cáo theo hướng ngang"
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr "Quy tắc sinh tên tệp báo cáo"
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr "Mẫu báo cáo đang bật"
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr "Truy vấn bộ lọc hàng trong kho (dùng dấu phẩy liệt kê các cặp key=value)"
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr "Bao gồm các đợt kiểm tra đã lắp đặt"
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr "Bao gồm kết quả kiểm tra cho hàng trong kho được cài đặt bên trong hàng hóa đã lắp ráp"
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr "Dựng bộ lọc"
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr "Dựng bộ lọc truy vấn (dùng dấu phẩy liệt kê các cặp key=value"
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr "Bộ lọc sản phẩm"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr "Bộ lọc truy vấn sản phẩm (dùng dấu phẩy liệt kê các cặp key=value"
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr "Bộ lọc truy vấn đơn đặt mua"
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr "Bộ lọc truy vấn đơn hàng bán"
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr "Bộ lọc truy vấn đơn hàng trả lại"
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
 msgstr ""
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr "Mẫu trích"
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr "Tệp báo cáo mẫu"
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr "Mô tả tệp báo cáo mẫu"
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
 msgstr ""
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr "Tài sản"
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr "Tệp báo cáo tài sản"
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr "Mô tả tệp báo cáo tài sản"
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
 msgstr "bộ lọc truy vấn vị trí kho (dùng dấu phẩy liệt kê các cặp key=value)"
 
@@ -8685,60 +8721,60 @@ msgstr "Xóa khi thiếu hụt"
 msgid "Expiry Date"
 msgstr "Ngày hết hạn"
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
 msgstr ""
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
 msgstr ""
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
 msgstr ""
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr "Địa điểm bên ngoài"
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
 msgstr "Cây sản phẩm"
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr "Ngày hết hạn trước đó"
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr "Ngày hết hạn sau đó"
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr "Ế"
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr "Bắt buộc nhập số lượng"
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr "Phải cung cấp sản phẩm hợp lệ"
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr "Sản phẩm nhà cung cấp đã đưa không tồn tại"
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr "Sản phẩm nhà cung cấp có kích thước đóng gói được định nghĩa nhưng cờ use_pack_size chưa được thiết lập"
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr "Số sê-ri không thê được cung cấp cho sản phẩm không thể theo dõi"
 
@@ -8762,7 +8798,7 @@ msgstr "Kho hàng"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "Vị trí kho hàng"
 
@@ -10071,7 +10107,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "Xóa"
 
@@ -13248,7 +13284,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "Thêm"
 
@@ -13891,7 +13927,7 @@ msgstr "Hiển thị thông báo"
 msgid "New Notifications"
 msgstr "Thông báo mới"
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr "Quản trị"
 
@@ -14128,35 +14164,34 @@ msgstr "Lần cuối mã thông báo được sử dụng"
 msgid "Revoked"
 msgstr "Đã thu hồi"
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "Quyền hạn đã đặt"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "Nhóm"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "Xem"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "Quyền để xem mục"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "Quyền để thêm mục"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "Đổi"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "Quyển để sửa mục"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "Quyền để xóa mục"
-
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 610eb8a20575..08a26484d3b9 100644
--- a/InvenTree/locale/zh/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh/LC_MESSAGES/django.po
@@ -2,67 +2,67 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-03-19 01:26+0000\n"
-"PO-Revision-Date: 2024-03-19 11:52\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
-"Language-Team: Chinese Traditional\n"
-"Language: zh_TW\n"
+"Language-Team: Chinese Simplified\n"
+"Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Crowdin-Project: inventree\n"
 "X-Crowdin-Project-ID: 452300\n"
-"X-Crowdin-Language: zh-TW\n"
+"X-Crowdin-Language: zh-CN\n"
 "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n"
 "X-Crowdin-File-ID: 154\n"
 
 #: InvenTree/api.py:198
 msgid "API endpoint not found"
-msgstr "找不到 API 端點"
+msgstr "未找到 API 端点"
 
 #: InvenTree/api.py:462
 msgid "User does not have permission to view this model"
-msgstr "使用者沒有檢視此模型的權限"
+msgstr "用户没有权限查阅当前模型。"
 
 #: InvenTree/conversion.py:160
 #, python-brace-format
 msgid "Invalid unit provided ({unit})"
-msgstr "提供的單位不正確 ({unit})"
+msgstr "提供了无效的单位({unit})"
 
 #: InvenTree/conversion.py:177
 msgid "No value provided"
-msgstr "未提供值"
+msgstr "没有提供数值"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
-msgstr "無法將 {original} 轉換為 {unit}"
+msgstr "不能将 {original} 转换到 {unit}"
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 msgid "Invalid quantity supplied"
-msgstr "提供的數量無效"
+msgstr "提供的数量无效"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, python-brace-format
 msgid "Invalid quantity supplied ({exc})"
-msgstr "提供的數量無效 ({exc})"
+msgstr "提供的数量无效 ({exc})"
 
 #: InvenTree/exceptions.py:109
 msgid "Error details can be found in the admin panel"
-msgstr "詳細的錯誤訊息可以在管理介面中瀏覽"
+msgstr "在管理面板中可以找到错误详细信息"
 
 #: InvenTree/fields.py:140
 msgid "Enter date"
-msgstr "輸入日期"
+msgstr "输入日期"
 
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
 #: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
@@ -77,323 +77,323 @@ msgstr "輸入日期"
 #: templates/js/translated/sales_order.js:1982
 #: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427
 msgid "Notes"
-msgstr "備註"
+msgstr "备注"
 
 #: InvenTree/format.py:164
 #, python-brace-format
 msgid "Value '{name}' does not appear in pattern format"
-msgstr "值「{name}」並沒有在格式內出現"
+msgstr "值' {name}' 未出现在模式格式中"
 
 #: InvenTree/format.py:175
 msgid "Provided value does not match required pattern: "
-msgstr "提供的值不符合要求的格式: "
+msgstr "提供的值与所需模式不匹配: "
 
 #: InvenTree/forms.py:128
 msgid "Enter password"
-msgstr "輸入密碼"
+msgstr "输入密码"
 
 #: InvenTree/forms.py:129
 msgid "Enter new password"
-msgstr "輸入新的密碼"
+msgstr "输入新密码"
 
 #: InvenTree/forms.py:138
 msgid "Confirm password"
-msgstr "確認密碼"
+msgstr "确认密码"
 
 #: InvenTree/forms.py:139
 msgid "Confirm new password"
-msgstr "確認新密碼"
+msgstr "确认新密码"
 
 #: InvenTree/forms.py:143
 msgid "Old password"
-msgstr "舊密碼"
+msgstr "旧密码"
 
 #: InvenTree/forms.py:182
 msgid "Email (again)"
-msgstr "再次輸入Email"
+msgstr "Email (再次)"
 
 #: InvenTree/forms.py:186
 msgid "Email address confirmation"
-msgstr "Email地址確認"
+msgstr "Email 地址确认"
 
 #: InvenTree/forms.py:209
 msgid "You must type the same email each time."
-msgstr "您必須輸入相同的Email"
+msgstr "您必须输入相同的 Email 。"
 
 #: InvenTree/forms.py:253 InvenTree/forms.py:261
 msgid "The provided primary email address is not valid."
-msgstr "所提供的主要Email無效。"
+msgstr "所提供的主要电子邮件地址无效。"
 
 #: InvenTree/forms.py:268
 msgid "The provided email domain is not approved."
-msgstr "所提供的Email網域尚未被核准。"
+msgstr "提供的电子邮件域未被核准。"
 
 #: InvenTree/forms.py:395
 msgid "Registration is disabled."
-msgstr "註冊功能已停用。"
+msgstr "注册已禁用。"
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
-msgstr "提供的數量無效"
+msgstr "提供的数量无效"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
-msgstr "序號為空白"
+msgstr "空序列号字符串"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
-msgstr "重複的序號"
+msgstr "复制序列号"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, python-brace-format
 msgid "Invalid group range: {group}"
-msgstr "無效的群組範圍:{group}"
+msgstr "组范围无效:{group}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, python-brace-format
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
-msgstr "群組範圍 {group} 超過允許的數量({expected_quantity})"
+msgstr "组范围 {group} 超出了允许的数量 ({expected_quantity})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, python-brace-format
 msgid "Invalid group sequence: {group}"
-msgstr "無效的群組序列:{group}"
+msgstr "无效的组序列: {group}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
-msgstr "找不到序號"
+msgstr "未找到序列号"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
-msgstr "不重複的序號數量({len(serials)})必須和總數量({expected_quantity})相同"
+msgstr "唯一序列号的数量 ({len(serials)}) 必须与数量 ({expected_quantity}) 匹配"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
-msgstr "從這個值中移除HTML標籤"
+msgstr "从这个值中删除 HTML 标签"
 
 #: InvenTree/helpers_model.py:150
 msgid "Connection error"
-msgstr "連線錯誤"
+msgstr "连接错误"
 
 #: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162
 msgid "Server responded with invalid status code"
-msgstr "伺服器回應了無效的狀態碼"
+msgstr "服务器响应状态码无效"
 
 #: InvenTree/helpers_model.py:158
 msgid "Exception occurred"
-msgstr "發生異常"
+msgstr "发生异常"
 
 #: InvenTree/helpers_model.py:168
 msgid "Server responded with invalid Content-Length value"
-msgstr "伺服器回應了不正確的Content-Length值。"
+msgstr "服务器响应的内容长度值无效"
 
 #: InvenTree/helpers_model.py:171
 msgid "Image size is too large"
-msgstr "圖片尺寸過大"
+msgstr "图片尺寸过大"
 
 #: InvenTree/helpers_model.py:183
 msgid "Image download exceeded maximum size"
-msgstr "圖片超過最大可下載的尺寸"
+msgstr "图片下载超出最大尺寸"
 
 #: InvenTree/helpers_model.py:188
 msgid "Remote server returned empty response"
-msgstr "遠端伺服器回傳了空白回應"
+msgstr "远程服务器返回了空响应"
 
 #: InvenTree/helpers_model.py:196
 msgid "Supplied URL is not a valid image file"
-msgstr "提供的URL不是有效的圖片檔案"
+msgstr "提供的 URL 不是一个有效的图片文件"
 
 #: InvenTree/locales.py:18
 msgid "Bulgarian"
-msgstr "保加利亞文"
+msgstr "保加利亚语"
 
 #: InvenTree/locales.py:19
 msgid "Czech"
-msgstr "捷克文"
+msgstr "捷克语"
 
 #: InvenTree/locales.py:20
 msgid "Danish"
-msgstr "丹麥文"
+msgstr "丹麦语"
 
 #: InvenTree/locales.py:21
 msgid "German"
-msgstr "德文"
+msgstr "德语"
 
 #: InvenTree/locales.py:22
 msgid "Greek"
-msgstr "希臘文"
+msgstr "希腊语"
 
 #: InvenTree/locales.py:23
 msgid "English"
-msgstr "英文"
+msgstr "英语"
 
 #: InvenTree/locales.py:24
 msgid "Spanish"
-msgstr "西班牙文"
+msgstr "西班牙语"
 
 #: InvenTree/locales.py:25
 msgid "Spanish (Mexican)"
-msgstr "西班牙文(墨西哥)"
+msgstr "西班牙语(墨西哥)"
 
 #: InvenTree/locales.py:26
 msgid "Farsi / Persian"
-msgstr "波斯語"
+msgstr "波斯语"
 
 #: InvenTree/locales.py:27
 msgid "Finnish"
-msgstr "芬蘭文"
+msgstr "芬兰语"
 
 #: InvenTree/locales.py:28
 msgid "French"
-msgstr "法文"
+msgstr "法语"
 
 #: InvenTree/locales.py:29
 msgid "Hebrew"
-msgstr "希伯來文"
+msgstr "希伯来语"
 
 #: InvenTree/locales.py:30
 msgid "Hindi"
-msgstr "印地文"
+msgstr "北印度语"
 
 #: InvenTree/locales.py:31
 msgid "Hungarian"
-msgstr "匈牙利文"
+msgstr "匈牙利语"
 
 #: InvenTree/locales.py:32
 msgid "Italian"
-msgstr "義大利文"
+msgstr "意大利语"
 
 #: InvenTree/locales.py:33
 msgid "Japanese"
-msgstr "日文"
+msgstr "日语"
 
 #: InvenTree/locales.py:34
 msgid "Korean"
-msgstr "韓文"
+msgstr "韩语"
 
 #: InvenTree/locales.py:35
 msgid "Latvian"
-msgstr ""
+msgstr "拉脱维亚语"
 
 #: InvenTree/locales.py:36
 msgid "Dutch"
-msgstr "荷蘭文"
+msgstr "荷兰语"
 
 #: InvenTree/locales.py:37
 msgid "Norwegian"
-msgstr "挪威文"
+msgstr "挪威语"
 
 #: InvenTree/locales.py:38
 msgid "Polish"
-msgstr "波蘭文"
+msgstr "波兰语"
 
 #: InvenTree/locales.py:39
 msgid "Portuguese"
-msgstr "葡萄牙文"
+msgstr "葡萄牙语"
 
 #: InvenTree/locales.py:40
 msgid "Portuguese (Brazilian)"
-msgstr "葡萄牙文(巴西)"
+msgstr "葡萄牙语 (巴西)"
 
 #: InvenTree/locales.py:41
 msgid "Russian"
-msgstr "俄文"
+msgstr "俄语"
 
 #: InvenTree/locales.py:42
 msgid "Slovak"
-msgstr "斯洛伐克文"
+msgstr "斯洛伐克语"
 
 #: InvenTree/locales.py:43
 msgid "Slovenian"
-msgstr "斯洛維尼亞文"
+msgstr "斯洛文尼亚"
 
 #: InvenTree/locales.py:44
 msgid "Serbian"
-msgstr "塞爾維亞文"
+msgstr "塞尔维亚语"
 
 #: InvenTree/locales.py:45
 msgid "Swedish"
-msgstr "瑞典文"
+msgstr "瑞典语"
 
 #: InvenTree/locales.py:46
 msgid "Thai"
-msgstr "泰文"
+msgstr "泰语"
 
 #: InvenTree/locales.py:47
 msgid "Turkish"
-msgstr "土耳其文"
+msgstr "土耳其语"
 
 #: InvenTree/locales.py:48
 msgid "Vietnamese"
-msgstr "越南文"
+msgstr "越南语"
 
 #: InvenTree/locales.py:49
 msgid "Chinese (Simplified)"
-msgstr "中文(简体)"
+msgstr "中文 (简体)"
 
 #: InvenTree/locales.py:50
 msgid "Chinese (Traditional)"
-msgstr "中文(繁體)"
+msgstr "中文 (繁体)"
 
 #: InvenTree/magic_login.py:28
 #, python-brace-format
 msgid "[{site_name}] Log in to the app"
-msgstr "[{site_name}] 登入 App"
+msgstr "[{site_name}] 登录到应用程序"
 
 #: InvenTree/magic_login.py:38 company/models.py:132
 #: company/templates/company/company_base.html:132
 #: templates/InvenTree/settings/user.html:49
 #: templates/js/translated/company.js:667
 msgid "Email"
-msgstr "Email"
+msgstr "电子邮件"
 
 #: InvenTree/models.py:107
 msgid "Error running plugin validation"
-msgstr "驗證外掛程式時發生錯誤"
+msgstr "运行插件验证时出错"
 
 #: InvenTree/models.py:162
 msgid "Metadata must be a python dict object"
-msgstr "Metadata必須是一個Python Dictionary物件"
+msgstr "元数据必须是 Python dict 对象"
 
 #: InvenTree/models.py:168
 msgid "Plugin Metadata"
-msgstr "外掛程式Metadata"
+msgstr "插件元数据"
 
 #: InvenTree/models.py:169
 msgid "JSON metadata field, for use by external plugins"
-msgstr "外掛程式使用的JSON Metadata欄位"
+msgstr "JSON 元数据字段,供外部插件使用"
 
 #: InvenTree/models.py:399
 msgid "Improperly formatted pattern"
-msgstr "格式錯誤"
+msgstr "格式不正确"
 
 #: InvenTree/models.py:406
 msgid "Unknown format key specified"
-msgstr "指定了不明的格式鍵值"
+msgstr "指定了未知格式的主键"
 
 #: InvenTree/models.py:412
 msgid "Missing required format key"
-msgstr "缺少必須的格式鍵值"
+msgstr "缺少必需的格式主键"
 
 #: InvenTree/models.py:423
 msgid "Reference field cannot be empty"
-msgstr "參考欄位不能空白"
+msgstr "引用字段不能为空"
 
 #: InvenTree/models.py:431
 msgid "Reference must match required pattern"
-msgstr "參考欄位並須符合格式"
+msgstr "引用必须匹配所需的模式"
 
 #: InvenTree/models.py:463
 msgid "Reference number is too large"
-msgstr "參考編號過大"
+msgstr "参考编号过大"
 
 #: InvenTree/models.py:537
 msgid "Missing file"
-msgstr "缺少檔案"
+msgstr "缺少文件"
 
 #: InvenTree/models.py:538
 msgid "Missing external link"
-msgstr "缺少外部連結"
+msgstr "缺少外部链接"
 
 #: InvenTree/models.py:559 stock/models.py:2449
 #: templates/js/translated/attachment.js:119
@@ -403,12 +403,12 @@ msgstr "附件"
 
 #: InvenTree/models.py:560
 msgid "Select file to attach"
-msgstr "選擇附件"
+msgstr "选择附件"
 
-#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -420,73 +420,73 @@ msgstr "選擇附件"
 #: templates/js/translated/sales_order.js:1056
 #: templates/js/translated/sales_order.js:1987
 msgid "Link"
-msgstr "連結"
+msgstr "链接"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
-msgstr "外部URL連結"
+msgstr "链接到外部 URL"
 
 #: InvenTree/models.py:575 templates/js/translated/attachment.js:120
 #: templates/js/translated/attachment.js:341
 msgid "Comment"
-msgstr "註解"
+msgstr "注释"
 
 #: InvenTree/models.py:576
 msgid "File comment"
-msgstr "檔案註解"
+msgstr "文件注释"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437
-#: common/models.py:2438 common/models.py:2662 common/models.py:2663
-#: common/models.py:2908 common/models.py:2909 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
 #: templates/js/translated/stock.js:3036 users/models.py:100
 msgid "User"
-msgstr "使用者"
+msgstr "用户"
 
 #: InvenTree/models.py:589
 msgid "upload date"
-msgstr "上傳日期"
+msgstr "上传日期"
 
 #: InvenTree/models.py:611
 msgid "Filename must not be empty"
-msgstr "檔名不得空白"
+msgstr "文件名不能为空!"
 
 #: InvenTree/models.py:622
 msgid "Invalid attachment directory"
-msgstr "無效的附件目錄"
+msgstr "非法的附件目录"
 
 #: InvenTree/models.py:652
 #, python-brace-format
 msgid "Filename contains illegal character '{c}'"
-msgstr "檔名內有不允許的字元 '{c}'"
+msgstr "文件名包含非法字符 '{c}'"
 
 #: InvenTree/models.py:655
 msgid "Filename missing extension"
-msgstr "檔案名稱缺少副檔名"
+msgstr "缺少文件名扩展"
 
 #: InvenTree/models.py:664
 msgid "Attachment with this filename already exists"
-msgstr "已有同檔案名稱的附件"
+msgstr "使用此文件名的附件已存在"
 
 #: InvenTree/models.py:671
 msgid "Error renaming file"
-msgstr "重新命名時發生錯誤"
+msgstr "重命名文件出错"
 
 #: InvenTree/models.py:847
 msgid "Duplicate names cannot exist under the same parent"
-msgstr "同一個上層元件下不能有重複的名字"
+msgstr "同一个主体下不能有相同名字"
 
 #: InvenTree/models.py:864
 msgid "Invalid choice"
-msgstr "無效的選項"
+msgstr "选择无效"
 
-#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -501,19 +501,19 @@ msgstr "無效的選項"
 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
 #: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716
 msgid "Name"
-msgstr "名稱"
+msgstr "名称"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -542,175 +542,175 @@ msgstr "描述"
 
 #: InvenTree/models.py:901 stock/models.py:83
 msgid "Description (optional)"
-msgstr "描述(選填)"
+msgstr "描述 (可选)"
 
 #: InvenTree/models.py:910
 msgid "parent"
-msgstr "上層元素"
+msgstr "上级"
 
 #: InvenTree/models.py:916 templates/js/translated/part.js:2794
 #: templates/js/translated/stock.js:2757
 msgid "Path"
-msgstr "路徑"
+msgstr "路径"
 
 #: InvenTree/models.py:1022
 msgid "Markdown notes (optional)"
-msgstr "Markdown 註記(選填)"
+msgstr "Markdown 便笺(可选)"
 
 #: InvenTree/models.py:1051
 msgid "Barcode Data"
-msgstr "條碼資料"
+msgstr "条形码数据"
 
 #: InvenTree/models.py:1052
 msgid "Third party barcode data"
-msgstr "第三方條碼資料"
+msgstr "第三方条形码数据"
 
 #: InvenTree/models.py:1058
 msgid "Barcode Hash"
-msgstr "條碼雜湊值"
+msgstr "条形码哈希"
 
 #: InvenTree/models.py:1059
 msgid "Unique hash of barcode data"
-msgstr "條碼資料的唯一雜湊值"
+msgstr "条形码数据的唯一哈希"
 
 #: InvenTree/models.py:1112
 msgid "Existing barcode found"
-msgstr "發現現有條碼"
+msgstr "发现现有的条形码"
 
 #: InvenTree/models.py:1155
 msgid "Server Error"
-msgstr "伺服器錯誤"
+msgstr "服务器错误"
 
 #: InvenTree/models.py:1156
 msgid "An error has been logged by the server."
-msgstr "伺服器紀錄了一個錯誤。"
+msgstr "服务器记录了一个错误。"
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
-msgstr "必須是有效的數字"
+msgstr "必须是有效数字"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
-msgstr "貨幣"
+msgstr "货币"
 
 #: InvenTree/serializers.py:102
 msgid "Select currency from available options"
-msgstr "從可用選項中選擇貨幣"
+msgstr "从可用选项中选择货币"
 
 #: InvenTree/serializers.py:441
 msgid "You do not have permission to change this user role."
-msgstr "您沒有更改這個使用者角色的權限"
+msgstr "您没有权限修改此用户角色。"
 
 #: InvenTree/serializers.py:453
 msgid "Only superusers can create new users"
-msgstr "只有管理員帳戶可以建立新的使用者"
+msgstr "只有超级用户可以创建新用户"
 
 #: InvenTree/serializers.py:472
 msgid "Your account has been created."
-msgstr "您的帳號已經建立完成。"
+msgstr "您的账户已创建。"
 
 #: InvenTree/serializers.py:474
 msgid "Please use the password reset function to login"
-msgstr "請使用重設密碼功能來登入"
+msgstr "请使用密码重置功能登录。"
 
 #: InvenTree/serializers.py:481
 msgid "Welcome to InvenTree"
-msgstr "歡迎使用 InvenTree"
+msgstr "欢迎使用 InventTree"
 
 #: InvenTree/serializers.py:542
 msgid "Filename"
-msgstr "檔案名稱"
+msgstr "文件名"
 
 #: InvenTree/serializers.py:576
 msgid "Invalid value"
-msgstr "無效的值"
+msgstr "无效值"
 
 #: InvenTree/serializers.py:596
 msgid "Data File"
-msgstr "資料檔"
+msgstr "数据文件"
 
 #: InvenTree/serializers.py:597
 msgid "Select data file for upload"
-msgstr "選擇要上傳的資料檔案"
+msgstr "选择要上传的文件"
 
 #: InvenTree/serializers.py:614
 msgid "Unsupported file type"
-msgstr "不支援的檔案類型"
+msgstr "不支持的文件类型"
 
 #: InvenTree/serializers.py:620
 msgid "File is too large"
-msgstr "檔案大小過大"
+msgstr "文件过大"
 
 #: InvenTree/serializers.py:641
 msgid "No columns found in file"
-msgstr "檔案中找不到欄位"
+msgstr "在文件中没有找到列"
 
 #: InvenTree/serializers.py:644
 msgid "No data rows found in file"
-msgstr "檔案中找不到資料列"
+msgstr "在文件中没有找到数据行"
 
 #: InvenTree/serializers.py:757
 msgid "No data rows provided"
-msgstr "沒有提供資料列"
+msgstr "没有提供数据行"
 
 #: InvenTree/serializers.py:760
 msgid "No data columns supplied"
-msgstr "沒有提供資料欄位"
+msgstr "没有提供数据列"
 
 #: InvenTree/serializers.py:827
 #, python-brace-format
 msgid "Missing required column: '{name}'"
-msgstr "找不到必須的欄位: 「{name}」"
+msgstr "缺少必需的列:'{name}'"
 
 #: InvenTree/serializers.py:836
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
-msgstr "重複的欄位:「{col}」"
+msgstr "复制列: '{col}'"
 
 #: InvenTree/serializers.py:859
 msgid "Remote Image"
-msgstr "遠端圖片"
+msgstr "远程图片"
 
 #: InvenTree/serializers.py:860
 msgid "URL of remote image file"
-msgstr "遠端圖片的URL"
+msgstr "远程图片文件的 URL"
 
 #: InvenTree/serializers.py:878
 msgid "Downloading images from remote URL is not enabled"
-msgstr "尚未啟用從遠端URL下載圖片"
+msgstr "未启用从远程 URL下载图片"
 
 #: InvenTree/status.py:66 part/serializers.py:1156
 msgid "Background worker check failed"
-msgstr "背景工作程式檢查失敗"
+msgstr "后台工作人员检查失败"
 
 #: InvenTree/status.py:70
 msgid "Email backend not configured"
-msgstr "Email後端尚未設定"
+msgstr "未配置电子邮件后端"
 
 #: InvenTree/status.py:73
 msgid "InvenTree system health checks failed"
-msgstr "InvenTree系統健康檢查失敗"
+msgstr "InventTree系统健康检查失败"
 
 #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:37
 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:164
 #: InvenTree/status_codes.py:182 generic/states/tests.py:17
 #: templates/js/translated/table_filters.js:598
 msgid "Pending"
-msgstr "待處理"
+msgstr "待定"
 
 #: InvenTree/status_codes.py:13 generic/states/tests.py:18
 msgid "Placed"
-msgstr "已下單"
+msgstr "已添加"
 
 #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151
 #: InvenTree/status_codes.py:169 generic/states/tests.py:19
 #: order/templates/order/order_base.html:158
 #: order/templates/order/sales_order_base.html:161
 msgid "Complete"
-msgstr "已完成"
+msgstr "完成"
 
 #: InvenTree/status_codes.py:15 InvenTree/status_codes.py:44
 #: InvenTree/status_codes.py:150 InvenTree/status_codes.py:170
@@ -720,7 +720,7 @@ msgstr "已取消"
 #: InvenTree/status_codes.py:16 InvenTree/status_codes.py:45
 #: InvenTree/status_codes.py:67
 msgid "Lost"
-msgstr "已遺失"
+msgstr "丢失"
 
 #: InvenTree/status_codes.py:17 InvenTree/status_codes.py:46
 #: InvenTree/status_codes.py:73
@@ -729,14 +729,14 @@ msgstr "已退回"
 
 #: InvenTree/status_codes.py:40 InvenTree/status_codes.py:167
 msgid "In Progress"
-msgstr "進行中"
+msgstr "正在进行"
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
 msgid "Shipped"
-msgstr "已出貨"
+msgstr "已配送"
 
 #: InvenTree/status_codes.py:62
 msgid "OK"
@@ -744,143 +744,143 @@ msgstr "OK"
 
 #: InvenTree/status_codes.py:63
 msgid "Attention needed"
-msgstr "需要注意"
+msgstr "需要关注"
 
 #: InvenTree/status_codes.py:64
 msgid "Damaged"
-msgstr "已破損"
+msgstr "破损"
 
 #: InvenTree/status_codes.py:65
 msgid "Destroyed"
-msgstr "已損毀"
+msgstr "已销毁"
 
 #: InvenTree/status_codes.py:66
 msgid "Rejected"
-msgstr "已拒絕"
+msgstr "已拒绝"
 
 #: InvenTree/status_codes.py:70
 msgid "Quarantined"
-msgstr "已隔離"
+msgstr "隔离"
 
 #: InvenTree/status_codes.py:91
 msgid "Legacy stock tracking entry"
-msgstr "舊庫存追蹤項目"
+msgstr "旧库存跟踪条目"
 
 #: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544
 msgid "Stock item created"
-msgstr "已建立庫存項目"
+msgstr "库存项已创建"
 
 #: InvenTree/status_codes.py:96
 msgid "Edited stock item"
-msgstr "編輯庫存項目"
+msgstr "已编辑库存项"
 
 #: InvenTree/status_codes.py:97
 msgid "Assigned serial number"
-msgstr "已指派的序號"
+msgstr "已分配序列号"
 
 #: InvenTree/status_codes.py:100
 msgid "Stock counted"
-msgstr "已清點"
+msgstr "库存计数"
 
 #: InvenTree/status_codes.py:101
 msgid "Stock manually added"
-msgstr "已手動加入庫存"
+msgstr "已手动添加库存"
 
 #: InvenTree/status_codes.py:102
 msgid "Stock manually removed"
-msgstr "已手動移除庫存"
+msgstr "库存手动删除"
 
 #: InvenTree/status_codes.py:105
 msgid "Location changed"
-msgstr "倉儲地點已變更"
+msgstr "库存地点已更改"
 
 #: InvenTree/status_codes.py:106
 msgid "Stock updated"
-msgstr "庫存已更新"
+msgstr "库存已更新"
 
 #: InvenTree/status_codes.py:109
 msgid "Installed into assembly"
-msgstr "已安裝到組件"
+msgstr "已安装到装配"
 
 #: InvenTree/status_codes.py:110
 msgid "Removed from assembly"
-msgstr "已從組件移除"
+msgstr "已从装配中删除"
 
 #: InvenTree/status_codes.py:112
 msgid "Installed component item"
-msgstr "已安裝的組件項目"
+msgstr "已安装组件项"
 
 #: InvenTree/status_codes.py:113
 msgid "Removed component item"
-msgstr "已移除的組件項目"
+msgstr "已删除组件项"
 
 #: InvenTree/status_codes.py:116
 msgid "Split from parent item"
-msgstr "從上層元素分拆"
+msgstr "从上级项拆分"
 
 #: InvenTree/status_codes.py:117
 msgid "Split child item"
-msgstr "分拆下層元素"
+msgstr "拆分子项"
 
 #: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855
 msgid "Merged stock items"
-msgstr "已合併的庫存項目"
+msgstr "合并的库存项"
 
 #: InvenTree/status_codes.py:123
 msgid "Converted to variant"
-msgstr "已轉換成變體"
+msgstr "转换为变量"
 
 #: InvenTree/status_codes.py:126
 msgid "Build order output created"
-msgstr "工單產出已建立"
+msgstr "已创建生产订单输出"
 
 #: InvenTree/status_codes.py:127
 msgid "Build order output completed"
-msgstr "工單產出已完成"
+msgstr "生产订单输出已完成"
 
 #: InvenTree/status_codes.py:128
 msgid "Build order output rejected"
-msgstr "工單產出已拒絕"
+msgstr "生产订单输出被拒绝"
 
 #: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761
 msgid "Consumed by build order"
-msgstr "被工單消耗的"
+msgstr "被生产订单消耗"
 
 #: InvenTree/status_codes.py:132
 msgid "Shipped against Sales Order"
-msgstr "按銷售訂單出貨"
+msgstr "根据销售订单运输"
 
 #: InvenTree/status_codes.py:135
 msgid "Received against Purchase Order"
-msgstr "按採購訂單接收"
+msgstr "根据采购订单接收"
 
 #: InvenTree/status_codes.py:138
 msgid "Returned against Return Order"
-msgstr "按退貨訂單退回"
+msgstr "根据退货订单退货"
 
 #: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375
 msgid "Sent to customer"
-msgstr "寄送給客戶"
+msgstr "发送给客户"
 
 #: InvenTree/status_codes.py:142
 msgid "Returned from customer"
-msgstr "從客戶端退回"
+msgstr "从客户退货"
 
 #: InvenTree/status_codes.py:149
 msgid "Production"
-msgstr "生產"
+msgstr "生产中"
 
 #: InvenTree/status_codes.py:185
 msgid "Return"
-msgstr "退回"
+msgstr "已退回"
 
 #: InvenTree/status_codes.py:188
 msgid "Repair"
-msgstr "維修"
+msgstr "修复"
 
 #: InvenTree/status_codes.py:191
 msgid "Replace"
-msgstr "替換"
+msgstr "替换"
 
 #: InvenTree/status_codes.py:194
 msgid "Refund"
@@ -888,80 +888,80 @@ msgstr "退款"
 
 #: InvenTree/status_codes.py:197
 msgid "Reject"
-msgstr "拒絕"
+msgstr "拒绝"
 
 #: InvenTree/templatetags/inventree_extras.py:183
 msgid "Unknown database"
-msgstr "未知的資料庫"
+msgstr "未知的数据库"
 
 #: InvenTree/validators.py:31 InvenTree/validators.py:33
 msgid "Invalid physical unit"
-msgstr "無效的物理單位"
+msgstr "无效的物理单位"
 
 #: InvenTree/validators.py:39
 msgid "Not a valid currency code"
-msgstr "無效的貨幣代碼"
+msgstr "不是有效的货币代码"
 
 #: InvenTree/validators.py:121 InvenTree/validators.py:137
 msgid "Overage value must not be negative"
-msgstr "損失值不能為負"
+msgstr "备损值不能为负数"
 
 #: InvenTree/validators.py:139
 msgid "Overage must not exceed 100%"
-msgstr "損失率不能超過100%"
+msgstr "备损不能超过 100%"
 
 #: InvenTree/validators.py:145
 msgid "Invalid value for overage"
-msgstr "無效的損失值"
+msgstr "无效的备损值"
 
 #: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
 msgid "Edit User Information"
-msgstr "編輯使用者資訊"
+msgstr "编辑用户信息"
 
 #: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
 msgid "Set Password"
-msgstr "設定密碼"
+msgstr "设置密码"
 
 #: InvenTree/views.py:434
 msgid "Password fields must match"
-msgstr "密碼必須相符"
+msgstr "密码字段必须相匹配。"
 
 #: InvenTree/views.py:442
 msgid "Wrong password provided"
-msgstr "密碼錯誤"
+msgstr "密码错误"
 
 #: InvenTree/views.py:650 templates/navbar.html:160
 msgid "System Information"
-msgstr "系統資訊"
+msgstr "系统信息"
 
 #: InvenTree/views.py:657 templates/navbar.html:171
 msgid "About InvenTree"
-msgstr "關於InvenTree"
+msgstr "关于 InventTree"
 
 #: build/api.py:237
 msgid "Build must be cancelled before it can be deleted"
-msgstr "工單必須被取消才能被刪除"
+msgstr "在删除前必须取消生产"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
-msgstr "耗材"
+msgstr "消耗品"
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
 #: templates/js/translated/table_filters.js:215
 #: templates/js/translated/table_filters.js:587
 msgid "Optional"
-msgstr "非必須項目"
+msgstr "可选项"
 
 #: build/api.py:283 templates/js/translated/table_filters.js:408
 #: templates/js/translated/table_filters.js:579
 msgid "Tracked"
-msgstr "追蹤中"
+msgstr "已跟踪"
 
 #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741
 #: templates/js/translated/build.js:2630
@@ -982,7 +982,7 @@ msgstr "已分配"
 #: templates/js/translated/table_filters.js:340
 #: templates/js/translated/table_filters.js:575
 msgid "Available"
-msgstr "可用數量"
+msgstr "空闲"
 
 #: build/models.py:74 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
@@ -991,7 +991,7 @@ msgstr "可用數量"
 #: templates/email/overdue_build_order.html:15
 #: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892
 msgid "Build Order"
-msgstr "生產工單"
+msgstr "生产订单"
 
 #: build/models.py:75 build/templates/build/build_base.html:13
 #: build/templates/build/index.html:8 build/templates/build/index.html:12
@@ -1000,25 +1000,29 @@ msgstr "生產工單"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
-msgstr "生產工單"
+msgstr "生产订单"
 
 #: build/models.py:116
 msgid "Invalid choice for parent build"
-msgstr "無效的上層生產工單選擇"
+msgstr "上级生产选项无效"
+
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr "必须指定负责的用户或组"
 
-#: build/models.py:127
+#: build/models.py:133
 msgid "Build order part cannot be changed"
-msgstr "無法更改生產工單"
+msgstr "不能更改生产订单零件"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
-msgstr "生產工單代號"
+msgstr "相关生产订单"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1030,29 +1034,29 @@ msgstr "生產工單代號"
 #: templates/js/translated/return_order.js:729
 #: templates/js/translated/sales_order.js:1818
 msgid "Reference"
-msgstr "參考代號"
+msgstr "引用"
 
-#: build/models.py:185
+#: build/models.py:191
 msgid "Brief description of the build (optional)"
-msgstr "關於生產工單的簡單說明(選填)"
+msgstr "生产的简要说明(可选)"
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
-msgstr "上層生產工單"
+msgstr "上级生产"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
-msgstr "這張生產工單對應的上層生產工單"
+msgstr "此次生产匹配的订单"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1096,107 +1100,107 @@ msgstr "這張生產工單對應的上層生產工單"
 msgid "Part"
 msgstr "零件"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
-msgstr "選擇要生產的零件"
+msgstr "选择要生产的零件"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
-msgstr "銷售訂單代號"
+msgstr "相关销售订单"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
-msgstr "這張生產工單對應的銷售訂單"
+msgstr "此次生产匹配的销售订单"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
-msgstr "來源倉儲地點"
+msgstr "来源地点"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
-msgstr "選擇領取料件的倉儲地點(留白表示可以從任何地點領取)"
+msgstr "此次生产从哪个仓储位置获取库存(留空即可从任何仓储位置取出)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
-msgstr "目標倉儲地點"
+msgstr "目标地点"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
-msgstr "選擇要存放成品的倉儲地點"
+msgstr "选择已完成项目库存地点"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
-msgstr "生產數量"
+msgstr "生产数量"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
-msgstr "要生產的庫存品數量"
+msgstr "要生产的项目数量"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
-msgstr "已完成項目"
+msgstr "已完成项目"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
-msgstr "已經完成的庫存品數量"
+msgstr "已完成的库存项数量"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
-msgstr "生產狀態"
+msgstr "生产状态"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
-msgstr "生產狀態代碼"
+msgstr "生产状态代码"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
 #: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
-msgstr "批量代碼"
+msgstr "批量代码"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
-msgstr "本批次成品的生產批號"
+msgstr "此生产产出的批量代码"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
-msgstr "建立日期"
+msgstr "创建日期"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
-msgstr "目標完成日期"
+msgstr "预计完成日期"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
-msgstr "生產的預計完成日期。若超過此日期則工單會逾期。"
+msgstr "生产完成的目标日期。生产将在此日期之后逾期。"
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "完成日期"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
-msgstr "完成者"
+msgstr "完成人"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
-msgstr "發布者"
+msgstr "发布者"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
-msgstr "發布此生產工單的使用者"
+msgstr "发布此生产订单的用户"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1205,13 +1209,13 @@ msgstr "發布此生產工單的使用者"
 #: templates/js/translated/return_order.js:359
 #: templates/js/translated/table_filters.js:531
 msgid "Responsible"
-msgstr "負責人"
+msgstr "责任人"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
-msgstr "負責此生產工單的使用者或群組"
+msgstr "负责此生产订单的用户或群组"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1221,18 +1225,18 @@ msgstr "負責此生產工單的使用者或群組"
 #: stock/templates/stock/item_base.html:200
 #: templates/js/translated/company.js:1009
 msgid "External Link"
-msgstr "外部連結"
+msgstr "外部链接"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
-msgstr "製造優先度"
+msgstr "生产优先级"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
-msgstr "此生產工單的優先程度"
+msgstr "此生产订单的优先级"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1240,59 +1244,59 @@ msgstr "此生產工單的優先程度"
 #: templates/js/translated/table_filters.js:48
 #: templates/project_code_data.html:6
 msgid "Project Code"
-msgstr "專案代碼"
+msgstr "项目编码"
 
-#: build/models.py:324
+#: build/models.py:330
 msgid "Project code for this build order"
-msgstr "此生產工單隸屬的專案代碼"
+msgstr "此生产订单的项目编码"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
-msgstr "生產工單 {build} 已經完成"
+msgstr "生产订单 {build} 已完成"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
-msgstr "一張生產工單已經完成"
+msgstr "生产订单已完成"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
-msgstr "尚未指定生產品項"
+msgstr "未指定生产产出"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
-msgstr "生產成品已經完成"
+msgstr "生产产出已完成"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
-msgstr "生產品項與生產工單不符"
+msgstr "生产产出与订单不匹配"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
 #: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
-msgstr "數量必須大於零"
+msgstr "数量必须大于0"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 msgid "Quantity cannot be greater than the output quantity"
-msgstr "數量不能大於工單生產數量"
+msgstr "数量不能大于输出数量"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
-msgstr "生產產出 {serial} 並未通過所有必要的測試"
+msgstr "生产输出 {serial} 未通过所有必要测试"
 
-#: build/models.py:1302
+#: build/models.py:1308
 msgid "Build object"
-msgstr ""
+msgstr "生产对象"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2459
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1332,39 +1336,39 @@ msgstr ""
 #: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021
 #: templates/js/translated/stock.js:3104
 msgid "Quantity"
-msgstr "數量"
+msgstr "数量"
 
-#: build/models.py:1317
+#: build/models.py:1323
 msgid "Required quantity for build order"
-msgstr "生產工單所需數量"
+msgstr "生产订单所需数量"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
-msgstr ""
+msgstr "生产项必须指定生产产出,因为主零件已经被标记为可追踪的"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
-msgstr "分配的數量({q})不能超過可用的庫存數量({a})"
+msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
-msgstr "庫存品項超額分配"
+msgstr "库存项分配过度"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
-msgstr "分配的數量必須大於零"
+msgstr "分配数量必须大于0"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
-msgstr "有序號的品項數量必須為1"
+msgstr "序列化库存的数量必须是 1"
 
-#: build/models.py:1489
+#: build/models.py:1495
 msgid "Selected stock item does not match BOM line"
-msgstr "選擇的庫存品項和BOM的項目不符"
+msgstr "选定的库存项与物料清单行不匹配"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
 #: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
@@ -1378,85 +1382,85 @@ msgstr "選擇的庫存品項和BOM的項目不符"
 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
 #: templates/js/translated/stock.js:2977
 msgid "Stock Item"
-msgstr "庫存品項"
+msgstr "库存项"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
-msgstr "來源庫存項目"
+msgstr "源库存项"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
-msgstr "要分配的庫存數量"
+msgstr "分配到生产的数量"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
-msgstr "安裝到"
+msgstr "安装到"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
-msgstr "目的庫存品項"
+msgstr "目标库存项"
 
 #: build/serializers.py:160 build/serializers.py:840
 #: templates/js/translated/build.js:1319
 msgid "Build Output"
-msgstr "產出"
+msgstr "生产产出"
 
 #: build/serializers.py:172
 msgid "Build output does not match the parent build"
-msgstr "產出與上層生產工單不符"
+msgstr "生产产出与对应生产不匹配"
 
 #: build/serializers.py:176
 msgid "Output part does not match BuildOrder part"
-msgstr "產出零件與生產工單不符"
+msgstr "产出零件与生产订单零件不匹配"
 
 #: build/serializers.py:180
 msgid "This build output has already been completed"
-msgstr "此筆產出已完成"
+msgstr "此生产产出已经完成"
 
 #: build/serializers.py:191
 msgid "This build output is not fully allocated"
-msgstr "此筆產出的分配尚未完成"
+msgstr "生产产出未被完成分配"
 
 #: build/serializers.py:211 build/serializers.py:248
 msgid "Enter quantity for build output"
-msgstr "輸入產出數量"
+msgstr "输入生产产出数量"
 
 #: build/serializers.py:269
 msgid "Integer quantity required for trackable parts"
-msgstr "可追蹤的零件數量必須為整數"
+msgstr "对于可追踪的零件,需要整数型数值"
 
 #: build/serializers.py:272
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
-msgstr "因為BOM包含可追蹤的零件,所以數量必須為整數"
+msgstr "需要整数型数值,因为物料清单包含可追踪的零件"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
 #: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
-msgstr "序號"
+msgstr "序列号"
 
 #: build/serializers.py:288
 msgid "Enter serial numbers for build outputs"
-msgstr "輸入產出的序號"
+msgstr "输入生产产出的序列号"
 
 #: build/serializers.py:301
 msgid "Auto Allocate Serial Numbers"
-msgstr "自動分配序號"
+msgstr "自动分配序列号"
 
 #: build/serializers.py:302
 msgid "Automatically allocate required items with matching serial numbers"
-msgstr "自動為需要項目分配對應的序號"
+msgstr "自动为所需项分配对应的序列号"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
-msgstr "序號已存在或無效"
+msgstr "以下序列号已存在或无效"
 
 #: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539
 msgid "A list of build outputs must be provided"
-msgstr "必須提供產出清單"
+msgstr "必须提供生产产出列表"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
 #: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
 #: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
@@ -1473,31 +1477,31 @@ msgstr "必須提供產出清單"
 #: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200
 #: templates/js/translated/stock.js:2871
 msgid "Location"
-msgstr "地點"
+msgstr "地点"
 
 #: build/serializers.py:427
 msgid "Stock location for scrapped outputs"
-msgstr "報廢的庫存位置"
+msgstr "废品产出的库存地点"
 
 #: build/serializers.py:433
 msgid "Discard Allocations"
-msgstr "放棄分配"
+msgstr "放弃分配"
 
 #: build/serializers.py:434
 msgid "Discard any stock allocations for scrapped outputs"
-msgstr ""
+msgstr "取消对废品产出的任何库存分配"
 
 #: build/serializers.py:439
 msgid "Reason for scrapping build output(s)"
-msgstr "生產產出報廢的原因"
+msgstr "废品产出的原因"
 
 #: build/serializers.py:499
 msgid "Location for completed build outputs"
-msgstr "生產產出的倉儲地點"
+msgstr "已完成生产产出的库存地点"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
 #: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
@@ -1508,7 +1512,7 @@ msgstr "生產產出的倉儲地點"
 #: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995
 #: templates/js/translated/stock.js:3120
 msgid "Status"
-msgstr "狀態"
+msgstr "状态"
 
 #: build/serializers.py:511
 msgid "Accept Incomplete Allocation"
@@ -1516,161 +1520,161 @@ msgstr "接受不完整的分配"
 
 #: build/serializers.py:512
 msgid "Complete outputs if stock has not been fully allocated"
-msgstr "如果尚未完全分配庫存,則完成產出"
+msgstr "如果库存尚未完成分配,完成产出"
 
 #: build/serializers.py:592
 msgid "Remove Allocated Stock"
-msgstr "移除已分配的庫存"
+msgstr "移除已分配的库存"
 
 #: build/serializers.py:593
 msgid "Subtract any stock which has already been allocated to this build"
-msgstr "減去已分配給此次生產的庫存"
+msgstr "减去已经分配至此生产的库存"
 
 #: build/serializers.py:599
 msgid "Remove Incomplete Outputs"
-msgstr ""
+msgstr "移除未完成的产出"
 
 #: build/serializers.py:600
 msgid "Delete any build outputs which have not been completed"
-msgstr ""
+msgstr "删除所有未完成的生产产出"
 
 #: build/serializers.py:627
 msgid "Not permitted"
-msgstr ""
+msgstr "不允许"
 
 #: build/serializers.py:628
 msgid "Accept as consumed by this build order"
-msgstr ""
+msgstr "接受此生产订单所消耗的内容"
 
 #: build/serializers.py:629
 msgid "Deallocate before completing this build order"
-msgstr ""
+msgstr "在完成此生产订单前取消分配"
 
 #: build/serializers.py:651
 msgid "Overallocated Stock"
-msgstr ""
+msgstr "超量分配库存"
 
 #: build/serializers.py:653
 msgid "How do you want to handle extra stock items assigned to the build order"
-msgstr ""
+msgstr "如何处理分配给生产订单的额外库存项"
 
 #: build/serializers.py:663
 msgid "Some stock items have been overallocated"
-msgstr ""
+msgstr "一些库存项已被过度分配"
 
 #: build/serializers.py:668
 msgid "Accept Unallocated"
-msgstr "接受未分配"
+msgstr "接受未分配的"
 
 #: build/serializers.py:669
 msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
+msgstr "接受库存项未被完成分配至此生产订单"
 
 #: build/serializers.py:679 templates/js/translated/build.js:315
 msgid "Required stock has not been fully allocated"
-msgstr ""
+msgstr "所需库存尚未完全分配"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
-msgstr "接受不完整"
+msgstr "接受未完成"
 
 #: build/serializers.py:685
 msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
+msgstr "接受所需的生产产出未完成"
 
 #: build/serializers.py:695 templates/js/translated/build.js:319
 msgid "Required build quantity has not been completed"
-msgstr ""
+msgstr "所需生产数量尚未完成"
 
 #: build/serializers.py:704 templates/js/translated/build.js:303
 msgid "Build order has incomplete outputs"
-msgstr ""
+msgstr "生产订单有未完成的产出"
 
 #: build/serializers.py:734
 msgid "Build Line"
-msgstr ""
+msgstr "生产行"
 
 #: build/serializers.py:744
 msgid "Build output"
-msgstr ""
+msgstr "生产产出"
 
 #: build/serializers.py:752
 msgid "Build output must point to the same build"
-msgstr ""
+msgstr "生产产出必须指向相同的生产"
 
 #: build/serializers.py:788
 msgid "Build Line Item"
-msgstr ""
+msgstr "生产行项目"
 
 #: build/serializers.py:802
 msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
+msgstr "bom_item.part 必须与生产订单指向相同的零件"
 
 #: build/serializers.py:817 stock/serializers.py:1065
 msgid "Item must be in stock"
-msgstr "商品必須有庫存"
+msgstr "项目必须在库存中"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
-msgstr ""
+msgstr "可用量 ({q}) 超出了限制"
 
 #: build/serializers.py:871
 msgid "Build output must be specified for allocation of tracked parts"
-msgstr ""
+msgstr "对于被追踪的零件的分配,必须指定生产产出"
 
 #: build/serializers.py:878
 msgid "Build output cannot be specified for allocation of untracked parts"
-msgstr ""
+msgstr "对于未被追踪的零件,无法指定生产产出"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
-msgstr ""
+msgstr "必须提供分配的项"
 
 #: build/serializers.py:965
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
-msgstr ""
+msgstr "零件来源的库存地点(留空则可来源于任何库存地点)"
 
 #: build/serializers.py:973
 msgid "Exclude Location"
-msgstr "排除位置"
+msgstr "排除地点"
 
 #: build/serializers.py:974
 msgid "Exclude stock items from this selected location"
-msgstr ""
+msgstr "从该选定的库存地点排除库存项"
 
 #: build/serializers.py:979
 msgid "Interchangeable Stock"
-msgstr "可互換庫存"
+msgstr "可互换的库存"
 
 #: build/serializers.py:980
 msgid "Stock items in multiple locations can be used interchangeably"
-msgstr ""
+msgstr "多处地点的库存项可以互换使用"
 
 #: build/serializers.py:985
 msgid "Substitute Stock"
-msgstr ""
+msgstr "可替换的库存"
 
 #: build/serializers.py:986
 msgid "Allow allocation of substitute parts"
-msgstr ""
+msgstr "允许分配可替换的零件"
 
 #: build/serializers.py:991
 msgid "Optional Items"
-msgstr ""
+msgstr "可选项"
 
 #: build/serializers.py:992
 msgid "Allocate optional BOM items to build order"
-msgstr ""
+msgstr "分配可选的物料清单给生产订单"
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
-msgstr ""
+msgstr "物料清单项"
 
 #: build/serializers.py:1106 templates/js/translated/index.js:130
 msgid "Allocated Stock"
-msgstr ""
+msgstr "分配库存"
 
 #: build/serializers.py:1111 part/admin.py:132 part/bom.py:173
 #: part/serializers.py:815 part/serializers.py:1478
@@ -1679,36 +1683,36 @@ msgstr ""
 #: templates/js/translated/part.js:2148
 #: templates/js/translated/table_filters.js:170
 msgid "On Order"
-msgstr ""
+msgstr "已订购"
 
 #: build/serializers.py:1116 part/serializers.py:1480
 #: templates/js/translated/build.js:2618
 #: templates/js/translated/table_filters.js:360
 msgid "In Production"
-msgstr ""
+msgstr "生产中"
 
 #: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491
 #: part/templates/part/part_base.html:192
 #: templates/js/translated/sales_order.js:1893
 msgid "Available Stock"
-msgstr ""
+msgstr "可用库存"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
-msgstr ""
+msgstr "生产订单所需的库存"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
-msgstr ""
+msgstr "逾期的生产订单"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
-msgstr ""
+msgstr "生产订单 {bo} 现在已逾期"
 
 #: build/templates/build/build_base.html:18
 msgid "Part thumbnail"
-msgstr ""
+msgstr "零件缩略图"
 
 #: build/templates/build/build_base.html:38
 #: company/templates/company/supplier_part.html:35
@@ -1720,7 +1724,7 @@ msgstr ""
 #: stock/templates/stock/location.html:55
 #: templates/js/translated/filters.js:335
 msgid "Barcode actions"
-msgstr ""
+msgstr "条形码操作"
 
 #: build/templates/build/build_base.html:42
 #: company/templates/company/supplier_part.html:39
@@ -1731,7 +1735,7 @@ msgstr ""
 #: stock/templates/stock/item_base.html:44
 #: stock/templates/stock/location.html:57 templates/qr_button.html:1
 msgid "Show QR Code"
-msgstr ""
+msgstr "显示二维码"
 
 #: build/templates/build/build_base.html:45
 #: company/templates/company/supplier_part.html:41
@@ -1744,7 +1748,7 @@ msgstr ""
 #: templates/js/translated/barcode.js:496
 #: templates/js/translated/barcode.js:501
 msgid "Unlink Barcode"
-msgstr ""
+msgstr "取消关联条形码"
 
 #: build/templates/build/build_base.html:47
 #: company/templates/company/supplier_part.html:43
@@ -1755,71 +1759,71 @@ msgstr ""
 #: stock/templates/stock/item_base.html:49
 #: stock/templates/stock/location.html:61
 msgid "Link Barcode"
-msgstr ""
+msgstr "关联二维码"
 
 #: build/templates/build/build_base.html:56
 #: order/templates/order/order_base.html:46
 #: order/templates/order/return_order_base.html:55
 #: order/templates/order/sales_order_base.html:55
 msgid "Print actions"
-msgstr ""
+msgstr "打印操作"
 
 #: build/templates/build/build_base.html:60
 msgid "Print build order report"
-msgstr ""
+msgstr "打印生产订单报告"
 
 #: build/templates/build/build_base.html:67
 msgid "Build actions"
-msgstr ""
+msgstr "生产操作"
 
 #: build/templates/build/build_base.html:71
 msgid "Edit Build"
-msgstr ""
+msgstr "编辑生产"
 
 #: build/templates/build/build_base.html:73
 msgid "Cancel Build"
-msgstr ""
+msgstr "取消生产"
 
 #: build/templates/build/build_base.html:76
 msgid "Duplicate Build"
-msgstr ""
+msgstr "复制生产"
 
 #: build/templates/build/build_base.html:79
 msgid "Delete Build"
-msgstr ""
+msgstr "删除生产"
 
 #: build/templates/build/build_base.html:84
 #: build/templates/build/build_base.html:85
 msgid "Complete Build"
-msgstr ""
+msgstr "生产完成"
 
 #: build/templates/build/build_base.html:107
 msgid "Build Description"
-msgstr ""
+msgstr "生产描述"
 
 #: build/templates/build/build_base.html:117
 msgid "No build outputs have been created for this build order"
-msgstr ""
+msgstr "针对此生产订单,尚未创建生产产出"
 
 #: build/templates/build/build_base.html:124
 msgid "Build Order is ready to mark as completed"
-msgstr ""
+msgstr "生产订单已准备好标记为已完成"
 
 #: build/templates/build/build_base.html:129
 msgid "Build Order cannot be completed as outstanding outputs remain"
-msgstr ""
+msgstr "由于仍有未完成的产出,生产订单无法完成"
 
 #: build/templates/build/build_base.html:134
 msgid "Required build quantity has not yet been completed"
-msgstr ""
+msgstr "所需生产数量尚未完成"
 
 #: build/templates/build/build_base.html:139
 msgid "Stock has not been fully allocated to this Build Order"
-msgstr ""
+msgstr "库存尚未被完全分配到此生产订单"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1831,12 +1835,12 @@ msgstr ""
 #: templates/js/translated/sales_order.js:835
 #: templates/js/translated/sales_order.js:1867
 msgid "Target Date"
-msgstr ""
+msgstr "预计日期"
 
 #: build/templates/build/build_base.html:165
 #, python-format
 msgid "This build was due on %(target)s"
-msgstr ""
+msgstr "此次生产的截止日期为 %(target)s"
 
 #: build/templates/build/build_base.html:165
 #: build/templates/build/build_base.html:222
@@ -1853,11 +1857,11 @@ msgstr "逾期"
 #: build/templates/build/build_base.html:177
 #: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
 msgid "Completed Outputs"
-msgstr ""
+msgstr "产出已完成"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1869,56 +1873,56 @@ msgstr ""
 #: templates/js/translated/sales_order.js:992
 #: templates/js/translated/stock.js:2924
 msgid "Sales Order"
-msgstr ""
+msgstr "销售订单"
 
 #: build/templates/build/build_base.html:197
 #: build/templates/build/detail.html:115
 #: report/templates/report/inventree_build_order_base.html:152
 #: templates/js/translated/table_filters.js:24
 msgid "Issued By"
-msgstr ""
+msgstr "发布者"
 
 #: build/templates/build/build_base.html:211
 #: build/templates/build/detail.html:94 templates/js/translated/build.js:2154
 msgid "Priority"
-msgstr "優先等級"
+msgstr "优先级"
 
 #: build/templates/build/build_base.html:273
 msgid "Delete Build Order"
-msgstr ""
+msgstr "删除生产订单"
 
 #: build/templates/build/build_base.html:283
 msgid "Build Order QR Code"
-msgstr ""
+msgstr "生产订单二维码"
 
 #: build/templates/build/build_base.html:295
 msgid "Link Barcode to Build Order"
-msgstr ""
+msgstr "将条形码链接到生产订单"
 
 #: build/templates/build/detail.html:15
 msgid "Build Details"
-msgstr ""
+msgstr "生产详情"
 
 #: build/templates/build/detail.html:38
 msgid "Stock Source"
-msgstr ""
+msgstr "库存来源"
 
 #: build/templates/build/detail.html:43
 msgid "Stock can be taken from any available location."
-msgstr ""
+msgstr "库存可以从任何可用的地点获得。"
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
-msgstr ""
+msgstr "目的地"
 
 #: build/templates/build/detail.html:56
 msgid "Destination location not specified"
-msgstr ""
+msgstr "未指定目的地"
 
 #: build/templates/build/detail.html:73
 msgid "Allocated Parts"
-msgstr ""
+msgstr "已分配的零件"
 
 #: build/templates/build/detail.html:80 stock/admin.py:163
 #: stock/templates/stock/item_base.html:162
@@ -1930,7 +1934,7 @@ msgstr ""
 #: templates/js/translated/table_filters.js:313
 #: templates/js/translated/table_filters.js:404
 msgid "Batch"
-msgstr ""
+msgstr "批量"
 
 #: build/templates/build/detail.html:133
 #: order/templates/order/order_base.html:173
@@ -1938,86 +1942,86 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:186
 #: templates/js/translated/build.js:2197
 msgid "Created"
-msgstr ""
+msgstr "已创建"
 
 #: build/templates/build/detail.html:144
 msgid "No target date set"
-msgstr ""
+msgstr "无预计日期"
 
 #: build/templates/build/detail.html:149
 #: order/templates/order/sales_order_base.html:202
 #: templates/js/translated/table_filters.js:689
 msgid "Completed"
-msgstr ""
+msgstr "已完成"
 
 #: build/templates/build/detail.html:153
 msgid "Build not complete"
-msgstr ""
+msgstr "生产未完成"
 
 #: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17
 msgid "Child Build Orders"
-msgstr ""
+msgstr "子生产订单"
 
 #: build/templates/build/detail.html:177
 msgid "Allocate Stock to Build"
-msgstr ""
+msgstr "为生产分配库存"
 
 #: build/templates/build/detail.html:181
 msgid "Deallocate stock"
-msgstr ""
+msgstr "取消分配库存"
 
 #: build/templates/build/detail.html:182
 msgid "Deallocate Stock"
-msgstr ""
+msgstr "取消分配库存"
 
 #: build/templates/build/detail.html:184
 msgid "Automatically allocate stock to build"
-msgstr ""
+msgstr "自动分配库存以进行生产"
 
 #: build/templates/build/detail.html:185
 msgid "Auto Allocate"
-msgstr "自動分配"
+msgstr "自动分配"
 
 #: build/templates/build/detail.html:187
 msgid "Manually allocate stock to build"
-msgstr "手動分配庫存進行生產"
+msgstr "手动分配库存以进行生产"
 
 #: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8
 msgid "Allocate Stock"
-msgstr "分配庫存"
+msgstr "分配库存"
 
 #: build/templates/build/detail.html:191
 msgid "Order required parts"
-msgstr ""
+msgstr "订单所需零件"
 
 #: build/templates/build/detail.html:192
 #: templates/js/translated/purchase_order.js:795
 msgid "Order Parts"
-msgstr ""
+msgstr "订购零件"
 
 #: build/templates/build/detail.html:205
 msgid "Available stock has been filtered based on specified source location for this build order"
-msgstr ""
+msgstr "可用库存已根据指定的源地点为此生产订单进行筛选"
 
 #: build/templates/build/detail.html:215
 msgid "Incomplete Build Outputs"
-msgstr ""
+msgstr "未完成的生产产出"
 
 #: build/templates/build/detail.html:219
 msgid "Create new build output"
-msgstr ""
+msgstr "创建新的生产产出"
 
 #: build/templates/build/detail.html:220
 msgid "New Build Output"
-msgstr ""
+msgstr "新建生产产出"
 
 #: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15
 msgid "Consumed Stock"
-msgstr ""
+msgstr "已消耗库存"
 
 #: build/templates/build/detail.html:249
 msgid "Completed Build Outputs"
-msgstr ""
+msgstr "已完成生产产出"
 
 #: build/templates/build/detail.html:261 build/templates/build/sidebar.html:19
 #: company/templates/company/detail.html:229
@@ -2037,1626 +2041,1644 @@ msgstr "附件"
 
 #: build/templates/build/detail.html:276
 msgid "Build Notes"
-msgstr ""
+msgstr "生产备注"
 
 #: build/templates/build/detail.html:434
 msgid "Allocation Complete"
-msgstr ""
+msgstr "分配完成"
 
 #: build/templates/build/detail.html:435
 msgid "All lines have been fully allocated"
-msgstr ""
+msgstr "所有行都已完全分配"
 
 #: build/templates/build/index.html:18 part/templates/part/detail.html:319
 msgid "New Build Order"
-msgstr ""
+msgstr "新建生产订单"
 
 #: build/templates/build/sidebar.html:5
 msgid "Build Order Details"
-msgstr ""
+msgstr "生产订单详情"
 
 #: build/templates/build/sidebar.html:10
 msgid "Incomplete Outputs"
-msgstr ""
+msgstr "未完成输出"
 
 #: common/files.py:63
 #, python-brace-format
 msgid "Unsupported file format: {fmt}"
-msgstr ""
+msgstr "不支持的文件格式: {fmt}"
 
 #: common/files.py:65
 msgid "Error reading file (invalid encoding)"
-msgstr ""
+msgstr "读取文件时发生错误 (无效编码)"
 
 #: common/files.py:70
 msgid "Error reading file (invalid format)"
-msgstr ""
+msgstr "读取文件时发生错误 (无效格式)"
 
 #: common/files.py:72
 msgid "Error reading file (incorrect dimension)"
-msgstr ""
+msgstr "读取文件时发生错误 (尺寸错误)"
 
 #: common/files.py:74
 msgid "Error reading file (data could be corrupted)"
-msgstr ""
+msgstr "读取文件时发生错误 (数据可能已损坏)"
 
 #: common/forms.py:12
 msgid "File"
-msgstr "檔案"
+msgstr "文件"
 
 #: common/forms.py:12
 msgid "Select file to upload"
-msgstr "選擇要上傳的檔案"
+msgstr "选择要上传的文件"
 
 #: common/forms.py:25
 msgid "{name.title()} File"
-msgstr ""
+msgstr "文件 {name.title()}"
 
 #: common/forms.py:26
 #, python-brace-format
 msgid "Select {name} file to upload"
-msgstr ""
+msgstr "选择 {name} 文件上传"
 
 #: common/models.py:71
 msgid "Updated"
-msgstr ""
+msgstr "已更新"
 
 #: common/models.py:72
 msgid "Timestamp of last update"
-msgstr ""
+msgstr "最后一次更新时间"
 
 #: common/models.py:105
 msgid "Site URL is locked by configuration"
-msgstr ""
+msgstr "网站 URL 已被配置锁定"
 
 #: common/models.py:130
 msgid "Unique project code"
-msgstr ""
+msgstr "唯一项目编码"
 
 #: common/models.py:137
 msgid "Project description"
-msgstr ""
+msgstr "项目描述"
 
 #: common/models.py:146
 msgid "User or group responsible for this project"
-msgstr ""
+msgstr "负责此项目的用户或群组"
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
-msgstr ""
+msgstr "设置主键 (必须是唯一的 - 大小写不敏感)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
-msgstr ""
+msgstr "设定值"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
-msgstr ""
+msgstr "选择的值不是一个有效的选项"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
-msgstr ""
+msgstr "值必须是布尔量"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
-msgstr ""
+msgstr "值必须为整数"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
-msgstr ""
+msgstr "主键必须是唯一的"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
-msgstr ""
+msgstr "无群组"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
-msgstr ""
+msgstr "不允许空域。"
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
-msgstr ""
+msgstr "无效的域名: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 msgid "No plugin"
-msgstr ""
+msgstr "无插件"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
-msgstr ""
+msgstr "需要重启"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
-msgstr ""
+msgstr "设置已更改,需要服务器重启"
 
-#: common/models.py:1245
+#: common/models.py:1271
 msgid "Pending migrations"
-msgstr ""
+msgstr "待迁移中"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
-msgstr ""
+msgstr "待处理的数据库迁移数量"
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
-msgstr ""
+msgstr "服务器实例名称"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
-msgstr ""
+msgstr "服务器实例的字符串描述符"
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
-msgstr ""
+msgstr "用例名称"
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
-msgstr ""
+msgstr "在标题栏上显示实例名称"
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
-msgstr ""
+msgstr "限制显示 `关于` 信息"
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
-msgstr ""
+msgstr "只向超级用户显示 `about` 信息"
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
-msgstr ""
+msgstr "公司名称"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
-msgstr ""
+msgstr "内部公司名称"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
-msgstr ""
+msgstr "基本 URL"
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
-msgstr ""
+msgstr "服务器实例的基本 URL"
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
-msgstr ""
+msgstr "默认货币单位"
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
-msgstr ""
+msgstr "选择定价计算的默认货币"
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
-msgstr ""
+msgstr "货币更新间隔时间"
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
-msgstr ""
+msgstr "检查更新的频率(设置为零以禁用)"
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "天"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
-msgstr ""
+msgstr "货币更新插件"
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
-msgstr ""
+msgstr "使用货币更新插件"
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
-msgstr ""
+msgstr "从 URL 下载"
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
-msgstr ""
+msgstr "允许从外部 URL 下载远程图片和文件"
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
-msgstr ""
+msgstr "下载大小限制"
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
-msgstr ""
+msgstr "远程图片的最大允许下载大小"
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
-msgstr ""
+msgstr "用于从 URL 下载的 User-agent"
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
-msgstr ""
+msgstr "允许覆盖用于从外部 URL 下载图片和文件的 user-agent(留空为默认值)"
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
-msgstr ""
+msgstr "严格的 URL 验证"
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
-msgstr ""
+msgstr "验证 URL 时需要 schema 规范"
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
-msgstr ""
+msgstr "需要确认"
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
-msgstr ""
+msgstr "对某些操作需要用户明确确认。"
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
-msgstr ""
+msgstr "树深度"
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
-msgstr ""
+msgstr "树视图的默认树深度。更深的层次可以在需要时进行懒加载。"
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
-msgstr ""
+msgstr "更新检查间隔"
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
-msgstr ""
+msgstr "检查更新的频率(设置为零以禁用)"
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
-msgstr "自動備份"
+msgstr "自动备份"
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
-msgstr "啟動資料庫和媒體文件自動備份"
+msgstr "启用数据库和媒体文件的自动备份"
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
-msgstr "自動備份間隔"
+msgstr "自动备份间隔"
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
-msgstr ""
+msgstr "指定自动备份事件之间的天数"
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
-msgstr ""
+msgstr "任务删除间隔"
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
-msgstr ""
+msgstr "后台任务结果将在指定天数后删除"
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
-msgstr ""
+msgstr "错误日志删除间隔"
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
-msgstr ""
+msgstr "指定天数后将删除错误日志"
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
-msgstr ""
+msgstr "通知删除间隔"
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
-msgstr ""
+msgstr "指定天数后将删除用户通知"
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
-msgstr ""
+msgstr "条形码支持"
 
-#: common/models.py:1393
+#: common/models.py:1419
 msgid "Enable barcode scanner support in the web interface"
-msgstr ""
+msgstr "在网页界面启用条形码扫描器支持"
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
-msgstr ""
+msgstr "条形码输入延迟"
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
-msgstr ""
+msgstr "条形码输入处理延迟时间"
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
-msgstr ""
+msgstr "支持条形码摄像头"
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
-msgstr ""
+msgstr "允许通过网络摄像头扫描条形码"
 
-#: common/models.py:1411
+#: common/models.py:1437
 msgid "Part Revisions"
-msgstr ""
+msgstr "零件修订版本"
 
-#: common/models.py:1412
+#: common/models.py:1438
 msgid "Enable revision field for Part"
-msgstr ""
+msgstr "启用零件的修订字段"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
-msgstr ""
+msgstr "IPN 正则表达式"
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
-msgstr ""
+msgstr "用于匹配零件 IPN 的正则表达式模式"
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
-msgstr ""
+msgstr "允许重复 IPN"
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
-msgstr ""
+msgstr "允许多个零件共享相同的 IPN"
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
-msgstr ""
+msgstr "允许编辑 IPN"
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
-msgstr ""
+msgstr "在编辑零件时允许更改 IPN 值"
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
-msgstr ""
+msgstr "复制零件 物料清单 数据"
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
-msgstr ""
+msgstr "复制零件时默认复制 物料清单 数据"
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
-msgstr ""
+msgstr "复制零件参数数据"
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
-msgstr ""
+msgstr "复制零件时默认复制参数数据"
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
-msgstr ""
+msgstr "复制零件测试数据"
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
-msgstr ""
+msgstr "复制零件时默认复制测试数据"
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
-msgstr ""
+msgstr "复制类别参数模板"
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
-msgstr ""
+msgstr "创建零件时复制类别参数模板"
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:99
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
-msgstr ""
+msgstr "模板"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
-msgstr ""
+msgstr "零件默认为模板"
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
-msgstr ""
+msgstr "装配"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
-msgstr ""
+msgstr "默认情况下,零件可由其他元件组装而成"
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
-msgstr ""
+msgstr "组件"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
-msgstr ""
+msgstr "默认情况下,零件可作为子零件"
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
-msgstr ""
+msgstr "可购买"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
-msgstr ""
+msgstr "零件默认可购买"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
-msgstr ""
+msgstr "可销售"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
-msgstr ""
+msgstr "零件默认可销售"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
-msgstr ""
+msgstr "可追踪"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
-msgstr ""
+msgstr "零件默认可跟踪"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
-msgstr ""
+msgstr "虚拟"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
-msgstr ""
+msgstr "零件默认是虚拟的"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
-msgstr ""
+msgstr "视图中显示导入"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
-msgstr ""
+msgstr "在一些零件视图中显示导入向导"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
-msgstr ""
+msgstr "显示相关零件"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
-msgstr ""
+msgstr "显示与零件相关的零件"
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
-msgstr ""
+msgstr "初始库存数据"
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
-msgstr ""
+msgstr "在添加新零件时允许创建初始库存"
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
-msgstr ""
+msgstr "初始供应商数据"
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
-msgstr ""
+msgstr "在添加新零件时允许创建初始供应商数据"
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
-msgstr ""
+msgstr "零件名称显示格式"
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
-msgstr ""
+msgstr "用于显示零件名称的格式"
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
-msgstr ""
+msgstr "零件类别默认图标"
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
-msgstr ""
+msgstr "零件类别默认图标(空表示没有图标)"
 
-#: common/models.py:1537
+#: common/models.py:1563
 msgid "Enforce Parameter Units"
-msgstr ""
+msgstr "强制参数单位"
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
-msgstr ""
+msgstr "如果提供了单位,参数值必须与指定的单位匹配"
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
-msgstr ""
+msgstr "最小定价小数位数"
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
-msgstr ""
+msgstr "在呈现定价数据时显示的最小小数位数"
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
-msgstr ""
+msgstr "最大定价小数位数"
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
-msgstr ""
+msgstr "在呈现定价数据时显示的最大小数位数"
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
-msgstr ""
+msgstr "使用供应商定价"
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
-msgstr ""
+msgstr "将供应商的价批发价纳入总体定价计算中"
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
-msgstr ""
+msgstr "采购历史覆盖"
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
-msgstr ""
+msgstr "历史采购订单定价覆盖供应商批发价"
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
-msgstr ""
+msgstr "使用库存项定价"
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
-msgstr ""
+msgstr "使用手动输入的库存数据中的定价进行定价计算"
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
-msgstr ""
+msgstr "库存项目定价时间"
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
-msgstr ""
+msgstr "在计算定价时,不包括超过此天数的库存项"
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
-msgstr ""
+msgstr "使用变体价格"
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
-msgstr ""
+msgstr "在总体定价计算中包括变体价格"
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
-msgstr ""
+msgstr "仅激活的变体"
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
-msgstr ""
+msgstr "仅使用激活的变体零件来计算变体定价"
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
-msgstr ""
+msgstr "定价重建间隔"
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
-msgstr ""
+msgstr "零件定价自动更新之前的天数"
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
-msgstr ""
+msgstr "内部价格"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
-msgstr ""
+msgstr "启用内部零件价格"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
-msgstr ""
+msgstr "覆盖内部价格"
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
-msgstr ""
+msgstr "如果可用,用内部价格取代价格范围计算"
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
-msgstr ""
+msgstr "启用标签打印功能"
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
-msgstr ""
+msgstr "在网页界面启用标签打印"
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
-msgstr ""
+msgstr "标签图片 DPI"
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
-msgstr ""
+msgstr "生成图片文件以提供给标签打印插件时的 DPI 分辨率"
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
-msgstr ""
+msgstr "启用报告"
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
-msgstr ""
+msgstr "启用报告生成"
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
-msgstr ""
+msgstr "调试模式"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
-msgstr ""
+msgstr "在调试模式生成报告(HTML输出)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 msgid "Log Report Errors"
-msgstr ""
+msgstr "日志错误报告"
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
-msgstr ""
+msgstr "记录生成报告时出现的错误"
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
-msgstr ""
+msgstr "页面大小"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
-msgstr ""
+msgstr "PDF 报表默认页面大小"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
-msgstr ""
+msgstr "启用测试报告"
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
-msgstr ""
+msgstr "启用生成测试报表"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
-msgstr ""
+msgstr "添加测试报告"
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
+msgstr "在打印测试报告时,将测试报告副本附加到相关的库存项"
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
-msgstr ""
+msgstr "全局唯一序列号"
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
-msgstr ""
+msgstr "库存项的序列号必须是全局唯一的"
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
-msgstr ""
+msgstr "自动填充序列号"
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
-msgstr ""
+msgstr "以表格形式自动填写序列号"
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
-msgstr ""
+msgstr "删除已耗尽的库存"
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
-msgstr ""
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
+msgstr "决定当库存项耗尽时的默认行为"
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
-msgstr "生產批號樣板"
+msgstr "批号模板"
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
-msgstr "為庫存品項生成預設生產批號的模板"
+msgstr "为库存项生成默认批号的模板"
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
-msgstr ""
+msgstr "库存到期"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
-msgstr ""
+msgstr "启用库存到期功能"
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
-msgstr ""
+msgstr "销售过期库存"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
-msgstr ""
+msgstr "允许销售过期库存"
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
-msgstr ""
+msgstr "库存过期时间"
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
-msgstr ""
+msgstr "库存项在到期前被视为过期的天数"
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
-msgstr ""
+msgstr "生产过期库存"
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
-msgstr ""
+msgstr "允许用过期的库存生产"
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
-msgstr ""
+msgstr "库存所有权控制"
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
-msgstr ""
+msgstr "启用库存地点和项目的所有权控制"
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
-msgstr ""
+msgstr "库存地点默认图标"
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
-msgstr ""
+msgstr "库存地点默认图标 (空表示没有图标)"
 
-#: common/models.py:1748
+#: common/models.py:1774
 msgid "Show Installed Stock Items"
-msgstr ""
+msgstr "显示已安装的库存项"
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
-msgstr ""
+msgstr "在库存表中显示已安装的库存项"
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
-msgstr ""
+msgstr "在安装项目时检查物料清单"
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
-msgstr ""
+msgstr "已安装的库存项目必须存在于上级零件的物料清单中"
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
-msgstr ""
+msgstr "创建订单参考模式"
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
-msgstr ""
+msgstr "生成生产订单参考字段所需的模式"
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+msgid "Require Responsible Owner"
+msgstr "需要负责人"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr "必须为每个订单分配一个负责人"
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr "阻塞,直到测试通过"
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr "在所有必要的测试通过之前,阻止生产输出完成"
+
+#: common/models.py:1810
 msgid "Enable Return Orders"
-msgstr ""
+msgstr "启用退货订单"
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
-msgstr ""
+msgstr "在用户界面中启用退货订单功能"
 
-#: common/models.py:1776
+#: common/models.py:1816
 msgid "Return Order Reference Pattern"
-msgstr ""
+msgstr "退货订单参考模式"
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
-msgstr ""
+msgstr "生成退货订单参考字段所需的模式"
 
-#: common/models.py:1784
+#: common/models.py:1830
 msgid "Edit Completed Return Orders"
-msgstr ""
+msgstr "编辑已完成的退货订单"
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
-msgstr ""
+msgstr "允许编辑已完成的退货订单"
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
-msgstr ""
+msgstr "销售订单参照模式"
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
-msgstr ""
+msgstr "生成销售订单参考字段所需参照模式"
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
-msgstr ""
+msgstr "销售订单默认配送方式"
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
-msgstr ""
+msgstr "启用创建销售订单的默认配送功能"
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
-msgstr ""
+msgstr "编辑已完成的销售订单"
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
-msgstr ""
+msgstr "允许在订单配送或完成后编辑销售订单"
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
-msgstr ""
+msgstr "采购订单参考模式"
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
-msgstr ""
+msgstr "生成采购订单参考字段所需的模式"
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
-msgstr ""
+msgstr "编辑已完成的采购订单"
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
-msgstr ""
+msgstr "允许在采购订单已配送或完成后编辑订单"
 
-#: common/models.py:1830
+#: common/models.py:1888
 msgid "Auto Complete Purchase Orders"
-msgstr ""
+msgstr "自动完成采购订单"
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
-msgstr ""
+msgstr "当收到所有项目时,自动将采购订单标记为已完成"
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
-msgstr ""
+msgstr "启用忘记密码"
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
-msgstr ""
+msgstr "在登录页面启用忘记密码功能"
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
-msgstr ""
+msgstr "启用注册"
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
-msgstr ""
+msgstr "在登录页面启用注册功能"
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
-msgstr ""
+msgstr "启用 SSO"
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
-msgstr ""
+msgstr "在登录页面启用 SSO"
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
-msgstr ""
+msgstr "启用 SSO 注册"
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
-msgstr ""
+msgstr "允许登录页面上的用户通过 SSO 进行自我注册"
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
-msgstr ""
+msgstr "需要邮箱"
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
-msgstr ""
+msgstr "要求用户在注册时提供邮件"
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
-msgstr ""
+msgstr "自动填充 SSO 用户"
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
-msgstr ""
+msgstr "自动从 SSO 账户数据填写用户详细信息"
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
-msgstr ""
+msgstr "重复电子邮件"
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
-msgstr ""
+msgstr "注册时重复询问用户他们的电子邮件"
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
-msgstr ""
+msgstr "重复输入密码"
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
-msgstr ""
+msgstr "当注册时请用户重复输入密码"
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
-msgstr ""
+msgstr "域名白名单"
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
-msgstr ""
+msgstr "限制注册到某些域名 (逗号分隔,以 @ 开头)"
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
-msgstr ""
+msgstr "注册群组"
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
-msgstr ""
+msgstr "注册时分配给新用户的群组"
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
-msgstr ""
+msgstr "强制启用 MFA"
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
-msgstr ""
+msgstr "用户必须使用多因素安全认证。"
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
-msgstr ""
+msgstr "启动时检查插件"
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
-msgstr ""
+msgstr "检查启动时是否安装了所有插件 - 能在容器环境中启用"
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
-msgstr ""
+msgstr "检查插件更新"
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
-msgstr ""
+msgstr "启用定期检查已安装插件的更新"
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
-msgstr ""
+msgstr "启用 URL 集成"
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
-msgstr ""
+msgstr "启用插件来添加 URL 路由"
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
-msgstr ""
+msgstr "启用导航集成"
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
-msgstr ""
+msgstr "启用插件集成到导航中"
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
-msgstr ""
+msgstr "启用应用集成"
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
-msgstr ""
+msgstr "启用插件添加应用"
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
-msgstr ""
+msgstr "启用计划集成"
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
-msgstr ""
+msgstr "启用插件来运行预定任务"
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
-msgstr ""
+msgstr "启用事件集成"
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
-msgstr ""
+msgstr "启用插件响应内部事件"
 
-#: common/models.py:1963
+#: common/models.py:2021
 msgid "Enable project codes"
-msgstr ""
+msgstr "启用项目编码"
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
-msgstr ""
+msgstr "启用项目编码来跟踪项目"
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
-msgstr ""
+msgstr "盘点功能"
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
-msgstr ""
+msgstr "启用盘点功能以记录库存水平和计算库存值"
 
-#: common/models.py:1977
+#: common/models.py:2035
 msgid "Exclude External Locations"
-msgstr ""
+msgstr "排除外部地点"
 
-#: common/models.py:1979
+#: common/models.py:2037
 msgid "Exclude stock items in external locations from stocktake calculations"
-msgstr ""
+msgstr "从库存计算中排除外部地点的库存项"
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
-msgstr ""
+msgstr "自动评估周期"
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
-msgstr ""
+msgstr "自动盘点记录之间的天数 (设置为零以禁用)"
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
-msgstr ""
+msgstr "报告删除间隔时间"
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
-msgstr ""
+msgstr "评估报告将在指定天数后删除"
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
-msgstr ""
+msgstr "显示用户全名"
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
-msgstr ""
+msgstr "显示用户全名而非用户名"
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
-msgstr ""
-
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
-
-#: common/models.py:2016
+#: common/models.py:2066
 msgid "Enable Test Station Data"
-msgstr ""
+msgstr "启用测试站数据"
 
-#: common/models.py:2017
+#: common/models.py:2067
 msgid "Enable test station data collection for test results"
-msgstr ""
+msgstr "为测试结果启用测试站数据收集功能"
 
-#: common/models.py:2029 common/models.py:2429
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
-msgstr ""
+msgstr "设置主键 (必须是唯一的 - 大小写不敏感"
 
-#: common/models.py:2070
+#: common/models.py:2122
 msgid "Hide inactive parts"
-msgstr ""
+msgstr "隐藏未激活零件"
 
-#: common/models.py:2072
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
+msgstr "在主页显示结果中隐藏未激活零件"
 
-#: common/models.py:2078
+#: common/models.py:2130
 msgid "Show subscribed parts"
-msgstr ""
+msgstr "查看订阅中的零件"
 
-#: common/models.py:2079
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
-msgstr ""
+msgstr "在主页上显示订阅中的零件"
 
-#: common/models.py:2084
+#: common/models.py:2136
 msgid "Show subscribed categories"
-msgstr ""
+msgstr "查看订阅中的类别"
 
-#: common/models.py:2085
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
-msgstr ""
+msgstr "在主页上显示订阅中的零件类别"
 
-#: common/models.py:2090
+#: common/models.py:2142
 msgid "Show latest parts"
-msgstr ""
+msgstr "显示最近零件"
 
-#: common/models.py:2091
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
-msgstr ""
+msgstr "在主页上显示最近零件"
 
-#: common/models.py:2096
-msgid "Show unvalidated BOMs"
-msgstr ""
+#: common/models.py:2148
+msgid "Show invalid BOMs"
+msgstr "显示已验证的物料清单"
 
-#: common/models.py:2097
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
-msgstr ""
+msgstr "在主页上显示待验证的物料清单"
 
-#: common/models.py:2102
+#: common/models.py:2154
 msgid "Show recent stock changes"
-msgstr ""
+msgstr "显示最近的库存变化"
 
-#: common/models.py:2103
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
-msgstr ""
+msgstr "在主页显示最近更改的库存项"
 
-#: common/models.py:2108
+#: common/models.py:2160
 msgid "Show low stock"
-msgstr ""
+msgstr "显示低库存"
 
-#: common/models.py:2109
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
-msgstr ""
+msgstr "在主页上显示低库存项"
 
-#: common/models.py:2114
+#: common/models.py:2166
 msgid "Show depleted stock"
-msgstr ""
+msgstr "显示已耗尽的库存"
 
-#: common/models.py:2115
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
-msgstr ""
+msgstr "在主页上显示耗尽的库存项"
 
-#: common/models.py:2120
+#: common/models.py:2172
 msgid "Show needed stock"
-msgstr ""
+msgstr "显示所需库存"
 
-#: common/models.py:2121
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
-msgstr ""
+msgstr "在主页上显示生产所需的库存项"
 
-#: common/models.py:2126
+#: common/models.py:2178
 msgid "Show expired stock"
-msgstr ""
+msgstr "显示过期库存"
 
-#: common/models.py:2127
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
-msgstr ""
+msgstr "在主页上显示过期的库存项"
 
-#: common/models.py:2132
+#: common/models.py:2184
 msgid "Show stale stock"
-msgstr ""
+msgstr "显示过期库存"
 
-#: common/models.py:2133
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
-msgstr ""
+msgstr "在主页上显示过期的库存项"
 
-#: common/models.py:2138
+#: common/models.py:2190
 msgid "Show pending builds"
-msgstr ""
+msgstr "显示待定的生产"
 
-#: common/models.py:2139
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
-msgstr ""
+msgstr "在主页上显示待定的生产"
 
-#: common/models.py:2144
+#: common/models.py:2196
 msgid "Show overdue builds"
-msgstr ""
+msgstr "显示逾期生产"
 
-#: common/models.py:2145
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
-msgstr ""
+msgstr "在主页上显示逾期的生产"
 
-#: common/models.py:2150
+#: common/models.py:2202
 msgid "Show outstanding POs"
-msgstr ""
+msgstr "显示未完成的采购订单"
 
-#: common/models.py:2151
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
-msgstr ""
+msgstr "在主页上显示未完成的采购订单"
 
-#: common/models.py:2156
+#: common/models.py:2208
 msgid "Show overdue POs"
-msgstr ""
+msgstr "显示过期的采购订单"
 
-#: common/models.py:2157
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
-msgstr ""
+msgstr "在首页显示逾期的采购订单"
 
-#: common/models.py:2162
+#: common/models.py:2214
 msgid "Show outstanding SOs"
-msgstr ""
+msgstr "显示未完成的销售订单"
 
-#: common/models.py:2163
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
-msgstr ""
+msgstr "在主页上显示未完成的销售订单"
 
-#: common/models.py:2168
+#: common/models.py:2220
 msgid "Show overdue SOs"
-msgstr ""
+msgstr "显示逾期的销售订单"
 
-#: common/models.py:2169
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
-msgstr ""
+msgstr "在主页上显示逾期的销售订单"
 
-#: common/models.py:2174
+#: common/models.py:2226
 msgid "Show pending SO shipments"
-msgstr ""
+msgstr "显示待配送的销售订单"
 
-#: common/models.py:2175
+#: common/models.py:2227
 msgid "Show pending SO shipments on the homepage"
-msgstr ""
+msgstr "在主页上显示待配送的销售订单"
 
-#: common/models.py:2180
+#: common/models.py:2232
 msgid "Show News"
-msgstr ""
+msgstr "显示新消息"
 
-#: common/models.py:2181
+#: common/models.py:2233
 msgid "Show news on the homepage"
-msgstr ""
+msgstr "在主页上显示新消息"
 
-#: common/models.py:2186
+#: common/models.py:2238
 msgid "Inline label display"
-msgstr ""
+msgstr "内嵌标签显示"
 
-#: common/models.py:2188
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
-msgstr ""
+msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载"
 
-#: common/models.py:2194
+#: common/models.py:2246
 msgid "Default label printer"
-msgstr ""
+msgstr "默认的标签打印机"
 
-#: common/models.py:2196
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
-msgstr ""
+msgstr "配置默认标签打印机"
 
-#: common/models.py:2202
+#: common/models.py:2254
 msgid "Inline report display"
-msgstr ""
+msgstr "内嵌报表显示"
 
-#: common/models.py:2204
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
-msgstr ""
+msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载"
 
-#: common/models.py:2210
+#: common/models.py:2262
 msgid "Search Parts"
-msgstr ""
+msgstr "搜索零件"
 
-#: common/models.py:2211
+#: common/models.py:2263
 msgid "Display parts in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中显示零件"
 
-#: common/models.py:2216
+#: common/models.py:2268
 msgid "Search Supplier Parts"
-msgstr ""
+msgstr "搜索供应商零件"
 
-#: common/models.py:2217
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中显示供应商零件"
 
-#: common/models.py:2222
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
-msgstr ""
+msgstr "搜索制造商零件"
 
-#: common/models.py:2223
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中显示制造商零件"
 
-#: common/models.py:2228
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
-msgstr ""
+msgstr "隐藏未激活零件"
 
-#: common/models.py:2229
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
-msgstr ""
+msgstr "从搜索预览窗口中排除非激活零件"
 
-#: common/models.py:2234
+#: common/models.py:2286
 msgid "Search Categories"
-msgstr ""
+msgstr "搜索类别"
 
-#: common/models.py:2235
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中显示零件类别"
 
-#: common/models.py:2240
+#: common/models.py:2292
 msgid "Search Stock"
-msgstr ""
+msgstr "搜索库存"
 
-#: common/models.py:2241
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中显示库存项"
 
-#: common/models.py:2246
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
-msgstr ""
+msgstr "隐藏不可用的库存项"
 
-#: common/models.py:2248
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中排除不可用的库存项"
 
-#: common/models.py:2254
+#: common/models.py:2306
 msgid "Search Locations"
-msgstr ""
+msgstr "搜索位置"
 
-#: common/models.py:2255
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中显示库存地点"
 
-#: common/models.py:2260
+#: common/models.py:2312
 msgid "Search Companies"
-msgstr ""
+msgstr "搜索公司"
 
-#: common/models.py:2261
+#: common/models.py:2313
 msgid "Display companies in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中显示公司"
 
-#: common/models.py:2266
+#: common/models.py:2318
 msgid "Search Build Orders"
-msgstr ""
+msgstr "搜索生产订单"
 
-#: common/models.py:2267
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中显示生产订单"
 
-#: common/models.py:2272
+#: common/models.py:2324
 msgid "Search Purchase Orders"
-msgstr ""
+msgstr "搜索采购订单"
 
-#: common/models.py:2273
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中显示采购订单"
 
-#: common/models.py:2278
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
-msgstr ""
+msgstr "排除未激活的采购订单"
 
-#: common/models.py:2280
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
-msgstr ""
+msgstr "从搜索预览窗口排除未激活的采购订单"
 
-#: common/models.py:2286
+#: common/models.py:2338
 msgid "Search Sales Orders"
-msgstr ""
+msgstr "搜索销售订单"
 
-#: common/models.py:2287
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口显示销售订单"
 
-#: common/models.py:2292
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
-msgstr ""
+msgstr "排除未激活的销售订单"
 
-#: common/models.py:2294
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
-msgstr ""
+msgstr "从搜索预览窗口排除未激活销售订单"
 
-#: common/models.py:2300
+#: common/models.py:2352
 msgid "Search Return Orders"
-msgstr ""
+msgstr "搜索退货订单"
 
-#: common/models.py:2301
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
-msgstr ""
+msgstr "在搜索预览窗口中显示退货订单"
 
-#: common/models.py:2306
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
-msgstr ""
+msgstr "排除未激活退货订单"
 
-#: common/models.py:2308
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
-msgstr ""
+msgstr "从搜索预览窗口排除未激活退货订单"
 
-#: common/models.py:2314
+#: common/models.py:2366
 msgid "Search Preview Results"
-msgstr ""
+msgstr "搜索预览结果"
 
-#: common/models.py:2316
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
-msgstr ""
+msgstr "搜索预览窗口中各部分显示的结果数"
 
-#: common/models.py:2322
+#: common/models.py:2374
 msgid "Regex Search"
-msgstr ""
+msgstr "正则表达式搜索"
 
-#: common/models.py:2323
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
-msgstr ""
+msgstr "在搜索查询中启用正则表达式"
 
-#: common/models.py:2328
+#: common/models.py:2380
 msgid "Whole Word Search"
-msgstr ""
+msgstr "全词搜索"
 
-#: common/models.py:2329
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
-msgstr ""
+msgstr "搜索查询返回完整单词匹配结果"
 
-#: common/models.py:2334
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
-msgstr ""
+msgstr "在表格中显示数量"
 
-#: common/models.py:2335
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
-msgstr ""
+msgstr "在某些表格中显示可用的零件数量"
 
-#: common/models.py:2340
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
-msgstr ""
+msgstr "Escape 键关闭表单"
 
-#: common/models.py:2341
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
-msgstr ""
+msgstr "使用 escape 键关闭表单"
 
-#: common/models.py:2346
+#: common/models.py:2398
 msgid "Fixed Navbar"
-msgstr ""
+msgstr "固定导航栏"
 
-#: common/models.py:2347
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
+msgstr "导航栏位置固定为屏幕顶部"
 
-#: common/models.py:2352
+#: common/models.py:2404
 msgid "Date Format"
-msgstr ""
+msgstr "日期格式"
 
-#: common/models.py:2353
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
-msgstr ""
+msgstr "首选显示日期格式"
 
-#: common/models.py:2366 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
-msgstr ""
+msgstr "零件排产"
 
-#: common/models.py:2367
+#: common/models.py:2419
 msgid "Display part scheduling information"
-msgstr ""
+msgstr "显示零件计划信息"
 
-#: common/models.py:2372 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
-msgstr ""
+msgstr "零件盘点"
 
-#: common/models.py:2374
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
-msgstr ""
+msgstr "显示零件盘点信息 (如果盘点功能已启用)"
 
-#: common/models.py:2380
+#: common/models.py:2432
 msgid "Table String Length"
-msgstr ""
+msgstr "表字符串长度"
 
-#: common/models.py:2382
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
-msgstr ""
+msgstr "表视图中显示字符串最大长度"
 
-#: common/models.py:2388
+#: common/models.py:2440
 msgid "Default part label template"
-msgstr ""
+msgstr "默认零件标签模板"
 
-#: common/models.py:2389
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
-msgstr ""
+msgstr "自动选择零件标签模板"
 
-#: common/models.py:2394
+#: common/models.py:2446
 msgid "Default stock item template"
-msgstr ""
+msgstr "默认库存项模板"
 
-#: common/models.py:2396
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
-msgstr ""
+msgstr "自动选择库存项标签模板"
 
-#: common/models.py:2402
+#: common/models.py:2454
 msgid "Default stock location label template"
-msgstr ""
+msgstr "默认库存地点标签模板"
 
-#: common/models.py:2404
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
-msgstr ""
+msgstr "自动选择库存地点标签模板"
 
-#: common/models.py:2410
+#: common/models.py:2462
+msgid "Default build line label template"
+msgstr "默认生产线标签模板"
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr "自动选择的生产线标签模板"
+
+#: common/models.py:2470
 msgid "Receive error reports"
-msgstr ""
+msgstr "接收错误报告"
 
-#: common/models.py:2411
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
-msgstr ""
+msgstr "接收系统错误的通知"
 
-#: common/models.py:2416
+#: common/models.py:2476
 msgid "Last used printing machines"
-msgstr ""
+msgstr "最近使用的打印机"
 
-#: common/models.py:2417
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
-msgstr ""
+msgstr "为用户保存最近使用的打印机"
 
-#: common/models.py:2460
+#: common/models.py:2520
 msgid "Price break quantity"
-msgstr ""
+msgstr "批发价数量"
 
-#: common/models.py:2467 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
-msgstr ""
+msgstr "价格"
 
-#: common/models.py:2468
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
-msgstr ""
+msgstr "指定数量的单价"
 
-#: common/models.py:2639 common/models.py:2824
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
-msgstr ""
+msgstr "端点"
 
-#: common/models.py:2640
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
-msgstr ""
+msgstr "接收此 Webhook 的端点"
 
-#: common/models.py:2650
+#: common/models.py:2710
 msgid "Name for this webhook"
-msgstr ""
+msgstr "此Webhook 的名称"
 
-#: common/models.py:2654 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
-msgstr ""
+msgstr "激活"
 
-#: common/models.py:2654
+#: common/models.py:2714
 msgid "Is this webhook active"
-msgstr ""
+msgstr "此 Webhook 是否激活"
 
-#: common/models.py:2670 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
-msgstr ""
+msgstr "令牌"
 
-#: common/models.py:2671
+#: common/models.py:2731
 msgid "Token for access"
-msgstr ""
+msgstr "使用令牌"
 
-#: common/models.py:2679
+#: common/models.py:2739
 msgid "Secret"
-msgstr ""
+msgstr "安全码 (Secret)"
 
-#: common/models.py:2680
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
-msgstr ""
+msgstr "HMAC共享密钥"
 
-#: common/models.py:2788
+#: common/models.py:2848
 msgid "Message ID"
-msgstr ""
+msgstr "消息ID"
 
-#: common/models.py:2789
+#: common/models.py:2849
 msgid "Unique identifier for this message"
-msgstr ""
+msgstr "该消息的唯一标识符"
 
-#: common/models.py:2797
+#: common/models.py:2857
 msgid "Host"
-msgstr ""
+msgstr "主机"
 
-#: common/models.py:2798
+#: common/models.py:2858
 msgid "Host from which this message was received"
-msgstr ""
+msgstr "收到此消息的主机"
 
-#: common/models.py:2806
+#: common/models.py:2866
 msgid "Header"
-msgstr ""
+msgstr "表头"
 
-#: common/models.py:2807
+#: common/models.py:2867
 msgid "Header of this message"
-msgstr ""
+msgstr "此消息的标题"
 
-#: common/models.py:2814
+#: common/models.py:2874
 msgid "Body"
-msgstr ""
+msgstr "正文"
 
-#: common/models.py:2815
+#: common/models.py:2875
 msgid "Body of this message"
-msgstr ""
+msgstr "此消息的正文"
 
-#: common/models.py:2825
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
-msgstr ""
+msgstr "接收该信息的端点"
 
-#: common/models.py:2830
+#: common/models.py:2890
 msgid "Worked on"
-msgstr ""
+msgstr "工作于"
 
-#: common/models.py:2831
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
-msgstr ""
+msgstr "关于此信息的工作是否已完成?"
 
-#: common/models.py:2957
+#: common/models.py:3017
 msgid "Id"
-msgstr ""
+msgstr "ID"
 
-#: common/models.py:2959 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
-msgstr ""
+msgstr "标题"
 
-#: common/models.py:2963 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
-msgstr ""
+msgstr "已发布"
 
-#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
-msgstr ""
+msgstr "作者"
 
-#: common/models.py:2967 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
-msgstr ""
+msgstr "概述"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Read"
-msgstr ""
+msgstr "读取"
 
-#: common/models.py:2970
+#: common/models.py:3030
 msgid "Was this news item read?"
-msgstr ""
+msgstr "这条消息是否已读?"
 
-#: common/models.py:2987 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3664,136 +3686,136 @@ msgstr ""
 #: templates/hover_image.html:7 templates/hover_image.html:9
 #: templates/modals.html:6
 msgid "Image"
-msgstr ""
+msgstr "图片"
 
-#: common/models.py:2987
+#: common/models.py:3047
 msgid "Image file"
-msgstr ""
+msgstr "图片文件"
 
-#: common/models.py:3029
+#: common/models.py:3089
 msgid "Unit name must be a valid identifier"
-msgstr ""
+msgstr "单位名称必须是有效的标识符"
 
-#: common/models.py:3048
+#: common/models.py:3108
 msgid "Unit name"
-msgstr ""
+msgstr "单位名称"
 
-#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
-msgstr ""
+msgstr "符号:"
 
-#: common/models.py:3056
+#: common/models.py:3116
 msgid "Optional unit symbol"
-msgstr ""
+msgstr "可选的单位符号"
 
-#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 msgid "Definition"
-msgstr ""
+msgstr "定义"
 
-#: common/models.py:3064
+#: common/models.py:3124
 msgid "Unit definition"
-msgstr ""
+msgstr "单位定义"
 
 #: common/notifications.py:314
 #, python-brace-format
 msgid "New {verbose_name}"
-msgstr ""
+msgstr "新建{verbose_name}"
 
 #: common/notifications.py:316
 msgid "A new order has been created and assigned to you"
-msgstr ""
+msgstr "有新订单被创建并分配给您"
 
 #: common/notifications.py:322
 #, python-brace-format
 msgid "{verbose_name} canceled"
-msgstr ""
+msgstr "{verbose_name} 已取消"
 
 #: common/notifications.py:324
 msgid "A order that is assigned to you was canceled"
-msgstr ""
+msgstr "已取消分配给您的订单"
 
 #: common/notifications.py:330 common/notifications.py:337
 msgid "Items Received"
-msgstr ""
+msgstr "收到的项目"
 
 #: common/notifications.py:332
 msgid "Items have been received against a purchase order"
-msgstr ""
+msgstr "已收到订单中的项目"
 
 #: common/notifications.py:339
 msgid "Items have been received against a return order"
-msgstr ""
+msgstr "已收到退货订单中的项目"
 
 #: common/notifications.py:457
 msgid "Error raised by plugin"
-msgstr ""
+msgstr "插件引起错误"
 
 #: common/serializers.py:333
 msgid "Is Running"
-msgstr ""
+msgstr "正在运行"
 
 #: common/serializers.py:339
 msgid "Pending Tasks"
-msgstr ""
+msgstr "待完成任务"
 
 #: common/serializers.py:345
 msgid "Scheduled Tasks"
-msgstr ""
+msgstr "计划任务"
 
 #: common/serializers.py:351
 msgid "Failed Tasks"
-msgstr ""
+msgstr "失败任务"
 
 #: common/serializers.py:366
 msgid "Task ID"
-msgstr ""
+msgstr "任务ID"
 
 #: common/serializers.py:366
 msgid "Unique task ID"
-msgstr ""
+msgstr "唯一任务ID"
 
 #: common/serializers.py:368
 msgid "Lock"
-msgstr ""
+msgstr "锁定"
 
 #: common/serializers.py:368
 msgid "Lock time"
-msgstr ""
+msgstr "锁定时间"
 
 #: common/serializers.py:370
 msgid "Task name"
-msgstr ""
+msgstr "任务名称"
 
 #: common/serializers.py:372
 msgid "Function"
-msgstr ""
+msgstr "功能"
 
 #: common/serializers.py:372
 msgid "Function name"
-msgstr ""
+msgstr "功能名称"
 
 #: common/serializers.py:374
 msgid "Arguments"
-msgstr ""
+msgstr "参数"
 
 #: common/serializers.py:374
 msgid "Task arguments"
-msgstr ""
+msgstr "任务参数"
 
 #: common/serializers.py:377
 msgid "Keyword Arguments"
-msgstr ""
+msgstr "关键字参数"
 
 #: common/serializers.py:377
 msgid "Task keyword arguments"
-msgstr ""
+msgstr "任务关键字参数"
 
 #: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51
 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118
 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109
 #: templates/patterns/wizard/upload.html:37
 msgid "Upload File"
-msgstr ""
+msgstr "上传文件"
 
 #: common/views.py:84 order/templates/order/order_wizard/match_fields.html:52
 #: order/views.py:119
@@ -3801,19 +3823,19 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:52 part/views.py:110
 #: templates/patterns/wizard/match_fields.html:51
 msgid "Match Fields"
-msgstr ""
+msgstr "匹配字段"
 
 #: common/views.py:84
 msgid "Match Items"
-msgstr ""
+msgstr "匹配项"
 
 #: common/views.py:401
 msgid "Fields matching failed"
-msgstr ""
+msgstr "字段匹配失败"
 
 #: common/views.py:464
 msgid "Parts imported"
-msgstr ""
+msgstr "已导入零件"
 
 #: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
 #: order/templates/order/order_wizard/match_parts.html:19
@@ -3824,184 +3846,184 @@ msgstr ""
 #: templates/patterns/wizard/match_fields.html:26
 #: templates/patterns/wizard/upload.html:35
 msgid "Previous Step"
-msgstr ""
+msgstr "上一步"
 
 #: company/models.py:113
 msgid "Company description"
-msgstr ""
+msgstr "公司简介"
 
 #: company/models.py:114
 msgid "Description of the company"
-msgstr ""
+msgstr "公司简介"
 
 #: company/models.py:119 company/templates/company/company_base.html:100
 #: templates/InvenTree/settings/plugin_settings.html:54
 #: templates/js/translated/company.js:522
 msgid "Website"
-msgstr ""
+msgstr "网站"
 
 #: company/models.py:119
 msgid "Company website URL"
-msgstr ""
+msgstr "公司网站"
 
 #: company/models.py:124
 msgid "Phone number"
-msgstr ""
+msgstr "电话号码"
 
 #: company/models.py:126
 msgid "Contact phone number"
-msgstr ""
+msgstr "联系电话"
 
 #: company/models.py:133
 msgid "Contact email address"
-msgstr ""
+msgstr "联系人电子邮件"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
-msgstr ""
+msgstr "联系人"
 
 #: company/models.py:140
 msgid "Point of contact"
-msgstr ""
+msgstr "联络点"
 
 #: company/models.py:146
 msgid "Link to external company information"
-msgstr ""
+msgstr "链接到外部公司信息"
 
 #: company/models.py:160
 msgid "is customer"
-msgstr ""
+msgstr "是客户"
 
 #: company/models.py:161
 msgid "Do you sell items to this company?"
-msgstr ""
+msgstr "您是否向该公司出售零件?"
 
 #: company/models.py:166
 msgid "is supplier"
-msgstr ""
+msgstr "是供应商"
 
 #: company/models.py:167
 msgid "Do you purchase items from this company?"
-msgstr ""
+msgstr "您是否从该公司采购零件?"
 
 #: company/models.py:172
 msgid "is manufacturer"
-msgstr ""
+msgstr "是制造商"
 
 #: company/models.py:173
 msgid "Does this company manufacture parts?"
-msgstr ""
+msgstr "该公司制造零件吗?"
 
 #: company/models.py:181
 msgid "Default currency used for this company"
-msgstr ""
+msgstr "该公司使用的默认货币"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
-msgstr ""
+msgstr "公司"
 
 #: company/models.py:378
 msgid "Select company"
-msgstr ""
+msgstr "选择公司"
 
 #: company/models.py:383
 msgid "Address title"
-msgstr ""
+msgstr "地址标题"
 
 #: company/models.py:384
 msgid "Title describing the address entry"
-msgstr ""
+msgstr "描述地址条目的标题"
 
 #: company/models.py:390
 msgid "Primary address"
-msgstr ""
+msgstr "主要地址"
 
 #: company/models.py:391
 msgid "Set as primary address"
-msgstr ""
+msgstr "设为主要地址"
 
 #: company/models.py:396 templates/js/translated/company.js:904
 #: templates/js/translated/company.js:961
 msgid "Line 1"
-msgstr ""
+msgstr "第1行"
 
 #: company/models.py:397
 msgid "Address line 1"
-msgstr ""
+msgstr "地址行1"
 
 #: company/models.py:403 templates/js/translated/company.js:905
 #: templates/js/translated/company.js:967
 msgid "Line 2"
-msgstr ""
+msgstr "第2行"
 
 #: company/models.py:404
 msgid "Address line 2"
-msgstr ""
+msgstr "地址行2"
 
 #: company/models.py:410 company/models.py:411
 #: templates/js/translated/company.js:973
 msgid "Postal code"
-msgstr ""
+msgstr "邮政编码"
 
 #: company/models.py:417
 msgid "City/Region"
-msgstr ""
+msgstr "城市/地区"
 
 #: company/models.py:418
 msgid "Postal code city/region"
-msgstr ""
+msgstr "邮政编码城市/地区"
 
 #: company/models.py:424
 msgid "State/Province"
-msgstr ""
+msgstr "州/省"
 
 #: company/models.py:425
 msgid "State or province"
-msgstr ""
+msgstr "州或省"
 
 #: company/models.py:431 templates/js/translated/company.js:991
 msgid "Country"
-msgstr ""
+msgstr "国家/地区"
 
 #: company/models.py:432
 msgid "Address country"
-msgstr ""
+msgstr "地址所在国家"
 
 #: company/models.py:438
 msgid "Courier shipping notes"
-msgstr ""
+msgstr "快递送货便笺"
 
 #: company/models.py:439
 msgid "Notes for shipping courier"
-msgstr ""
+msgstr "配送接受人的备注"
 
 #: company/models.py:445
 msgid "Internal shipping notes"
-msgstr ""
+msgstr "内部配送笔记"
 
 #: company/models.py:446
 msgid "Shipping notes for internal use"
-msgstr ""
+msgstr "供内部使用的配送便笺"
 
 #: company/models.py:453
 msgid "Link to address information (external)"
-msgstr ""
+msgstr "链接地址信息 (外部)"
 
 #: company/models.py:484 company/models.py:785 stock/models.py:754
 #: stock/serializers.py:266 stock/templates/stock/item_base.html:142
 #: templates/js/translated/bom.js:622
 msgid "Base Part"
-msgstr ""
+msgstr "基础零件"
 
 #: company/models.py:486 company/models.py:787
 msgid "Select part"
-msgstr ""
+msgstr "选择零件"
 
 #: company/models.py:495 company/templates/company/company_base.html:76
 #: company/templates/company/manufacturer_part.html:90
@@ -4013,11 +4035,11 @@ msgstr ""
 #: templates/js/translated/company.js:1601
 #: templates/js/translated/table_filters.js:796
 msgid "Manufacturer"
-msgstr ""
+msgstr "制造商"
 
 #: company/models.py:496
 msgid "Select manufacturer"
-msgstr ""
+msgstr "选择制造商"
 
 #: company/models.py:502 company/templates/company/manufacturer_part.html:101
 #: company/templates/company/supplier_part.html:153 part/serializers.py:525
@@ -4028,30 +4050,30 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:1852
 #: templates/js/translated/purchase_order.js:2054
 msgid "MPN"
-msgstr ""
+msgstr "制造商零件编号 (MPN)"
 
 #: company/models.py:503
 msgid "Manufacturer Part Number"
-msgstr ""
+msgstr "制造商零件编号"
 
 #: company/models.py:510
 msgid "URL for external manufacturer part link"
-msgstr ""
+msgstr "外部制造商零件链接的 URL"
 
 #: company/models.py:518
 msgid "Manufacturer part description"
-msgstr ""
+msgstr "制造商零件描述"
 
 #: company/models.py:575 company/models.py:602 company/models.py:811
 #: company/templates/company/manufacturer_part.html:7
 #: company/templates/company/manufacturer_part.html:24
 #: stock/templates/stock/item_base.html:217
 msgid "Manufacturer Part"
-msgstr ""
+msgstr "制造商零件"
 
 #: company/models.py:609
 msgid "Parameter name"
-msgstr ""
+msgstr "参数名称"
 
 #: company/models.py:615
 #: report/templates/report/inventree_test_report_base.html:104
@@ -4059,38 +4081,38 @@ msgstr ""
 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
 #: templates/js/translated/stock.js:1519
 msgid "Value"
-msgstr ""
+msgstr "数值"
 
 #: company/models.py:616
 msgid "Parameter value"
-msgstr ""
+msgstr "参数值"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
 msgid "Units"
-msgstr ""
+msgstr "单位"
 
 #: company/models.py:624
 msgid "Parameter units"
-msgstr ""
+msgstr "参数单位"
 
 #: company/models.py:725
 msgid "Pack units must be compatible with the base part units"
-msgstr ""
+msgstr "包装单位必须与基础零件单位兼容"
 
 #: company/models.py:732
 msgid "Pack units must be greater than zero"
-msgstr ""
+msgstr "包装单位必须大于 0"
 
 #: company/models.py:746
 msgid "Linked manufacturer part must reference the same base part"
-msgstr ""
+msgstr "链接的制造商零件必须引用相同的基础零件"
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4103,30 +4125,30 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:1690
 #: templates/js/translated/table_filters.js:800
 msgid "Supplier"
-msgstr ""
+msgstr "供应商"
 
 #: company/models.py:796
 msgid "Select supplier"
-msgstr ""
+msgstr "选择供应商"
 
 #: company/models.py:802 part/serializers.py:510
 msgid "Supplier stock keeping unit"
-msgstr ""
+msgstr "供应商库存量单位"
 
 #: company/models.py:812
 msgid "Select manufacturer part"
-msgstr ""
+msgstr "选择制造商零件"
 
 #: company/models.py:819
 msgid "URL for external supplier part link"
-msgstr ""
+msgstr "外部供应商零件链接URL"
 
 #: company/models.py:827
 msgid "Supplier part description"
-msgstr ""
+msgstr "供应商零件描述"
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
@@ -4134,15 +4156,15 @@ msgstr ""
 #: report/templates/report/inventree_so_report_base.html:32
 #: stock/serializers.py:579
 msgid "Note"
-msgstr ""
+msgstr "备注"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
-msgstr ""
+msgstr "基本费用"
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
-msgstr ""
+msgstr "最低收费(例如库存费)"
 
 #: company/models.py:851 company/templates/company/supplier_part.html:160
 #: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350
@@ -4150,11 +4172,11 @@ msgstr ""
 #: templates/js/translated/company.js:1636
 #: templates/js/translated/stock.js:2423
 msgid "Packaging"
-msgstr ""
+msgstr "打包"
 
 #: company/models.py:852
 msgid "Part packaging"
-msgstr ""
+msgstr "零件打包"
 
 #: company/models.py:857 templates/js/translated/company.js:1641
 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877
@@ -4164,62 +4186,62 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:2085
 #: templates/js/translated/purchase_order.js:2102
 msgid "Pack Quantity"
-msgstr ""
+msgstr "包装数量"
 
 #: company/models.py:859
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
-msgstr ""
+msgstr "一个包装所包含的零件个数。留空用于单独包装。"
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
-msgstr ""
+msgstr "多个"
 
 #: company/models.py:879
 msgid "Order multiple"
-msgstr ""
+msgstr "订购多个"
 
 #: company/models.py:891
 msgid "Quantity available from supplier"
-msgstr ""
+msgstr "供应商的存货数量"
 
 #: company/models.py:897
 msgid "Availability Updated"
-msgstr ""
+msgstr "可用性更新成功"
 
 #: company/models.py:898
 msgid "Date of last update of availability data"
-msgstr ""
+msgstr "可用数据最后更新日期"
 
 #: company/serializers.py:155
 msgid "Default currency used for this supplier"
-msgstr ""
+msgstr "该公司使用的默认货币"
 
 #: company/templates/company/company_base.html:21
 #: templates/js/translated/purchase_order.js:242
 msgid "Create Purchase Order"
-msgstr ""
+msgstr "创建采购订单"
 
 #: company/templates/company/company_base.html:27
 msgid "Company actions"
-msgstr ""
+msgstr "公司操作"
 
 #: company/templates/company/company_base.html:32
 msgid "Edit company information"
-msgstr ""
+msgstr "编辑公司信息"
 
 #: company/templates/company/company_base.html:33
 #: templates/js/translated/company.js:444
 msgid "Edit Company"
-msgstr ""
+msgstr "编辑公司信息"
 
 #: company/templates/company/company_base.html:37
 msgid "Delete company"
-msgstr ""
+msgstr "删除该公司"
 
 #: company/templates/company/company_base.html:38
 #: company/templates/company/company_base.html:162
 msgid "Delete Company"
-msgstr ""
+msgstr "删除该公司"
 
 #: company/templates/company/company_base.html:47
 #: company/templates/company/manufacturer_part.html:51
@@ -4231,25 +4253,25 @@ msgstr ""
 #: report/templates/report/inventree_test_report_base.html:84
 #: report/templates/report/inventree_test_report_base.html:163
 msgid "Part image"
-msgstr ""
+msgstr "零件图片"
 
 #: company/templates/company/company_base.html:55
 #: part/templates/part/part_thumb.html:12
 msgid "Upload new image"
-msgstr ""
+msgstr "上传新图片"
 
 #: company/templates/company/company_base.html:58
 #: part/templates/part/part_thumb.html:14
 msgid "Download image from URL"
-msgstr ""
+msgstr "从 URL 下载图片"
 
 #: company/templates/company/company_base.html:60
 #: part/templates/part/part_thumb.html:16
 msgid "Delete image"
-msgstr ""
+msgstr "删除图片"
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
 #: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
@@ -4260,81 +4282,81 @@ msgstr ""
 #: templates/js/translated/stock.js:2959
 #: templates/js/translated/table_filters.js:804
 msgid "Customer"
-msgstr ""
+msgstr "客户"
 
 #: company/templates/company/company_base.html:111
 msgid "Uses default currency"
-msgstr ""
+msgstr "使用默认货币"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
 msgid "Address"
-msgstr ""
+msgstr "地址"
 
 #: company/templates/company/company_base.html:125
 msgid "Phone"
-msgstr ""
+msgstr "电话"
 
 #: company/templates/company/company_base.html:205
 #: part/templates/part/part_base.html:528
 msgid "Remove Image"
-msgstr ""
+msgstr "删除图片"
 
 #: company/templates/company/company_base.html:206
 msgid "Remove associated image from this company"
-msgstr ""
+msgstr "删除与公司关联的图片"
 
 #: company/templates/company/company_base.html:208
 #: part/templates/part/part_base.html:531
 #: templates/InvenTree/settings/user.html:88
 #: templates/InvenTree/settings/user_sso.html:43
 msgid "Remove"
-msgstr ""
+msgstr "移除"
 
 #: company/templates/company/company_base.html:237
 #: part/templates/part/part_base.html:560
 msgid "Upload Image"
-msgstr ""
+msgstr "上传图片"
 
 #: company/templates/company/company_base.html:252
 #: part/templates/part/part_base.html:614
 msgid "Download Image"
-msgstr ""
+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:147
 msgid "Supplier Parts"
-msgstr ""
+msgstr "供应商零件"
 
 #: company/templates/company/detail.html:19
 msgid "Create new supplier part"
-msgstr ""
+msgstr "创建新的供应商零件"
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:123
 #: part/templates/part/detail.html:356
 msgid "New Supplier Part"
-msgstr ""
+msgstr "新建供应商零件"
 
 #: company/templates/company/detail.html:41 templates/InvenTree/search.html:105
 #: templates/js/translated/search.js:151
 msgid "Manufacturer Parts"
-msgstr ""
+msgstr "制造商零件"
 
 #: company/templates/company/detail.html:45
 msgid "Create new manufacturer part"
-msgstr ""
+msgstr "新建制造商零件"
 
 #: company/templates/company/detail.html:46 part/templates/part/detail.html:376
 msgid "New Manufacturer Part"
-msgstr ""
+msgstr "新建制造商零件"
 
 #: company/templates/company/detail.html:65
 msgid "Supplier Stock"
-msgstr ""
+msgstr "供应商库存"
 
 #: company/templates/company/detail.html:75
 #: company/templates/company/sidebar.html:12
@@ -4346,19 +4368,19 @@ msgstr ""
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
-msgstr ""
+msgstr "采购订单"
 
 #: company/templates/company/detail.html:79
 #: order/templates/order/purchase_orders.html:17
 msgid "Create new purchase order"
-msgstr ""
+msgstr "新建采购订单"
 
 #: company/templates/company/detail.html:80
 #: order/templates/order/purchase_orders.html:18
 msgid "New Purchase Order"
-msgstr ""
+msgstr "新建采购订单"
 
 #: company/templates/company/detail.html:101
 #: company/templates/company/sidebar.html:21
@@ -4369,23 +4391,23 @@ msgstr ""
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
-msgstr "銷售訂單"
+msgstr "销售订单"
 
 #: company/templates/company/detail.html:105
 #: order/templates/order/sales_orders.html:20
 msgid "Create new sales order"
-msgstr ""
+msgstr "新建销售订单"
 
 #: company/templates/company/detail.html:106
 #: order/templates/order/sales_orders.html:21
 msgid "New Sales Order"
-msgstr ""
+msgstr "新建销售订单"
 
 #: company/templates/company/detail.html:126
 msgid "Assigned Stock"
-msgstr ""
+msgstr "已分配的库存"
 
 #: company/templates/company/detail.html:142
 #: company/templates/company/sidebar.html:29
@@ -4394,71 +4416,71 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 msgid "Return Orders"
-msgstr ""
+msgstr "退货订单"
 
 #: company/templates/company/detail.html:146
 #: order/templates/order/return_orders.html:20
 msgid "Create new return order"
-msgstr ""
+msgstr "创建新的退货订单"
 
 #: company/templates/company/detail.html:147
 #: order/templates/order/return_orders.html:21
 msgid "New Return Order"
-msgstr ""
+msgstr "新的退货订单"
 
 #: company/templates/company/detail.html:168
 msgid "Company Notes"
-msgstr ""
+msgstr "公司备注"
 
 #: company/templates/company/detail.html:183
 msgid "Company Contacts"
-msgstr ""
+msgstr "公司联系人"
 
 #: company/templates/company/detail.html:187
 #: company/templates/company/detail.html:188
 msgid "Add Contact"
-msgstr ""
+msgstr "添加联系人"
 
 #: company/templates/company/detail.html:206
 msgid "Company addresses"
-msgstr ""
+msgstr "公司地址"
 
 #: company/templates/company/detail.html:210
 #: company/templates/company/detail.html:211
 msgid "Add Address"
-msgstr ""
+msgstr "新增地址"
 
 #: company/templates/company/manufacturer_part.html:15 company/views.py:37
 #: templates/InvenTree/search.html:180 templates/navbar.html:49
 msgid "Manufacturers"
-msgstr ""
+msgstr "制造商"
 
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:227
 #: part/templates/part/detail.html:109 part/templates/part/part_base.html:83
 msgid "Order part"
-msgstr ""
+msgstr "订购零件"
 
 #: company/templates/company/manufacturer_part.html:39
 #: templates/js/translated/company.js:1333
 msgid "Edit manufacturer part"
-msgstr ""
+msgstr "编辑制造商零件"
 
 #: company/templates/company/manufacturer_part.html:43
 #: templates/js/translated/company.js:1334
 msgid "Delete manufacturer part"
-msgstr ""
+msgstr "删除生产商零件"
 
 #: company/templates/company/manufacturer_part.html:65
 #: company/templates/company/supplier_part.html:97
 msgid "Internal Part"
-msgstr ""
+msgstr "内部零件"
 
 #: company/templates/company/manufacturer_part.html:95
 msgid "No manufacturer information available"
-msgstr ""
+msgstr "无可用供应商信息"
 
 #: company/templates/company/manufacturer_part.html:119
 #: company/templates/company/supplier_part.html:15 company/views.py:31
@@ -4466,50 +4488,50 @@ msgstr ""
 #: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
 #: templates/navbar.html:48
 msgid "Suppliers"
-msgstr ""
+msgstr "供应商"
 
 #: company/templates/company/manufacturer_part.html:156
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:20
 #: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8
 msgid "Parameters"
-msgstr ""
+msgstr "参数"
 
 #: company/templates/company/manufacturer_part.html:160
 #: part/templates/part/detail.html:200
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part_parameters.html:24
 msgid "New Parameter"
-msgstr ""
+msgstr "新建参数"
 
 #: company/templates/company/manufacturer_part.html:206
 #: templates/js/translated/part.js:1422
 msgid "Add Parameter"
-msgstr ""
+msgstr "添加参数"
 
 #: company/templates/company/sidebar.html:6
 msgid "Manufactured Parts"
-msgstr ""
+msgstr "制造商零件"
 
 #: company/templates/company/sidebar.html:10
 msgid "Supplied Parts"
-msgstr ""
+msgstr "已供应零件"
 
 #: company/templates/company/sidebar.html:16
 msgid "Supplied Stock Items"
-msgstr ""
+msgstr "已提供的库存项"
 
 #: company/templates/company/sidebar.html:25
 msgid "Assigned Stock Items"
-msgstr ""
+msgstr "分配的库存项"
 
 #: company/templates/company/sidebar.html:33
 msgid "Contacts"
-msgstr ""
+msgstr "联系人"
 
 #: company/templates/company/sidebar.html:35
 msgid "Addresses"
-msgstr ""
+msgstr "地址"
 
 #: company/templates/company/supplier_part.html:7
 #: company/templates/company/supplier_part.html:24 stock/models.py:765
@@ -4518,48 +4540,48 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:752
 #: templates/js/translated/stock.js:2279
 msgid "Supplier Part"
-msgstr ""
+msgstr "供应商零件"
 
 #: company/templates/company/supplier_part.html:50
 #: templates/js/translated/company.js:1516
 msgid "Supplier part actions"
-msgstr ""
+msgstr "供应商零件操作"
 
 #: company/templates/company/supplier_part.html:55
 #: company/templates/company/supplier_part.html:56
 #: company/templates/company/supplier_part.html:228
 #: part/templates/part/detail.html:110
 msgid "Order Part"
-msgstr ""
+msgstr "订购零件"
 
 #: company/templates/company/supplier_part.html:60
 #: company/templates/company/supplier_part.html:61
 msgid "Update Availability"
-msgstr ""
+msgstr "更新可用性"
 
 #: company/templates/company/supplier_part.html:63
 #: company/templates/company/supplier_part.html:64
 #: templates/js/translated/company.js:294
 msgid "Edit Supplier Part"
-msgstr ""
+msgstr "编辑供应商零件"
 
 #: company/templates/company/supplier_part.html:68
 #: company/templates/company/supplier_part.html:69
 #: templates/js/translated/company.js:269
 msgid "Duplicate Supplier Part"
-msgstr ""
+msgstr "复制供应商零件"
 
 #: company/templates/company/supplier_part.html:73
 msgid "Delete Supplier Part"
-msgstr ""
+msgstr "删除供应商零件"
 
 #: company/templates/company/supplier_part.html:74
 msgid "Delete Supplier  Part"
-msgstr ""
+msgstr "删除供应商零件"
 
 #: company/templates/company/supplier_part.html:133
 msgid "No supplier information available"
-msgstr ""
+msgstr "没有可用的供应商信息"
 
 #: company/templates/company/supplier_part.html:139 part/bom.py:279
 #: part/bom.py:311 part/serializers.py:509
@@ -4568,48 +4590,48 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:1851
 #: templates/js/translated/purchase_order.js:2029
 msgid "SKU"
-msgstr ""
+msgstr "库存单位 (SKU)"
 
 #: company/templates/company/supplier_part.html:206
 msgid "Supplier Part Stock"
-msgstr ""
+msgstr "供应商零件库存"
 
 #: company/templates/company/supplier_part.html:209
 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:199
 msgid "Create new stock item"
-msgstr ""
+msgstr "创建新的库存项"
 
 #: company/templates/company/supplier_part.html:210
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:200
 #: templates/js/translated/stock.js:537
 msgid "New Stock Item"
-msgstr ""
+msgstr "新建库存项"
 
 #: company/templates/company/supplier_part.html:223
 msgid "Supplier Part Orders"
-msgstr ""
+msgstr "供应商零件订单"
 
 #: company/templates/company/supplier_part.html:246
 msgid "Pricing Information"
-msgstr ""
+msgstr "价格信息"
 
 #: company/templates/company/supplier_part.html:251
 #: templates/js/translated/company.js:398
 #: templates/js/translated/pricing.js:684
 msgid "Add Price Break"
-msgstr ""
+msgstr "新增批发价"
 
 #: company/templates/company/supplier_part.html:276
 msgid "Supplier Part QR Code"
-msgstr ""
+msgstr "供应商零件二维码"
 
 #: company/templates/company/supplier_part.html:287
 msgid "Link Barcode to Supplier Part"
-msgstr ""
+msgstr "链接条形码与供应商零件"
 
 #: company/templates/company/supplier_part.html:359
 msgid "Update Part Availability"
-msgstr ""
+msgstr "更新零件可用性"
 
 #: company/templates/company/supplier_part_sidebar.html:5
 #: part/serializers.py:818 part/stocktake.py:223
@@ -4622,217 +4644,217 @@ msgstr ""
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
 #: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
-#: users/models.py:193
+#: users/models.py:195
 msgid "Stock Items"
-msgstr ""
+msgstr "库存项"
 
 #: company/templates/company/supplier_part_sidebar.html:9
 msgid "Supplier Part Pricing"
-msgstr ""
+msgstr "供应商零件价格"
 
 #: company/views.py:32
 msgid "New Supplier"
-msgstr ""
+msgstr "新增供应商"
 
 #: company/views.py:38
 msgid "New Manufacturer"
-msgstr ""
+msgstr "新建制造商"
 
 #: company/views.py:43 templates/InvenTree/search.html:210
 #: templates/navbar.html:60
 msgid "Customers"
-msgstr ""
+msgstr "客户信息"
 
 #: company/views.py:44
 msgid "New Customer"
-msgstr ""
+msgstr "新建客户"
 
 #: company/views.py:51 templates/js/translated/search.js:192
 msgid "Companies"
-msgstr ""
+msgstr "公司"
 
 #: company/views.py:52
 msgid "New Company"
-msgstr ""
+msgstr "新建公司信息"
 
 #: label/api.py:247
 msgid "Error printing label"
-msgstr ""
+msgstr "打印标签出错"
 
 #: label/models.py:120
 msgid "Label name"
-msgstr ""
+msgstr "标签名称"
 
 #: label/models.py:128
 msgid "Label description"
-msgstr ""
+msgstr "标签说明"
 
 #: label/models.py:136
 msgid "Label"
-msgstr ""
+msgstr "标签"
 
 #: label/models.py:137
 msgid "Label template file"
-msgstr ""
+msgstr "标签模板文件"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
-msgstr ""
+msgstr "已启用"
 
 #: label/models.py:144
 msgid "Label template is enabled"
-msgstr ""
+msgstr "标签模板已启用"
 
 #: label/models.py:149
 msgid "Width [mm]"
-msgstr ""
+msgstr "宽度 [mm]"
 
 #: label/models.py:150
 msgid "Label width, specified in mm"
-msgstr ""
+msgstr "标注宽度,以毫米为单位。"
 
 #: label/models.py:156
 msgid "Height [mm]"
-msgstr ""
+msgstr "高度 [mm]"
 
 #: label/models.py:157
 msgid "Label height, specified in mm"
-msgstr ""
+msgstr "标注高度,以毫米为单位。"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
-msgstr ""
+msgstr "文件名样式"
 
 #: label/models.py:164
 msgid "Pattern for generating label filenames"
-msgstr ""
+msgstr "生成标签文件名模式"
 
 #: label/models.py:313 label/models.py:352 label/models.py:377
 #: label/models.py:412
 msgid "Query filters (comma-separated list of key=value pairs)"
-msgstr ""
+msgstr "查询筛选器 (逗号分隔的键值对列表)"
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
-msgstr ""
+msgstr "筛选器"
 
 #: label/templates/label/part/part_label.html:31
 #: label/templates/label/stockitem/qr.html:21
 #: label/templates/label/stocklocation/qr.html:20
 #: templates/allauth_2fa/setup.html:18
 msgid "QR Code"
-msgstr ""
+msgstr "二维码"
 
 #: label/templates/label/part/part_label_code128.html:31
 #: label/templates/label/stocklocation/qr_and_text.html:31
 #: templates/qr_code.html:7
 msgid "QR code"
-msgstr ""
+msgstr "二维码"
 
 #: machine/machine_types/label_printer.py:217
 msgid "Copies"
-msgstr ""
+msgstr "份数"
 
 #: machine/machine_types/label_printer.py:218
 msgid "Number of copies to print for each label"
-msgstr ""
+msgstr "每个标签要打印的份数"
 
 #: machine/machine_types/label_printer.py:233
 msgid "Connected"
-msgstr ""
+msgstr "已连接"
 
 #: machine/machine_types/label_printer.py:234 order/api.py:1461
 #: templates/js/translated/sales_order.js:1042
 msgid "Unknown"
-msgstr ""
+msgstr "未知"
 
 #: machine/machine_types/label_printer.py:235
 msgid "Printing"
-msgstr ""
+msgstr "打印中"
 
 #: machine/machine_types/label_printer.py:236
 msgid "No media"
-msgstr ""
+msgstr "无媒体 "
 
 #: machine/machine_types/label_printer.py:237
 msgid "Disconnected"
-msgstr ""
+msgstr "未连接"
 
 #: machine/machine_types/label_printer.py:244
 msgid "Label Printer"
-msgstr ""
+msgstr "标签打印机"
 
 #: machine/machine_types/label_printer.py:245
 msgid "Directly print labels for various items."
-msgstr ""
+msgstr "直接打印不同项目的标签。"
 
 #: machine/machine_types/label_printer.py:251
 msgid "Printer Location"
-msgstr ""
+msgstr "打印机位置"
 
 #: machine/machine_types/label_printer.py:252
 msgid "Scope the printer to a specific location"
-msgstr ""
+msgstr "将打印机定位到指定地点"
 
 #: machine/models.py:25
 msgid "Name of machine"
-msgstr ""
+msgstr "机器名称"
 
 #: machine/models.py:29
 msgid "Machine Type"
-msgstr ""
+msgstr "机器类型"
 
 #: machine/models.py:29
 msgid "Type of machine"
-msgstr ""
+msgstr "机器类型"
 
 #: machine/models.py:34 machine/models.py:146
 msgid "Driver"
-msgstr ""
+msgstr "驱动"
 
 #: machine/models.py:35
 msgid "Driver used for the machine"
-msgstr ""
+msgstr "机器使用的驱动程序"
 
 #: machine/models.py:39
 msgid "Machines can be disabled"
-msgstr ""
+msgstr "机器可以被禁用"
 
 #: machine/models.py:95
 msgid "Driver available"
-msgstr ""
+msgstr "可用驱动"
 
 #: machine/models.py:100
 msgid "No errors"
-msgstr ""
+msgstr "无错误"
 
 #: machine/models.py:105
 msgid "Initialized"
-msgstr ""
+msgstr "已初始化"
 
 #: machine/models.py:110
 msgid "Errors"
-msgstr ""
+msgstr "错误"
 
 #: machine/models.py:117
 msgid "Machine status"
-msgstr ""
+msgstr "机器状态"
 
 #: machine/models.py:145
 msgid "Machine"
-msgstr ""
+msgstr "机器"
 
 #: machine/models.py:151
 msgid "Machine Config"
-msgstr ""
+msgstr "机器配置"
 
 #: machine/models.py:156
 msgid "Config type"
-msgstr ""
+msgstr "配置类型"
 
 #: order/admin.py:30 order/models.py:89
 #: report/templates/report/inventree_po_report_base.html:31
@@ -4841,13 +4863,13 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:2126
 #: templates/js/translated/sales_order.js:1847
 msgid "Total Price"
-msgstr ""
+msgstr "总价"
 
 #: order/api.py:236
 msgid "No matching purchase order found"
-msgstr ""
+msgstr "没有发现采购订单"
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -4859,199 +4881,199 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:1674
 #: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907
 msgid "Purchase Order"
-msgstr ""
+msgstr "采购订单"
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
 #: templates/js/translated/return_order.js:281
 #: templates/js/translated/stock.js:2941
 msgid "Return Order"
-msgstr ""
+msgstr "退货订单"
 
 #: order/models.py:90
 msgid "Total price for this order"
-msgstr ""
+msgstr "订单总价格"
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 msgid "Order Currency"
-msgstr ""
+msgstr "订单货币"
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
-msgstr ""
+msgstr "订单交易的货币类型(为空则使用默认值)"
 
-#: order/models.py:234
+#: order/models.py:246
 msgid "Contact does not match selected company"
-msgstr ""
+msgstr "联系人与所选公司不匹配"
 
-#: order/models.py:266
+#: order/models.py:278
 msgid "Order description (optional)"
-msgstr ""
+msgstr "订单描述(可选)"
 
-#: order/models.py:275
+#: order/models.py:287
 msgid "Select project code for this order"
-msgstr ""
+msgstr "为此订单选择项目编码"
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
-msgstr ""
+msgstr "链接到外部页面"
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
-msgstr ""
+msgstr "预期订单交付日期。超过该日期后订单将逾期。"
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
-msgstr ""
+msgstr "创建者"
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
-msgstr ""
+msgstr "负责此订单的用户或群组"
 
-#: order/models.py:320
+#: order/models.py:332
 msgid "Point of contact for this order"
-msgstr ""
+msgstr "此订单的联系点"
 
-#: order/models.py:330
+#: order/models.py:342
 msgid "Company address for this order"
-msgstr ""
+msgstr "此订单的公司地址"
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
-msgstr ""
+msgstr "订单参考"
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
-msgstr ""
+msgstr "采购订单状态"
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
-msgstr ""
+msgstr "订购该零件的公司"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
-msgstr ""
+msgstr "参考供应商"
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
-msgstr ""
+msgstr "供应商订单参考代码"
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
-msgstr ""
+msgstr "接收方"
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
-msgstr ""
+msgstr "签发日期"
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
-msgstr ""
+msgstr "订单签发日期"
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
-msgstr ""
+msgstr "订单完成日期"
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
-msgstr ""
+msgstr "零件供应商必须与采购订单供应商匹配"
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
-msgstr ""
+msgstr "数量必须大于0"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
-msgstr ""
+msgstr "向其出售该零件的公司"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
-msgstr ""
+msgstr "客户参考编"
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
-msgstr ""
+msgstr "客户订单参考码"
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
-msgstr ""
+msgstr "配送日期"
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
-msgstr ""
+msgstr "配送人"
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
-msgstr ""
+msgstr "尚未分配零件,因此订单无法完成"
 
-#: order/models.py:992
+#: order/models.py:1004
 msgid "Only an open order can be marked as complete"
-msgstr ""
+msgstr "只有打开订单可以标记为完成"
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
-msgstr ""
+msgstr "由于尚未完成配送,订单无法完成"
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
-msgstr ""
+msgstr "订单无法完成,因为有不完整的行项目"
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
-msgstr ""
+msgstr "项目数量"
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
-msgstr ""
+msgstr "行项目引用"
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
-msgstr ""
+msgstr "行项目注释"
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
-msgstr ""
+msgstr "此行项目的目标日期 (留空以使用从订单起的目标日期)"
 
-#: order/models.py:1305
+#: order/models.py:1317
 msgid "Line item description (optional)"
-msgstr ""
+msgstr "行项目描述 (可选)"
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
-msgstr ""
+msgstr "内容"
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
-msgstr ""
+msgstr "此行的附加内容"
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
-msgstr ""
+msgstr "单价"
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
-msgstr ""
+msgstr "供应商零件必须匹配供应商"
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
-msgstr ""
+msgstr "已删除"
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
-msgstr ""
+msgstr "订单"
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
-msgstr ""
+msgstr "供应商零件"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5059,395 +5081,395 @@ msgstr ""
 #: templates/js/translated/table_filters.js:120
 #: templates/js/translated/table_filters.js:602
 msgid "Received"
-msgstr ""
+msgstr "已接收"
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
-msgstr ""
+msgstr "收到的项目数目"
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
 #: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
-msgstr ""
+msgstr "采购价格"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
-msgstr ""
+msgstr "购买单价"
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
+msgstr "采购方希望将此物品存放在何处?"
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
-msgstr ""
+msgstr "虚拟零件不能分配销售订单"
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
-msgstr ""
+msgstr "只有可销售产品可以分配销售订单"
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
-msgstr ""
+msgstr "售出价格"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
-msgstr ""
+msgstr "售出价格单位"
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
-msgstr ""
+msgstr "配送数量"
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
-msgstr ""
+msgstr "配送日期"
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
-msgstr ""
+msgstr "交货日期 (订单)"
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
-msgstr ""
+msgstr "交货日期"
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
-msgstr ""
+msgstr "审核人"
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
-msgstr ""
+msgstr "配送审核人"
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
-msgstr ""
+msgstr "配送"
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
-msgstr ""
+msgstr "配送单号"
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
-msgstr ""
+msgstr "跟踪单号"
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
-msgstr ""
+msgstr "配送跟踪信息"
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
-msgstr ""
+msgstr "发票号码"
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
-msgstr ""
+msgstr "与发票相关联的参考号码"
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
-msgstr ""
+msgstr "货物已发出"
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
-msgstr ""
+msgstr "配送没有分配的库存项"
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
-msgstr ""
+msgstr "库存项尚未分配"
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
-msgstr ""
+msgstr "无法将库存项分配给不同零件的行"
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
-msgstr ""
+msgstr "无法将库存分配给没有零件的行"
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
-msgstr ""
+msgstr "分配数量不能超过库存数量"
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
-msgstr ""
+msgstr "序列化库存项的数量必须为 1"
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
-msgstr ""
+msgstr "销售订单与配送不符"
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
-msgstr ""
+msgstr "配送与销售订单不匹配"
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
-msgstr ""
+msgstr "行"
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
-msgstr ""
+msgstr "销售订单配送参考"
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
-msgstr ""
+msgstr "项目"
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
-msgstr ""
+msgstr "选择要分配的库存项"
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
-msgstr ""
+msgstr "输入库存分配数量"
 
-#: order/models.py:1982
+#: order/models.py:1997
 msgid "Return Order reference"
-msgstr ""
+msgstr "退货订单参考"
 
-#: order/models.py:1994
+#: order/models.py:2009
 msgid "Company from which items are being returned"
-msgstr ""
+msgstr "退还物品的公司"
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
-msgstr ""
+msgstr "退货订单状态"
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
-msgstr ""
+msgstr "只有序列化项目可以分配到退货订单"
 
-#: order/models.py:2201
+#: order/models.py:2216
 msgid "Select item to return from customer"
-msgstr ""
+msgstr "选择要从客户退回的项目"
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
-msgstr ""
+msgstr "收到日期"
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
-msgstr ""
+msgstr "收到此退回项的日期"
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
-msgstr ""
+msgstr "输出"
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
-msgstr ""
+msgstr "此行项目的输出"
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
-msgstr ""
+msgstr "此行项目退货或修理的相关费用"
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
-msgstr ""
+msgstr "无法取消订单"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
-msgstr ""
+msgstr "允许关闭包含未完成行项目的订单"
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
-msgstr ""
+msgstr "订单有未完成的行项目"
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
-msgstr ""
+msgstr "订单未打开"
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 msgid "Auto Pricing"
-msgstr ""
+msgstr "自动定价"
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
-msgstr ""
+msgstr "根据供应商零件数据自动计算购买价格"
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
-msgstr ""
+msgstr "购买价格货币"
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 msgid "Merge Items"
-msgstr ""
+msgstr "合并项目"
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
-msgstr ""
+msgstr "将含有相同零件、目的地和目标日期的项目合并为单行项目"
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
-msgstr ""
+msgstr "必须指定供应商零件"
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
-msgstr ""
+msgstr "必须指定采购订单"
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
-msgstr ""
+msgstr "供应商必须匹配采购订单"
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
-msgstr ""
+msgstr "采购订单必须匹配供应商"
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
-msgstr ""
+msgstr "行项目"
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
-msgstr ""
+msgstr "行项目与采购订单不匹配"
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
-msgstr ""
+msgstr "选择接收项目的目的地"
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
-msgstr "輸入庫存品項的生產批號"
+msgstr "输入入库项目的批号"
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
-msgstr ""
+msgstr "输入入库项目的序列号"
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
-msgstr ""
+msgstr "条形码"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 msgid "Scanned barcode"
-msgstr ""
+msgstr "已扫描条形码"
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
-msgstr ""
+msgstr "条形码已被使用"
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
-msgstr ""
+msgstr "必须为可跟踪的零件提供整数"
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
-msgstr ""
+msgstr "必须提供行项目"
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
-msgstr ""
+msgstr "目标位置必须指定"
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
-msgstr ""
+msgstr "提供条形码值必须是唯一的"
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
-msgstr ""
+msgstr "售出价格货币"
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
-msgstr ""
+msgstr "未提供配送详情"
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
-msgstr ""
+msgstr "行项目没有与此订单关联"
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
-msgstr ""
+msgstr "数量必须大于0"
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
-msgstr ""
+msgstr "输入序列号以进行分配"
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
-msgstr ""
+msgstr "已发货"
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
-msgstr ""
+msgstr "发货与此订单无关"
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
-msgstr ""
+msgstr "没有找到匹配下列序列号"
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
-msgstr ""
+msgstr "以下序列号已经分配"
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
-msgstr ""
+msgstr "退货订单行项目"
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 msgid "Line item does not match return order"
-msgstr ""
+msgstr "行项目与退货订单不匹配"
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 msgid "Line item has already been received"
-msgstr ""
+msgstr "已经收到的行项目"
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
-msgstr ""
+msgstr "项目只能根据正在执行的订单接收"
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 msgid "Line price currency"
-msgstr ""
+msgstr "行价格货币"
 
 #: order/tasks.py:25
 msgid "Overdue Purchase Order"
-msgstr ""
+msgstr "逾期采购订单"
 
 #: order/tasks.py:30
 #, python-brace-format
 msgid "Purchase order {po} is now overdue"
-msgstr ""
+msgstr "采购订单 {po} 已逾期"
 
 #: order/tasks.py:75
 msgid "Overdue Sales Order"
-msgstr ""
+msgstr "逾期的销售订单"
 
 #: order/tasks.py:80
 #, python-brace-format
 msgid "Sales order {so} is now overdue"
-msgstr ""
+msgstr "销售订单 {so} 已逾期"
 
 #: order/templates/order/order_base.html:51
 msgid "Print purchase order report"
-msgstr ""
+msgstr "打印采购订单"
 
 #: order/templates/order/order_base.html:53
 #: order/templates/order/return_order_base.html:62
 #: order/templates/order/sales_order_base.html:62
 msgid "Export order to file"
-msgstr ""
+msgstr "输出订单到文件"
 
 #: order/templates/order/order_base.html:59
 #: order/templates/order/return_order_base.html:72
 #: order/templates/order/sales_order_base.html:71
 msgid "Order actions"
-msgstr ""
+msgstr "订购操作"
 
 #: order/templates/order/order_base.html:64
 #: order/templates/order/return_order_base.html:76
 #: order/templates/order/sales_order_base.html:75
 msgid "Edit order"
-msgstr ""
+msgstr "编辑订单"
 
 #: order/templates/order/order_base.html:68
 #: order/templates/order/return_order_base.html:78
 #: order/templates/order/sales_order_base.html:77
 msgid "Cancel order"
-msgstr ""
+msgstr "取消订单"
 
 #: order/templates/order/order_base.html:73
 msgid "Duplicate order"
-msgstr ""
+msgstr "复制订单"
 
 #: order/templates/order/order_base.html:79
 #: order/templates/order/order_base.html:80
@@ -5456,93 +5478,93 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:83
 #: order/templates/order/sales_order_base.html:84
 msgid "Issue Order"
-msgstr ""
+msgstr "发布订单"
 
 #: order/templates/order/order_base.html:83
 #: order/templates/order/return_order_base.html:86
 msgid "Mark order as complete"
-msgstr ""
+msgstr "标记订单为已完成"
 
 #: order/templates/order/order_base.html:84
 #: order/templates/order/return_order_base.html:87
 #: order/templates/order/sales_order_base.html:93
 msgid "Complete Order"
-msgstr ""
+msgstr "完成订单"
 
 #: order/templates/order/order_base.html:91
 msgid "Supplier part thumbnail"
-msgstr ""
+msgstr "供应商零件缩略图"
 
 #: order/templates/order/order_base.html:106
 #: order/templates/order/return_order_base.html:101
 #: order/templates/order/sales_order_base.html:106
 msgid "Order Reference"
-msgstr ""
+msgstr "订单参考"
 
 #: order/templates/order/order_base.html:111
 #: order/templates/order/return_order_base.html:106
 #: order/templates/order/sales_order_base.html:111
 msgid "Order Description"
-msgstr ""
+msgstr "订单描述"
 
 #: order/templates/order/order_base.html:118
 #: order/templates/order/return_order_base.html:113
 #: order/templates/order/sales_order_base.html:118
 msgid "Order Status"
-msgstr ""
+msgstr "订单状态"
 
 #: order/templates/order/order_base.html:141
 msgid "No suppplier information available"
-msgstr ""
+msgstr "供应商信息无效"
 
 #: order/templates/order/order_base.html:154
 #: order/templates/order/sales_order_base.html:157
 msgid "Completed Line Items"
-msgstr ""
+msgstr "已完成行项目"
 
 #: order/templates/order/order_base.html:160
 #: order/templates/order/sales_order_base.html:163
 #: order/templates/order/sales_order_base.html:173
 msgid "Incomplete"
-msgstr ""
+msgstr "未完成"
 
 #: order/templates/order/order_base.html:179
 #: order/templates/order/return_order_base.html:157
 #: report/templates/report/inventree_build_order_base.html:121
 msgid "Issued"
-msgstr ""
+msgstr "下达的"
 
 #: order/templates/order/order_base.html:224
 msgid "Total cost"
-msgstr ""
+msgstr "总成本"
 
 #: order/templates/order/order_base.html:228
 #: order/templates/order/return_order_base.html:199
 #: order/templates/order/sales_order_base.html:239
 msgid "Total cost could not be calculated"
-msgstr ""
+msgstr "无法计算总成本"
 
 #: order/templates/order/order_base.html:318
 msgid "Purchase Order QR Code"
-msgstr ""
+msgstr "采购订单二维码"
 
 #: order/templates/order/order_base.html:330
 msgid "Link Barcode to Purchase Order"
-msgstr ""
+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
 #: templates/patterns/wizard/match_fields.html:8
 msgid "Missing selections for the following required columns"
-msgstr ""
+msgstr "没有选择"
 
 #: order/templates/order/order_wizard/match_fields.html:20
 #: part/templates/part/import_wizard/ajax_match_fields.html:20
 #: part/templates/part/import_wizard/match_fields.html:20
 #: templates/patterns/wizard/match_fields.html:19
 msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
+msgstr "发现重复选项"
 
 #: order/templates/order/order_wizard/match_fields.html:29
 #: order/templates/order/order_wizard/match_parts.html:21
@@ -5550,28 +5572,28 @@ msgstr ""
 #: part/templates/part/import_wizard/match_references.html:21
 #: templates/patterns/wizard/match_fields.html:28
 msgid "Submit Selections"
-msgstr ""
+msgstr "提交选项"
 
 #: order/templates/order/order_wizard/match_fields.html:35
 #: part/templates/part/import_wizard/ajax_match_fields.html:28
 #: part/templates/part/import_wizard/match_fields.html:35
 #: templates/patterns/wizard/match_fields.html:34
 msgid "File Fields"
-msgstr ""
+msgstr "文件字段"
 
 #: order/templates/order/order_wizard/match_fields.html:42
 #: part/templates/part/import_wizard/ajax_match_fields.html:35
 #: part/templates/part/import_wizard/match_fields.html:42
 #: templates/patterns/wizard/match_fields.html:41
 msgid "Remove column"
-msgstr ""
+msgstr "移除列"
 
 #: order/templates/order/order_wizard/match_fields.html:60
 #: part/templates/part/import_wizard/ajax_match_fields.html:53
 #: part/templates/part/import_wizard/match_fields.html:60
 #: templates/patterns/wizard/match_fields.html:59
 msgid "Duplicate selection"
-msgstr ""
+msgstr "重复选项"
 
 #: order/templates/order/order_wizard/match_fields.html:71
 #: order/templates/order/order_wizard/match_parts.html:52
@@ -5588,35 +5610,35 @@ msgstr ""
 #: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
-msgstr ""
+msgstr "移除行"
 
 #: order/templates/order/order_wizard/match_parts.html:12
 #: part/templates/part/import_wizard/ajax_match_references.html:12
 #: part/templates/part/import_wizard/match_references.html:12
 msgid "Errors exist in the submitted data"
-msgstr ""
+msgstr "提交数据中存在错误"
 
 #: order/templates/order/order_wizard/match_parts.html:28
 #: part/templates/part/import_wizard/ajax_match_references.html:21
 #: part/templates/part/import_wizard/match_references.html:28
 msgid "Row"
-msgstr ""
+msgstr "行"
 
 #: order/templates/order/order_wizard/match_parts.html:29
 msgid "Select Supplier Part"
-msgstr ""
+msgstr "选择供应商零件"
 
 #: order/templates/order/order_wizard/po_upload.html:8
 msgid "Return to Orders"
-msgstr ""
+msgstr "退货订单"
 
 #: order/templates/order/order_wizard/po_upload.html:13
 msgid "Upload File for Purchase Order"
-msgstr ""
+msgstr "上传采购订单文件"
 
 #: order/templates/order/order_wizard/po_upload.html:14
 msgid "Order is already processed. Files cannot be uploaded."
-msgstr ""
+msgstr "订单已经处理。无法上传文件。"
 
 #: order/templates/order/order_wizard/po_upload.html:27
 #: part/templates/part/import_wizard/ajax_part_upload.html:10
@@ -5624,7 +5646,7 @@ msgstr ""
 #: templates/patterns/wizard/upload.html:13
 #, python-format
 msgid "Step %(step)s of %(count)s"
-msgstr ""
+msgstr "步骤 %(step)s / %(count)s"
 
 #: order/templates/order/po_sidebar.html:5
 #: order/templates/order/return_order_detail.html:18
@@ -5633,15 +5655,15 @@ msgstr ""
 #: report/templates/report/inventree_return_order_report_base.html:19
 #: report/templates/report/inventree_so_report_base.html:22
 msgid "Line Items"
-msgstr ""
+msgstr "行项目"
 
 #: order/templates/order/po_sidebar.html:7
 msgid "Received Stock"
-msgstr ""
+msgstr "已入库"
 
 #: order/templates/order/purchase_order_detail.html:18
 msgid "Purchase Order Items"
-msgstr ""
+msgstr "采购订单项目"
 
 #: order/templates/order/purchase_order_detail.html:27
 #: order/templates/order/return_order_detail.html:24
@@ -5650,57 +5672,57 @@ msgstr ""
 #: templates/js/translated/return_order.js:459
 #: templates/js/translated/sales_order.js:237
 msgid "Add Line Item"
-msgstr ""
+msgstr "添加行项目"
 
 #: order/templates/order/purchase_order_detail.html:31
 #: order/templates/order/purchase_order_detail.html:32
 #: order/templates/order/return_order_detail.html:28
 #: order/templates/order/return_order_detail.html:29
 msgid "Receive Line Items"
-msgstr ""
+msgstr "收到行项目"
 
 #: order/templates/order/purchase_order_detail.html:50
 #: order/templates/order/return_order_detail.html:45
 #: order/templates/order/sales_order_detail.html:41
 msgid "Extra Lines"
-msgstr ""
+msgstr "附加项"
 
 #: order/templates/order/purchase_order_detail.html:56
 #: order/templates/order/return_order_detail.html:51
 #: order/templates/order/sales_order_detail.html:47
 msgid "Add Extra Line"
-msgstr ""
+msgstr "添加附加项"
 
 #: order/templates/order/purchase_order_detail.html:74
 msgid "Received Items"
-msgstr ""
+msgstr "已收到的项目"
 
 #: order/templates/order/purchase_order_detail.html:99
 #: order/templates/order/return_order_detail.html:85
 #: order/templates/order/sales_order_detail.html:139
 msgid "Order Notes"
-msgstr ""
+msgstr "订单备注"
 
 #: order/templates/order/return_order_base.html:18
 #: order/templates/order/sales_order_base.html:18
 msgid "Customer logo thumbnail"
-msgstr ""
+msgstr "客户 logo 缩略图"
 
 #: order/templates/order/return_order_base.html:60
 msgid "Print return order report"
-msgstr ""
+msgstr "打印返回订单报告"
 
 #: order/templates/order/return_order_base.html:64
 #: order/templates/order/sales_order_base.html:64
 msgid "Print packing list"
-msgstr ""
+msgstr "打印包装列表"
 
 #: order/templates/order/return_order_base.html:138
 #: order/templates/order/sales_order_base.html:151
 #: templates/js/translated/return_order.js:309
 #: templates/js/translated/sales_order.js:797
 msgid "Customer Reference"
-msgstr ""
+msgstr "客户参考"
 
 #: order/templates/order/return_order_base.html:195
 #: order/templates/order/sales_order_base.html:235
@@ -5713,191 +5735,191 @@ msgstr ""
 #: templates/js/translated/return_order.js:381
 #: templates/js/translated/sales_order.js:855
 msgid "Total Cost"
-msgstr ""
+msgstr "总成本"
 
 #: order/templates/order/return_order_base.html:263
 msgid "Return Order QR Code"
-msgstr ""
+msgstr "退货订单二维码"
 
 #: order/templates/order/return_order_base.html:275
 msgid "Link Barcode to Return Order"
-msgstr ""
+msgstr "链接条形码到退货订单"
 
 #: order/templates/order/return_order_sidebar.html:5
 msgid "Order Details"
-msgstr ""
+msgstr "订单详情"
 
 #: order/templates/order/sales_order_base.html:60
 msgid "Print sales order report"
-msgstr ""
+msgstr "打印销售订单报告"
 
 #: order/templates/order/sales_order_base.html:88
 #: order/templates/order/sales_order_base.html:89
 msgid "Ship Items"
-msgstr ""
+msgstr "运送项目"
 
 #: order/templates/order/sales_order_base.html:92
 #: templates/js/translated/sales_order.js:484
 msgid "Complete Sales Order"
-msgstr ""
+msgstr "完成销售订单"
 
 #: order/templates/order/sales_order_base.html:131
 msgid "This Sales Order has not been fully allocated"
-msgstr ""
+msgstr "销售订单没有完全分配"
 
 #: order/templates/order/sales_order_base.html:169
 #: order/templates/order/sales_order_detail.html:99
 #: order/templates/order/so_sidebar.html:11
 msgid "Completed Shipments"
-msgstr ""
+msgstr "完成配送"
 
 #: order/templates/order/sales_order_base.html:312
 msgid "Sales Order QR Code"
-msgstr ""
+msgstr "销售订单二维码"
 
 #: order/templates/order/sales_order_base.html:324
 msgid "Link Barcode to Sales Order"
-msgstr ""
+msgstr "链接条形码到销售订单"
 
 #: order/templates/order/sales_order_detail.html:18
 msgid "Sales Order Items"
-msgstr ""
+msgstr "销售订单项目"
 
 #: order/templates/order/sales_order_detail.html:67
 #: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284
 msgid "Pending Shipments"
-msgstr ""
+msgstr "待配送"
 
 #: order/templates/order/sales_order_detail.html:71
 #: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296
 msgid "Actions"
-msgstr ""
+msgstr "操作"
 
 #: order/templates/order/sales_order_detail.html:80
 msgid "New Shipment"
-msgstr ""
+msgstr "新建配送单"
 
 #: order/views.py:120
 msgid "Match Supplier Parts"
-msgstr ""
+msgstr "匹配供应商零件"
 
 #: order/views.py:406
 msgid "Sales order not found"
-msgstr ""
+msgstr "未发现销售订单"
 
 #: order/views.py:412
 msgid "Price not found"
-msgstr ""
+msgstr "未发现价格"
 
 #: order/views.py:415
 #, python-brace-format
 msgid "Updated {part} unit-price to {price}"
-msgstr ""
+msgstr "更新 {part} 单价到 {price}"
 
 #: order/views.py:421
 #, python-brace-format
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
-msgstr ""
+msgstr "更新 {part} 单价到 {price} 且更新数量到 {qty}"
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
-msgstr ""
+msgstr "零件ID"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
-msgstr ""
+msgstr "零件名称"
 
 #: part/admin.py:45 part/stocktake.py:220
 msgid "Part Description"
-msgstr ""
+msgstr "零件描述"
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
 #: templates/js/translated/stock.js:2035
 msgid "IPN"
-msgstr ""
+msgstr "内部零件号 IPN"
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
-msgstr ""
+msgstr "改版"
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
-msgstr ""
+msgstr "关键词"
 
 #: part/admin.py:60
 msgid "Part Image"
-msgstr ""
+msgstr "零件图片"
 
 #: part/admin.py:63 part/admin.py:300 part/stocktake.py:221
 msgid "Category ID"
-msgstr ""
+msgstr "类别 ID"
 
 #: part/admin.py:67 part/admin.py:302 part/stocktake.py:222
 msgid "Category Name"
-msgstr ""
+msgstr "类别名称"
 
 #: part/admin.py:71 part/admin.py:314
 msgid "Default Location ID"
-msgstr ""
+msgstr "默认仓储ID"
 
 #: part/admin.py:76
 msgid "Default Supplier ID"
-msgstr ""
+msgstr "默认供应商 ID"
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
-msgstr ""
+msgstr "变体于"
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
-msgstr ""
+msgstr "最低库存"
 
 #: part/admin.py:126 part/templates/part/part_base.html:197
 #: templates/js/translated/company.js:1679
 #: templates/js/translated/table_filters.js:355
 msgid "In Stock"
-msgstr ""
+msgstr "入库"
 
 #: part/admin.py:138 part/templates/part/part_sidebar.html:27
 msgid "Used In"
-msgstr ""
+msgstr "用途"
 
 #: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231
 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152
 msgid "Building"
-msgstr ""
+msgstr "仓库"
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
-msgstr ""
+msgstr "最低成本"
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
-msgstr ""
+msgstr "最高成本"
 
 #: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211
 msgid "Parent ID"
-msgstr ""
+msgstr "上级编号"
 
 #: part/admin.py:310 part/admin.py:400 stock/admin.py:62
 msgid "Parent Name"
-msgstr ""
+msgstr "上级名称"
 
 #: part/admin.py:318 part/templates/part/category.html:88
 #: part/templates/part/category.html:101
 msgid "Category Path"
-msgstr ""
+msgstr "类别路径"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -5905,494 +5927,494 @@ msgstr ""
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "零件"
 
 #: part/admin.py:384
 msgid "BOM Level"
-msgstr ""
+msgstr "物料清单 级别"
 
 #: part/admin.py:387
 msgid "BOM Item ID"
-msgstr ""
+msgstr "物料清单项目 lD"
 
 #: part/admin.py:397
 msgid "Parent IPN"
-msgstr ""
+msgstr "上级内部零件号"
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
-msgstr ""
+msgstr "内部零件号"
 
 #: part/admin.py:421 part/serializers.py:1256
 #: templates/js/translated/pricing.js:358
 #: templates/js/translated/pricing.js:1024
 msgid "Minimum Price"
-msgstr ""
+msgstr "最低价格"
 
 #: part/admin.py:426 part/serializers.py:1271
 #: templates/js/translated/pricing.js:353
 #: templates/js/translated/pricing.js:1032
 msgid "Maximum Price"
-msgstr ""
+msgstr "最高价格"
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
-msgstr ""
+msgstr "已加星标"
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
-msgstr ""
+msgstr "按星标分类筛选"
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
-msgstr ""
+msgstr "深度"
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
-msgstr ""
+msgstr "按类别深度筛选"
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
-msgstr ""
+msgstr "级联"
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
-msgstr ""
+msgstr "在过滤后的结果中包含子类别"
 
-#: part/api.py:177
+#: part/api.py:179
 msgid "Parent"
-msgstr ""
+msgstr "上级"
 
-#: part/api.py:179
+#: part/api.py:181
 msgid "Filter by parent category"
-msgstr ""
+msgstr "按上级类别筛选"
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
-msgstr ""
+msgstr "排除树"
 
-#: part/api.py:214
+#: part/api.py:216
 msgid "Exclude sub-categories under the specified category"
-msgstr ""
+msgstr "排除指定类别下的子类别"
 
-#: part/api.py:455
+#: part/api.py:458
 msgid "Has Results"
-msgstr ""
+msgstr "有结果"
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
-msgstr ""
+msgstr "收到的采购订单"
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
-msgstr ""
+msgstr "未完成的销售订单"
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
-msgstr ""
+msgstr "由生产订单生成的库存"
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
-msgstr ""
+msgstr "生产订单所需库存"
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
-msgstr ""
+msgstr "有效"
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
-msgstr ""
+msgstr "验证整个材料单"
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
-msgstr ""
+msgstr "必须选择此项"
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
-msgstr ""
+msgstr "类别"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
-msgstr ""
+msgstr "使用"
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
-msgstr ""
+msgstr "默认库存地点"
 
 #: part/bom.py:171 part/serializers.py:820
 #: templates/email/low_stock_notification.html:16
 msgid "Total Stock"
-msgstr ""
+msgstr "总库存"
 
 #: part/forms.py:49
 msgid "Input quantity for price calculation"
-msgstr ""
+msgstr "输入用于价格计算的数量"
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
-msgstr ""
+msgstr "零件类别"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
-msgstr ""
+msgstr "零件类别"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
-msgstr ""
+msgstr "此类别零件的默认库存地点"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
 #: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
-msgstr ""
+msgstr "结构性"
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
-msgstr ""
+msgstr "零件可能无法直接分配到结构类别,但可以分配到子类别。"
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
-msgstr ""
+msgstr "默认关键字"
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
-msgstr ""
+msgstr "此类别零件的默认关键字"
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
-msgstr ""
+msgstr "图标"
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
-msgstr ""
+msgstr "图标(可选)"
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
-msgstr ""
+msgstr "您不能使这个零件类别结构化,因为有些零件已经分配给了它!"
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
-msgstr ""
+msgstr "无效的上级零件选择"
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
-msgstr ""
+msgstr "零件 \"{self}\" 不能用在 \"{parent}\" 的物料清单 (递归)"
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
-msgstr ""
+msgstr "零件 \"{parent}\" 不能用在 \"{self}\" 的物料清单 (递归)"
 
-#: part/models.py:615
+#: part/models.py:616
 #, python-brace-format
 msgid "IPN must match regex pattern {pattern}"
-msgstr ""
+msgstr "{pattern} 内部零件编码 IPN 必须与正则匹配"
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
-msgstr ""
+msgstr "该序列号库存项己存在"
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
-msgstr ""
+msgstr "在零件设置中不允许重复的IPN"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
-msgstr ""
+msgstr "与这个名称、内部零件号和修订版的部分已存在。"
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
-msgstr ""
+msgstr "零件不能分配到结构性零件类别!"
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
-msgstr ""
+msgstr "零件名称"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
-msgstr ""
+msgstr "零件模板"
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
-msgstr ""
+msgstr "这个零件可以作为模板用于生成其他零件吗?"
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
-msgstr ""
+msgstr "这个零件是另一零件的变体吗?"
 
-#: part/models.py:878
+#: part/models.py:879
 msgid "Part description (optional)"
-msgstr ""
+msgstr "零件描述(可选)"
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
-msgstr ""
+msgstr "提高搜索结果可见性的关键字"
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
-msgstr ""
+msgstr "零件类别"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
-msgstr ""
+msgstr "内部零件编号"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
-msgstr ""
+msgstr "零件版本号"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
-msgstr ""
+msgstr "此零件通常的存放位置?"
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
-msgstr ""
+msgstr "默认供应商"
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
-msgstr ""
+msgstr "默认供应商零件"
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
-msgstr ""
+msgstr "默认到期"
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
-msgstr ""
+msgstr "此零件库存项的过期时间 (天)"
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
-msgstr ""
+msgstr "最低库存数量"
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
-msgstr ""
+msgstr "此零件的计量单位"
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
-msgstr ""
+msgstr "这个零件可由其他零件加工而成吗?"
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
-msgstr ""
+msgstr "这个零件可用于创建其他零件吗?"
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
-msgstr ""
+msgstr "这个零件可作为唯一关键字用来搜索吗?"
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
-msgstr ""
+msgstr "这个零件可从外部供应商购买吗?"
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
-msgstr ""
+msgstr "此零件可以销售给客户吗?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
-msgstr ""
+msgstr "这个零件是否激活?"
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
-msgstr ""
+msgstr "这是一个虚拟零件,如软件产品或许可证吗?"
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
-msgstr ""
+msgstr "物料清单校验和"
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
-msgstr ""
+msgstr "保存的物料清单校验和"
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
-msgstr ""
+msgstr "物料清单检查人"
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
-msgstr ""
+msgstr "物料清单检查日期"
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
-msgstr ""
+msgstr "新建用户"
 
-#: part/models.py:1096
+#: part/models.py:1097
 msgid "Owner responsible for this part"
-msgstr ""
+msgstr "此零件的负责人"
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
-msgstr ""
+msgstr "最近库存盘点"
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
-msgstr ""
+msgstr "销售多个零件"
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
-msgstr ""
+msgstr "用于缓存定价计算的货币"
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
-msgstr ""
+msgstr "最低物料清单成本"
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
-msgstr ""
+msgstr "元件的最低成本"
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
-msgstr ""
+msgstr "物料清单 最高成本"
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
-msgstr ""
+msgstr "元件的最高成本"
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
-msgstr ""
+msgstr "最低购买成本"
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
-msgstr ""
+msgstr "最高历史购买成本"
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
-msgstr ""
+msgstr "最大购买成本"
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
-msgstr ""
+msgstr "最高历史购买成本"
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
-msgstr ""
+msgstr "最低内部价格"
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
-msgstr ""
+msgstr "基于内部批发价的最低成本"
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
-msgstr ""
+msgstr "最大内部价格"
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
-msgstr ""
+msgstr "基于内部批发价的最高成本"
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
-msgstr ""
+msgstr "供应商最低价格"
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
-msgstr ""
+msgstr "外部供应商零件的最低价格"
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
-msgstr ""
+msgstr "供应商最高价格"
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
-msgstr ""
+msgstr "外部供应商部分的最高价格"
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
-msgstr ""
+msgstr "最小变体成本"
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
-msgstr ""
+msgstr "计算变体零件的最低成本"
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
-msgstr ""
+msgstr "最大变体成本"
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
-msgstr ""
+msgstr "计算变体零件的最大成本"
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
-msgstr ""
+msgstr "覆盖最低成本"
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
-msgstr ""
+msgstr "覆盖最大成本"
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
-msgstr ""
+msgstr "计算总最低成本"
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
-msgstr ""
+msgstr "计算总最大成本"
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
-msgstr ""
+msgstr "最低售出价格"
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
-msgstr ""
+msgstr "基于批发价的最低售出价格"
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
-msgstr ""
+msgstr "最高售出价格"
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
-msgstr ""
+msgstr "基于批发价的最大售出价格"
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
-msgstr ""
+msgstr "最低销售成本"
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
-msgstr ""
+msgstr "历史最低售出价格"
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
-msgstr ""
+msgstr "最高销售成本"
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
-msgstr ""
+msgstr "历史最高售出价格"
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
-msgstr ""
+msgstr "零件盘点"
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
-msgstr ""
+msgstr "项目计数"
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
-msgstr ""
+msgstr "盘点时的个别零件库存条目数"
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
-msgstr ""
+msgstr "盘点时可用库存总额"
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6402,1039 +6424,1039 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:1732
 #: templates/js/translated/stock.js:2821
 msgid "Date"
-msgstr ""
+msgstr "日期"
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
-msgstr ""
+msgstr "已进行当日盘点"
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
-msgstr ""
+msgstr "附加注释"
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
-msgstr ""
+msgstr "进行此盘点的用户"
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
-msgstr ""
+msgstr "最低库存成本"
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
-msgstr ""
+msgstr "手头存货最低成本估算"
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
-msgstr ""
+msgstr "最高库存成本"
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
-msgstr ""
+msgstr "手头存货最高成本估算"
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
-msgstr ""
+msgstr "报告"
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
-msgstr ""
+msgstr "库存评估报告文件(内部生成)"
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
-msgstr ""
+msgstr "零件计数"
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
-msgstr ""
+msgstr "盘点涵盖的零件数量"
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
-msgstr ""
+msgstr "请求此评估报告的用户"
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
-msgstr ""
+msgstr "模板名称无效 - 必须包含至少一个字母数字字符"
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
-msgstr ""
+msgstr "只能为可跟踪的零件创建测试模板"
 
-#: part/models.py:3456
+#: part/models.py:3457
 msgid "Test template with the same key already exists for part"
-msgstr ""
+msgstr "零件已存在具有相同主键的测试模板"
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
-msgstr ""
+msgstr "测试名"
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
-msgstr ""
+msgstr "输入测试的名称"
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
-msgstr ""
+msgstr "测试主键"
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
-msgstr ""
+msgstr "简化测试主键"
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
-msgstr ""
+msgstr "测试说明"
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
-msgstr ""
+msgstr "输入测试的描述"
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
-msgstr ""
+msgstr "是否启用此测试?"
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
-msgstr ""
+msgstr "必填项"
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
-msgstr ""
+msgstr "要求测试通过?"
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
-msgstr ""
+msgstr "必填值"
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
-msgstr ""
+msgstr "添加测试结果时是否需要一个值?"
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
-msgstr ""
+msgstr "需附件"
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
-msgstr ""
+msgstr "添加测试结果时是否需要文件附件?"
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
-msgstr ""
+msgstr "复选框参数不能有单位"
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
-msgstr ""
+msgstr "复选框参数不能有选项"
 
-#: part/models.py:3584
+#: part/models.py:3585
 msgid "Choices must be unique"
-msgstr ""
+msgstr "选择必须是唯一的"
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
-msgstr ""
+msgstr "参数模板名称必须是唯一的"
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
-msgstr ""
+msgstr "参数名称"
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
-msgstr ""
+msgstr "此参数的物理单位"
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
-msgstr ""
+msgstr "参数说明:"
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
-msgstr ""
+msgstr "勾选框"
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
-msgstr ""
+msgstr "此参数是否为复选框?"
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
-msgstr ""
+msgstr "选择"
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
-msgstr ""
+msgstr "此参数的有效选择 (逗号分隔)"
 
-#: part/models.py:3721
+#: part/models.py:3722
 msgid "Invalid choice for parameter value"
-msgstr ""
+msgstr "无效的参数值选择"
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
-msgstr ""
+msgstr "上级零件"
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
-msgstr ""
+msgstr "参数模板"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
-msgstr ""
+msgstr "数据"
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
-msgstr ""
+msgstr "参数值"
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
-msgstr ""
+msgstr "默认值"
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
-msgstr ""
+msgstr "默认参数值"
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
-msgstr ""
+msgstr "零件ID或零件名称"
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
-msgstr ""
+msgstr "唯一零件ID 值"
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
-msgstr ""
+msgstr "零件IPN内部零件号"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
-msgstr ""
+msgstr "级"
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
-msgstr ""
+msgstr "物料清单级别"
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
-msgstr ""
+msgstr "选择上级零件"
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
-msgstr ""
+msgstr "子零件"
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
-msgstr ""
+msgstr "选择要用于物料清单的零件"
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
-msgstr ""
+msgstr "此物料清单项目的数量"
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
-msgstr ""
+msgstr "此物料清单项是可选的"
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
-msgstr ""
+msgstr "此物料清单是消耗品 (它没有在生产订单中被追踪)"
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
-msgstr ""
+msgstr "加班费"
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
-msgstr ""
+msgstr "估计生产物浪费量(绝对值或百分比)"
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
-msgstr ""
+msgstr "物料清单项目引用"
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
-msgstr ""
+msgstr "物料清单项目注释"
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
-msgstr ""
+msgstr "校验和"
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
-msgstr ""
+msgstr "物料清单较验和"
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
-msgstr ""
+msgstr "已验证"
 
-#: part/models.py:4058
+#: part/models.py:4081
 msgid "This BOM item has been validated"
-msgstr ""
+msgstr "此物料清单项目已验证"
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
-msgstr ""
+msgstr "获取继承的"
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
-msgstr ""
+msgstr "此物料清单项目是由物料清单继承的变体零件"
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
-msgstr ""
+msgstr "允许变体"
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
-msgstr ""
+msgstr "变体零件的库存项可以用于此物料清单项目"
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
-msgstr ""
+msgstr "数量必须是可跟踪零件的整数"
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
-msgstr ""
+msgstr "必须指定子零件"
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
-msgstr ""
+msgstr "物料清单项目替代品"
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
-msgstr ""
+msgstr "替代零件不能与主零件相同"
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
-msgstr ""
+msgstr "上级物料清单项目"
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
-msgstr ""
+msgstr "替代零件"
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
-msgstr ""
+msgstr "零件 1"
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
-msgstr ""
+msgstr "零件2"
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
-msgstr ""
+msgstr "选择相关的零件"
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
-msgstr ""
+msgstr "零件关系不能在零件和自身之间创建"
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
-msgstr ""
+msgstr "复制关系已经存在"
 
 #: part/serializers.py:119 part/serializers.py:141
 #: part/templates/part/category.html:122 part/templates/part/category.html:207
 #: part/templates/part/category_sidebar.html:7
 msgid "Subcategories"
-msgstr ""
+msgstr "子类别"
 
 #: part/serializers.py:185
 msgid "Results"
-msgstr ""
+msgstr "结果"
 
 #: part/serializers.py:186
 msgid "Number of results recorded against this template"
-msgstr ""
+msgstr "根据该模板记录的结果数量"
 
 #: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406
 msgid "Purchase currency of this stock item"
-msgstr ""
+msgstr "购买此库存项的货币"
 
 #: part/serializers.py:273
 msgid "Number of parts using this template"
-msgstr ""
+msgstr "使用此模板的零件数"
 
 #: part/serializers.py:397
 msgid "No parts selected"
-msgstr ""
+msgstr "没有选定零件"
 
 #: part/serializers.py:407
 msgid "Select category"
-msgstr ""
+msgstr "选择类别"
 
 #: part/serializers.py:437
 msgid "Original Part"
-msgstr ""
+msgstr "原始零件"
 
 #: part/serializers.py:438
 msgid "Select original part to duplicate"
-msgstr ""
+msgstr "选择要复制的原始零件"
 
 #: part/serializers.py:443
 msgid "Copy Image"
-msgstr ""
+msgstr "复制图片"
 
 #: part/serializers.py:444
 msgid "Copy image from original part"
-msgstr ""
+msgstr "从原零件复制图片"
 
 #: part/serializers.py:450 part/templates/part/detail.html:277
 msgid "Copy BOM"
-msgstr ""
+msgstr "复制物料清单"
 
 #: part/serializers.py:451
 msgid "Copy bill of materials from original part"
-msgstr ""
+msgstr "从原始零件复制材料清单"
 
 #: part/serializers.py:457
 msgid "Copy Parameters"
-msgstr ""
+msgstr "复制参数"
 
 #: part/serializers.py:458
 msgid "Copy parameter data from original part"
-msgstr ""
+msgstr "从原始零件复制参数数据"
 
 #: part/serializers.py:464
 msgid "Copy Notes"
-msgstr ""
+msgstr "复制备注"
 
 #: part/serializers.py:465
 msgid "Copy notes from original part"
-msgstr ""
+msgstr "从原始零件复制备注"
 
 #: part/serializers.py:478
 msgid "Initial Stock Quantity"
-msgstr ""
+msgstr "初始化库存数量"
 
 #: part/serializers.py:480
 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
-msgstr ""
+msgstr "指定此零件的初始库存数量。如果数量为零,则不添加任何库存。"
 
 #: part/serializers.py:487
 msgid "Initial Stock Location"
-msgstr ""
+msgstr "初始化库存地点"
 
 #: part/serializers.py:488
 msgid "Specify initial stock location for this Part"
-msgstr ""
+msgstr "初始化指定此零件的库存地点"
 
 #: part/serializers.py:500
 msgid "Select supplier (or leave blank to skip)"
-msgstr ""
+msgstr "选择供应商(或为空以跳过)"
 
 #: part/serializers.py:516
 msgid "Select manufacturer (or leave blank to skip)"
-msgstr ""
+msgstr "选择制造商(或为空)"
 
 #: part/serializers.py:526
 msgid "Manufacturer part number"
-msgstr ""
+msgstr "生产商零件号"
 
 #: part/serializers.py:533
 msgid "Selected company is not a valid supplier"
-msgstr ""
+msgstr "所选公司不是一个有效的供应商"
 
 #: part/serializers.py:542
 msgid "Selected company is not a valid manufacturer"
-msgstr ""
+msgstr "所选公司不是一个有效的制造商"
 
 #: part/serializers.py:553
 msgid "Manufacturer part matching this MPN already exists"
-msgstr ""
+msgstr "此制造商零件编号 (MPN) 的制造商零件已存在"
 
 #: part/serializers.py:560
 msgid "Supplier part matching this SKU already exists"
-msgstr ""
+msgstr "匹配此库存单位  (SKU) 的供应商零件已存在"
 
 #: part/serializers.py:821
 msgid "External Stock"
-msgstr ""
+msgstr "外部库存"
 
 #: part/serializers.py:823
 msgid "Unallocated Stock"
-msgstr ""
+msgstr "未分配库存"
 
 #: part/serializers.py:826
 msgid "Variant Stock"
-msgstr ""
+msgstr "变体库存"
 
 #: part/serializers.py:851 part/templates/part/copy_part.html:9
 #: templates/js/translated/part.js:471
 msgid "Duplicate Part"
-msgstr ""
+msgstr "复制零件"
 
 #: part/serializers.py:852
 msgid "Copy initial data from another Part"
-msgstr ""
+msgstr "从另一个零件复制初始数据"
 
 #: part/serializers.py:858 templates/js/translated/part.js:102
 msgid "Initial Stock"
-msgstr ""
+msgstr "初始库存"
 
 #: part/serializers.py:859
 msgid "Create Part with initial stock quantity"
-msgstr ""
+msgstr "创建具有初始库存数量的零件"
 
 #: part/serializers.py:865
 msgid "Supplier Information"
-msgstr ""
+msgstr "供应商信息"
 
 #: part/serializers.py:866
 msgid "Add initial supplier information for this part"
-msgstr ""
+msgstr "添加此零件的初始供应商信息"
 
 #: part/serializers.py:874
 msgid "Copy Category Parameters"
-msgstr ""
+msgstr "复制类别参数"
 
 #: part/serializers.py:875
 msgid "Copy parameter templates from selected part category"
-msgstr ""
+msgstr "从选择的零件复制参数模版"
 
 #: part/serializers.py:880
 msgid "Existing Image"
-msgstr ""
+msgstr "现有的图片"
 
 #: part/serializers.py:881
 msgid "Filename of an existing part image"
-msgstr ""
+msgstr "现有零件图片的文件名"
 
 #: part/serializers.py:898
 msgid "Image file does not exist"
-msgstr ""
+msgstr "图片不存在"
 
 #: part/serializers.py:1104
 msgid "Limit stocktake report to a particular part, and any variant parts"
-msgstr ""
+msgstr "限制盘点报告到某个特定零件以及任何变体零件"
 
 #: part/serializers.py:1114
 msgid "Limit stocktake report to a particular part category, and any child categories"
-msgstr ""
+msgstr "限制盘点报告到某个特定零件类别以及任何子类别"
 
 #: part/serializers.py:1124
 msgid "Limit stocktake report to a particular stock location, and any child locations"
-msgstr ""
+msgstr "限制盘点报告到某个特定零件库存地点以及任何子位置"
 
 #: part/serializers.py:1130
 msgid "Exclude External Stock"
-msgstr ""
+msgstr "排除外部库存"
 
 #: part/serializers.py:1131
 msgid "Exclude stock items in external locations"
-msgstr ""
+msgstr "排除外部位置的库存项"
 
 #: part/serializers.py:1136
 msgid "Generate Report"
-msgstr ""
+msgstr "生成报告"
 
 #: part/serializers.py:1137
 msgid "Generate report file containing calculated stocktake data"
-msgstr ""
+msgstr "生成包含计算出来的盘点数据的报告文件"
 
 #: part/serializers.py:1142
 msgid "Update Parts"
-msgstr ""
+msgstr "更新零件"
 
 #: part/serializers.py:1143
 msgid "Update specified parts with calculated stocktake data"
-msgstr ""
+msgstr "使用计算出的盘点数据更新指定零件"
 
 #: part/serializers.py:1151
 msgid "Stocktake functionality is not enabled"
-msgstr ""
+msgstr "评估功能未启用"
 
 #: part/serializers.py:1257
 msgid "Override calculated value for minimum price"
-msgstr ""
+msgstr "覆盖估算的最低价格值"
 
 #: part/serializers.py:1264
 msgid "Minimum price currency"
-msgstr ""
+msgstr "最低价格货币"
 
 #: part/serializers.py:1272
 msgid "Override calculated value for maximum price"
-msgstr ""
+msgstr "覆盖估算的最高价格值"
 
 #: part/serializers.py:1279
 msgid "Maximum price currency"
-msgstr ""
+msgstr "最高价格货币"
 
 #: part/serializers.py:1308
 msgid "Update"
-msgstr ""
+msgstr "更新"
 
 #: part/serializers.py:1309
 msgid "Update pricing for this part"
-msgstr ""
+msgstr "更新这个零件的价格"
 
 #: part/serializers.py:1332
 #, python-brace-format
 msgid "Could not convert from provided currencies to {default_currency}"
-msgstr ""
+msgstr "无法将所提供的货币转换为 {default_currency}"
 
 #: part/serializers.py:1339
 msgid "Minimum price must not be greater than maximum price"
-msgstr ""
+msgstr "最低价格不能高于最高价格。"
 
 #: part/serializers.py:1342
 msgid "Maximum price must not be less than minimum price"
-msgstr ""
+msgstr "最高价格不能低于最低价格"
 
 #: part/serializers.py:1678
 msgid "Select part to copy BOM from"
-msgstr ""
+msgstr "选择要复制物料清单的零件"
 
 #: part/serializers.py:1686
 msgid "Remove Existing Data"
-msgstr ""
+msgstr "移除现有数据"
 
 #: part/serializers.py:1687
 msgid "Remove existing BOM items before copying"
-msgstr ""
+msgstr "复制前删除现有的物料清单项目"
 
 #: part/serializers.py:1692
 msgid "Include Inherited"
-msgstr ""
+msgstr "包含继承的"
 
 #: part/serializers.py:1693
 msgid "Include BOM items which are inherited from templated parts"
-msgstr ""
+msgstr "包含从模板零件继承的物料清单项目"
 
 #: part/serializers.py:1698
 msgid "Skip Invalid Rows"
-msgstr ""
+msgstr "跳过无效行"
 
 #: part/serializers.py:1699
 msgid "Enable this option to skip invalid rows"
-msgstr ""
+msgstr "启用此选项以跳过无效行"
 
 #: part/serializers.py:1704
 msgid "Copy Substitute Parts"
-msgstr ""
+msgstr "复制替代零件"
 
 #: part/serializers.py:1705
 msgid "Copy substitute parts when duplicate BOM items"
-msgstr ""
+msgstr "复制物料清单项目时复制替代零件"
 
 #: part/serializers.py:1739
 msgid "Clear Existing BOM"
-msgstr ""
+msgstr "清除现有的物料清单"
 
 #: part/serializers.py:1740
 msgid "Delete existing BOM items before uploading"
-msgstr ""
+msgstr "上传前删除现有的物料清单项目"
 
 #: part/serializers.py:1770
 msgid "No part column specified"
-msgstr ""
+msgstr "未指定零件列"
 
 #: part/serializers.py:1814
 msgid "Multiple matching parts found"
-msgstr ""
+msgstr "找到多个匹配的零件。"
 
 #: part/serializers.py:1817
 msgid "No matching part found"
-msgstr ""
+msgstr "没有找到匹配的零件"
 
 #: part/serializers.py:1820
 msgid "Part is not designated as a component"
-msgstr ""
+msgstr "零件未指定为组件"
 
 #: part/serializers.py:1829
 msgid "Quantity not provided"
-msgstr ""
+msgstr "未提供数量"
 
 #: part/serializers.py:1837
 msgid "Invalid quantity"
-msgstr ""
+msgstr "无效的数量"
 
 #: part/serializers.py:1858
 msgid "At least one BOM item is required"
-msgstr ""
+msgstr "至少需要一个物料清单项目"
 
 #: part/stocktake.py:224 templates/js/translated/part.js:1066
 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877
 #: templates/js/translated/purchase_order.js:2085
 msgid "Total Quantity"
-msgstr ""
+msgstr "总数量"
 
 #: part/stocktake.py:225
 msgid "Total Cost Min"
-msgstr ""
+msgstr "总费用最小值"
 
 #: part/stocktake.py:226
 msgid "Total Cost Max"
-msgstr ""
+msgstr "总费用最大值"
 
 #: part/stocktake.py:284
 msgid "Stocktake Report Available"
-msgstr ""
+msgstr "库存盘点报告可用"
 
 #: part/stocktake.py:285
 msgid "A new stocktake report is available for download"
-msgstr ""
+msgstr "有新的库存盘点报告可供下载"
 
 #: part/tasks.py:37
 msgid "Low stock notification"
-msgstr ""
+msgstr "低库存通知"
 
 #: part/tasks.py:39
 #, python-brace-format
 msgid "The available stock for {part.name} has fallen below the configured minimum level"
-msgstr ""
+msgstr "可用 {part.name}库存已经跌到设置的最低值"
 
 #: part/templates/part/bom.html:6
 msgid "You do not have permission to edit the BOM."
-msgstr ""
+msgstr "没有权限编辑物料清单"
 
 #: part/templates/part/bom.html:15
 msgid "The BOM this part has been changed, and must be validated"
-msgstr ""
+msgstr "此物料清单中的零件已被更改,必须验证"
 
 #: part/templates/part/bom.html:17
 #, python-format
 msgid "This BOM was last checked by %(checker)s on %(check_date)s"
-msgstr ""
+msgstr "物料清单最近被%(checker)s于%(check_date)s 修改"
 
 #: part/templates/part/bom.html:21
 msgid "This BOM has not been validated."
-msgstr ""
+msgstr "物料清单己失效"
 
 #: part/templates/part/category.html:35
 msgid "Perform stocktake for this part category"
-msgstr ""
+msgstr "对此类零件做库存盘点"
 
 #: part/templates/part/category.html:41 part/templates/part/category.html:45
 msgid "You are subscribed to notifications for this category"
-msgstr ""
+msgstr "您已订阅此类别的通知"
 
 #: part/templates/part/category.html:49
 msgid "Subscribe to notifications for this category"
-msgstr ""
+msgstr "订阅此类别的通知"
 
 #: part/templates/part/category.html:55
 msgid "Category Actions"
-msgstr ""
+msgstr "类别操作"
 
 #: part/templates/part/category.html:60
 msgid "Edit category"
-msgstr ""
+msgstr "编辑类别"
 
 #: part/templates/part/category.html:61
 msgid "Edit Category"
-msgstr ""
+msgstr "编辑类别"
 
 #: part/templates/part/category.html:65
 msgid "Delete category"
-msgstr ""
+msgstr "删除类别"
 
 #: part/templates/part/category.html:66
 msgid "Delete Category"
-msgstr ""
+msgstr "删除类别"
 
 #: part/templates/part/category.html:102
 msgid "Top level part category"
-msgstr ""
+msgstr "最高级零件类别"
 
 #: part/templates/part/category.html:127
 msgid "Parts (Including subcategories)"
-msgstr ""
+msgstr "零件 (包括子类别)"
 
 #: part/templates/part/category.html:165
 msgid "Create new part"
-msgstr ""
+msgstr "新建零件"
 
 #: part/templates/part/category.html:166 templates/js/translated/bom.js:444
 msgid "New Part"
-msgstr ""
+msgstr "新零件"
 
 #: part/templates/part/category.html:192
 #: templates/InvenTree/settings/part_parameters.html:7
 #: templates/InvenTree/settings/sidebar.html:49
 msgid "Part Parameters"
-msgstr ""
+msgstr "零件参数"
 
 #: part/templates/part/category.html:211
 msgid "Create new part category"
-msgstr ""
+msgstr "新建零件类别"
 
 #: part/templates/part/category.html:212
 msgid "New Category"
-msgstr ""
+msgstr "新建类别"
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
-msgstr ""
+msgstr "导入零件"
 
 #: part/templates/part/copy_part.html:10
 #, python-format
 msgid "Make a copy of part '%(full_name)s'."
-msgstr ""
+msgstr "制作一个 '%(full_name)s'零件的副本."
 
 #: part/templates/part/copy_part.html:14
 #: part/templates/part/create_part.html:11
 msgid "Possible Matching Parts"
-msgstr ""
+msgstr "可能的匹配项"
 
 #: part/templates/part/copy_part.html:15
 #: part/templates/part/create_part.html:12
 msgid "The new part may be a duplicate of these existing parts"
-msgstr ""
+msgstr "新零件可能与这些现有零件重复。"
 
 #: part/templates/part/create_part.html:17
 #, python-format
 msgid "%(full_name)s - <em>%(desc)s</em> (%(match_per)s%% match)"
-msgstr ""
+msgstr "%(full_name)s - <em>%(desc)s</em> (%(match_per)s%% 匹配)"
 
 #: part/templates/part/detail.html:20
 msgid "Part Stock"
-msgstr ""
+msgstr "零件库存"
 
 #: part/templates/part/detail.html:44
 msgid "Refresh scheduling data"
-msgstr ""
+msgstr "刷新排产数据"
 
 #: part/templates/part/detail.html:45 part/templates/part/prices.html:15
 #: templates/js/translated/tables.js:552
 msgid "Refresh"
-msgstr ""
+msgstr "刷新"
 
 #: part/templates/part/detail.html:66
 msgid "Add stocktake information"
-msgstr ""
+msgstr "添加盘点信息"
 
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2215 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
-msgstr ""
+msgstr "库存盘点"
 
 #: part/templates/part/detail.html:83
 msgid "Part Test Templates"
-msgstr ""
+msgstr "零件测试模板"
 
 #: part/templates/part/detail.html:88
 msgid "Add Test Template"
-msgstr ""
+msgstr "添加测试模板"
 
 #: part/templates/part/detail.html:139 stock/templates/stock/item.html:49
 msgid "Sales Order Allocations"
-msgstr ""
+msgstr "分配销售订单"
 
 #: part/templates/part/detail.html:156
 msgid "Part Notes"
-msgstr ""
+msgstr "零件备注"
 
 #: part/templates/part/detail.html:171
 msgid "Part Variants"
-msgstr ""
+msgstr "零件变体"
 
 #: part/templates/part/detail.html:175
 msgid "Create new variant"
-msgstr ""
+msgstr "创建零件变体"
 
 #: part/templates/part/detail.html:176
 msgid "New Variant"
-msgstr ""
+msgstr "新建零件变体"
 
 #: part/templates/part/detail.html:199
 msgid "Add new parameter"
-msgstr ""
+msgstr "添加参数"
 
 #: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58
 msgid "Related Parts"
-msgstr ""
+msgstr "关联零件"
 
 #: part/templates/part/detail.html:236 part/templates/part/detail.html:237
 msgid "Add Related"
-msgstr ""
+msgstr "添加关联"
 
 #: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17
 #: report/templates/report/inventree_bill_of_materials_report.html:100
 msgid "Bill of Materials"
-msgstr ""
+msgstr "物料清单"
 
 #: part/templates/part/detail.html:260
 msgid "Export actions"
-msgstr ""
+msgstr "输出操作"
 
 #: part/templates/part/detail.html:264 templates/js/translated/bom.js:340
 msgid "Export BOM"
-msgstr ""
+msgstr "输出物料清单"
 
 #: part/templates/part/detail.html:266
 msgid "Print BOM Report"
-msgstr ""
+msgstr "打印物料清单"
 
 #: part/templates/part/detail.html:272
 msgid "BOM actions"
-msgstr ""
+msgstr "物料清单操作"
 
 #: part/templates/part/detail.html:276
 msgid "Upload BOM"
-msgstr ""
+msgstr "上传物料清单"
 
 #: part/templates/part/detail.html:278
 msgid "Validate BOM"
-msgstr ""
+msgstr "验证物料清单"
 
 #: part/templates/part/detail.html:283 part/templates/part/detail.html:284
 #: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321
 msgid "Add BOM Item"
-msgstr ""
+msgstr "添加物料清单项"
 
 #: part/templates/part/detail.html:297
 msgid "Assemblies"
-msgstr ""
+msgstr "装配体"
 
 #: part/templates/part/detail.html:313
 msgid "Part Builds"
-msgstr ""
+msgstr "零件组装"
 
 #: part/templates/part/detail.html:338 stock/templates/stock/item.html:36
 msgid "Build Order Allocations"
-msgstr ""
+msgstr "分配生产订单"
 
 #: part/templates/part/detail.html:352
 msgid "Part Suppliers"
-msgstr ""
+msgstr "零件供应商"
 
 #: part/templates/part/detail.html:372
 msgid "Part Manufacturers"
-msgstr ""
+msgstr "零件制造商"
 
 #: part/templates/part/detail.html:659
 msgid "Related Part"
-msgstr ""
+msgstr "关联零件"
 
 #: part/templates/part/detail.html:667
 msgid "Add Related Part"
-msgstr ""
+msgstr "添加关联零件"
 
 #: part/templates/part/detail.html:752
 msgid "Add Test Result Template"
-msgstr ""
+msgstr "添加测试结果模板"
 
 #: part/templates/part/import_wizard/ajax_part_upload.html:29
 #: part/templates/part/import_wizard/part_upload.html:14
 msgid "Insufficient privileges."
-msgstr ""
+msgstr "权限不足"
 
 #: part/templates/part/import_wizard/part_upload.html:8
 msgid "Return to Parts"
-msgstr ""
+msgstr "返回组件"
 
 #: part/templates/part/import_wizard/part_upload.html:13
 msgid "Import Parts from File"
-msgstr ""
+msgstr "从文件导入零件"
 
 #: part/templates/part/import_wizard/part_upload.html:31
 msgid "Requirements for part import"
-msgstr ""
+msgstr "零件导入要求"
 
 #: part/templates/part/import_wizard/part_upload.html:33
 msgid "The part import file must contain the required named columns as provided in the "
-msgstr ""
+msgstr "部分零件文件必须包含所提供的必填列数"
 
 #: part/templates/part/import_wizard/part_upload.html:33
 msgid "Part Import Template"
-msgstr ""
+msgstr "零件导入模板"
 
 #: part/templates/part/import_wizard/part_upload.html:89
 msgid "Download Part Import Template"
-msgstr ""
+msgstr "下载零件导入模板"
 
 #: part/templates/part/import_wizard/part_upload.html:92
 #: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343
 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189
 msgid "Format"
-msgstr ""
+msgstr "格式"
 
 #: part/templates/part/import_wizard/part_upload.html:93
 #: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344
 #: templates/js/translated/order.js:130
 msgid "Select file format"
-msgstr ""
+msgstr "选择文件格式"
 
 #: part/templates/part/part_app_base.html:12
 msgid "Part List"
-msgstr ""
+msgstr "零件列表"
 
 #: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
 msgid "You are subscribed to notifications for this part"
-msgstr ""
+msgstr "您已订阅此零件的通知"
 
 #: part/templates/part/part_base.html:33
 msgid "Subscribe to notifications for this part"
-msgstr ""
+msgstr "订阅此零件的通知"
 
 #: part/templates/part/part_base.html:52
 #: stock/templates/stock/item_base.html:62
 #: stock/templates/stock/location.html:74
 msgid "Print Label"
-msgstr ""
+msgstr "打印标签"
 
 #: part/templates/part/part_base.html:58
 msgid "Show pricing information"
-msgstr ""
+msgstr "显示定价信息"
 
 #: part/templates/part/part_base.html:63
 #: stock/templates/stock/item_base.html:110
 #: stock/templates/stock/location.html:83
 msgid "Stock actions"
-msgstr ""
+msgstr "库存操作"
 
 #: part/templates/part/part_base.html:70
 msgid "Count part stock"
-msgstr ""
+msgstr "清点零件库存"
 
 #: part/templates/part/part_base.html:76
 msgid "Transfer part stock"
-msgstr ""
+msgstr "转移零件库存"
 
 #: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293
 msgid "Part actions"
-msgstr ""
+msgstr "零件操作"
 
 #: part/templates/part/part_base.html:94
 msgid "Duplicate part"
-msgstr ""
+msgstr "重复的零件"
 
 #: part/templates/part/part_base.html:97
 msgid "Edit part"
-msgstr ""
+msgstr "编辑零件"
 
 #: part/templates/part/part_base.html:100
 msgid "Delete part"
-msgstr ""
+msgstr "删除零件"
 
 #: part/templates/part/part_base.html:119
 msgid "Part is a template part (variants can be made from this part)"
-msgstr ""
+msgstr "这是一个零件模板 (零件变体可以从中生成)"
 
 #: part/templates/part/part_base.html:123
 msgid "Part can be assembled from other parts"
-msgstr ""
+msgstr "零件可以由其他零件装配"
 
 #: part/templates/part/part_base.html:127
 msgid "Part can be used in assemblies"
-msgstr ""
+msgstr "零件可以用于装配体"
 
 #: part/templates/part/part_base.html:131
 msgid "Part stock is tracked by serial number"
-msgstr ""
+msgstr "通过序列号跟踪零件库存"
 
 #: part/templates/part/part_base.html:135
 msgid "Part can be purchased from external suppliers"
-msgstr ""
+msgstr "零件可以从外部供应商处购买"
 
 #: part/templates/part/part_base.html:139
 msgid "Part can be sold to customers"
-msgstr ""
+msgstr "零件可以销售给客户"
 
 #: part/templates/part/part_base.html:145
 msgid "Part is not active"
-msgstr ""
+msgstr "零件未激活"
 
 #: part/templates/part/part_base.html:146
 #: templates/js/translated/company.js:1277
@@ -7442,123 +7464,123 @@ msgstr ""
 #: templates/js/translated/model_renderers.js:306
 #: templates/js/translated/part.js:814 templates/js/translated/part.js:1218
 msgid "Inactive"
-msgstr ""
+msgstr "未激活"
 
 #: part/templates/part/part_base.html:153
 msgid "Part is virtual (not a physical part)"
-msgstr ""
+msgstr "零件是虚拟的(不是实体零件)"
 
 #: part/templates/part/part_base.html:163
 #: part/templates/part/part_base.html:682
 msgid "Show Part Details"
-msgstr ""
+msgstr "显示零件详情"
 
 #: part/templates/part/part_base.html:218
 #: stock/templates/stock/item_base.html:388
 msgid "Allocated to Build Orders"
-msgstr ""
+msgstr "分配生产订单"
 
 #: part/templates/part/part_base.html:227
 #: stock/templates/stock/item_base.html:381
 msgid "Allocated to Sales Orders"
-msgstr ""
+msgstr "分配销售订单"
 
 #: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219
 msgid "Can Build"
-msgstr ""
+msgstr "可生产"
 
 #: part/templates/part/part_base.html:291
 msgid "Minimum stock level"
-msgstr ""
+msgstr "最低库存水平"
 
 #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071
 #: templates/js/translated/part.js:1264 templates/js/translated/part.js:2444
 #: templates/js/translated/pricing.js:391
 #: templates/js/translated/pricing.js:1054
 msgid "Price Range"
-msgstr ""
+msgstr "价格范围 "
 
 #: part/templates/part/part_base.html:352
 msgid "Latest Serial Number"
-msgstr ""
+msgstr "最新序列号"
 
 #: part/templates/part/part_base.html:356
 #: stock/templates/stock/item_base.html:322
 msgid "Search for serial number"
-msgstr ""
+msgstr "搜索序列号"
 
 #: part/templates/part/part_base.html:444
 msgid "Part QR Code"
-msgstr ""
+msgstr "零件二维码"
 
 #: part/templates/part/part_base.html:461
 msgid "Link Barcode to Part"
-msgstr ""
+msgstr "关联条形码到零件"
 
 #: part/templates/part/part_base.html:512
 msgid "Calculate"
-msgstr ""
+msgstr "计算"
 
 #: part/templates/part/part_base.html:529
 msgid "Remove associated image from this part"
-msgstr ""
+msgstr "删除与零件关联的图片"
 
 #: part/templates/part/part_base.html:580
 msgid "No matching images found"
-msgstr ""
+msgstr "没有找到匹配的图片"
 
 #: part/templates/part/part_base.html:676
 msgid "Hide Part Details"
-msgstr ""
+msgstr "隐藏零件详细信息"
 
 #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76
 #: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485
 msgid "Supplier Pricing"
-msgstr ""
+msgstr "供应商价格"
 
 #: part/templates/part/part_pricing.html:26
 #: part/templates/part/part_pricing.html:52
 #: part/templates/part/part_pricing.html:95
 #: part/templates/part/part_pricing.html:110
 msgid "Unit Cost"
-msgstr ""
+msgstr "单位成本"
 
 #: part/templates/part/part_pricing.html:40
 msgid "No supplier pricing available"
-msgstr ""
+msgstr "没有可用的供应商价格"
 
 #: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:90
 #: part/templates/part/prices.html:250
 msgid "BOM Pricing"
-msgstr ""
+msgstr "物料清单价格"
 
 #: part/templates/part/part_pricing.html:66
 msgid "Unit Purchase Price"
-msgstr ""
+msgstr "单位采购价"
 
 #: part/templates/part/part_pricing.html:72
 msgid "Total Purchase Price"
-msgstr ""
+msgstr "采购总价"
 
 #: part/templates/part/part_pricing.html:83
 msgid "No BOM pricing available"
-msgstr ""
+msgstr "没有可用的物料清单价格"
 
 #: part/templates/part/part_pricing.html:92
 msgid "Internal Price"
-msgstr ""
+msgstr "内部价格"
 
 #: part/templates/part/part_pricing.html:123
 msgid "No pricing information is available for this part."
-msgstr ""
+msgstr "此零件无价格信息可用。"
 
 #: part/templates/part/part_scheduling.html:14
 msgid "Scheduled Quantity"
-msgstr ""
+msgstr "排产数量"
 
 #: part/templates/part/part_sidebar.html:11
 msgid "Variants"
-msgstr ""
+msgstr "变体"
 
 #: part/templates/part/part_sidebar.html:14
 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24
@@ -7569,36 +7591,36 @@ msgstr ""
 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
 #: templates/js/translated/stock.js:2069 templates/navbar.html:31
 msgid "Stock"
-msgstr "庫存"
+msgstr "库存"
 
 #: part/templates/part/part_sidebar.html:30
 #: templates/InvenTree/settings/sidebar.html:39
 msgid "Pricing"
-msgstr ""
+msgstr "定价"
 
 #: part/templates/part/part_sidebar.html:44
 msgid "Scheduling"
-msgstr ""
+msgstr "排产"
 
 #: part/templates/part/part_sidebar.html:54
 msgid "Test Templates"
-msgstr ""
+msgstr "测试模板"
 
 #: part/templates/part/part_thumb.html:11
 msgid "Select from existing images"
-msgstr ""
+msgstr "从现存图片选择"
 
 #: part/templates/part/prices.html:11
 msgid "Pricing Overview"
-msgstr ""
+msgstr "价格概览"
 
 #: part/templates/part/prices.html:14
 msgid "Refresh Part Pricing"
-msgstr ""
+msgstr "更新零件价格"
 
 #: part/templates/part/prices.html:17
 msgid "Override Part Pricing"
-msgstr ""
+msgstr "覆盖零件价格"
 
 #: part/templates/part/prices.html:18
 #: templates/InvenTree/settings/settings_staff_js.html:80
@@ -7607,7 +7629,7 @@ msgstr ""
 #: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
 #: templates/notes_buttons.html:4
 msgid "Edit"
-msgstr ""
+msgstr "编辑"
 
 #: part/templates/part/prices.html:28 stock/admin.py:247
 #: stock/templates/stock/item_base.html:446
@@ -7615,338 +7637,338 @@ msgstr ""
 #: templates/js/translated/company.js:1703
 #: templates/js/translated/stock.js:2245
 msgid "Last Updated"
-msgstr ""
+msgstr "最新更新"
 
 #: part/templates/part/prices.html:37 part/templates/part/prices.html:127
 msgid "Price Category"
-msgstr ""
+msgstr "价格类别"
 
 #: part/templates/part/prices.html:38 part/templates/part/prices.html:128
 msgid "Minimum"
-msgstr ""
+msgstr "最小值"
 
 #: part/templates/part/prices.html:39 part/templates/part/prices.html:129
 msgid "Maximum"
-msgstr ""
+msgstr "最大值"
 
 #: part/templates/part/prices.html:51 part/templates/part/prices.html:174
 msgid "Internal Pricing"
-msgstr ""
+msgstr "内部价格"
 
 #: part/templates/part/prices.html:64 part/templates/part/prices.html:206
 msgid "Purchase History"
-msgstr ""
+msgstr "购买历史"
 
 #: part/templates/part/prices.html:98 part/templates/part/prices.html:274
 msgid "Variant Pricing"
-msgstr ""
+msgstr "变体价格"
 
 #: part/templates/part/prices.html:106
 msgid "Pricing Overrides"
-msgstr ""
+msgstr "定价覆盖"
 
 #: part/templates/part/prices.html:113
 msgid "Overall Pricing"
-msgstr ""
+msgstr "总价"
 
 #: part/templates/part/prices.html:149 part/templates/part/prices.html:326
 msgid "Sale History"
-msgstr ""
+msgstr "销售历史"
 
 #: part/templates/part/prices.html:157
 msgid "Sale price data is not available for this part"
-msgstr ""
+msgstr "该零件的售出价格数据不可用"
 
 #: part/templates/part/prices.html:164
 msgid "Price range data is not available for this part."
-msgstr ""
+msgstr "价格范围不可用"
 
 #: part/templates/part/prices.html:175 part/templates/part/prices.html:207
 #: part/templates/part/prices.html:228 part/templates/part/prices.html:251
 #: part/templates/part/prices.html:275 part/templates/part/prices.html:298
 #: part/templates/part/prices.html:327
 msgid "Jump to overview"
-msgstr ""
+msgstr "跳转到总览图"
 
 #: part/templates/part/prices.html:180
 msgid "Add Internal Price Break"
-msgstr ""
+msgstr "添加内部批发价"
 
 #: part/templates/part/prices.html:297
 msgid "Sale Pricing"
-msgstr ""
+msgstr "售出价格"
 
 #: part/templates/part/prices.html:303
 msgid "Add Sell Price Break"
-msgstr ""
+msgstr "添加售出批发价"
 
 #: part/templates/part/pricing_javascript.html:24
 msgid "Update Pricing"
-msgstr ""
+msgstr "更新价格"
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/part.js:704
 #: templates/js/translated/part.js:2140 templates/js/translated/part.js:2142
 msgid "No Stock"
-msgstr ""
+msgstr "无库存"
 
 #: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120
 msgid "Low Stock"
-msgstr "低庫存"
+msgstr "低库存"
 
 #: part/templates/part/upload_bom.html:8
 msgid "Return to BOM"
-msgstr ""
+msgstr "返回物料清单"
 
 #: part/templates/part/upload_bom.html:13
 msgid "Upload Bill of Materials"
-msgstr ""
+msgstr "上传材料单"
 
 #: part/templates/part/upload_bom.html:19
 msgid "BOM upload requirements"
-msgstr ""
+msgstr "物料清单上传要求"
 
 #: part/templates/part/upload_bom.html:23
 #: part/templates/part/upload_bom.html:90
 msgid "Upload BOM File"
-msgstr ""
+msgstr "上传 物料清单 文件"
 
 #: part/templates/part/upload_bom.html:29
 msgid "Submit BOM Data"
-msgstr ""
+msgstr "提交 物料清单 数据"
 
 #: part/templates/part/upload_bom.html:37
 msgid "Requirements for BOM upload"
-msgstr ""
+msgstr "物料清单 上传要求"
 
 #: part/templates/part/upload_bom.html:39
 msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
+msgstr "物料清单文件必须包含所需的命名列,如"
 
 #: part/templates/part/upload_bom.html:39
 msgid "BOM Upload Template"
-msgstr ""
+msgstr "物料清单 上传模板"
 
 #: part/templates/part/upload_bom.html:40
 msgid "Each part must already exist in the database"
-msgstr ""
+msgstr "每个零件必须已经存在于数据库中"
 
 #: part/templates/part/variant_part.html:9
 msgid "Create new part variant"
-msgstr ""
+msgstr "创建新的零件变体"
 
 #: part/templates/part/variant_part.html:10
 msgid "Create a new variant part from this template"
-msgstr ""
+msgstr "从此模板创建一个新的变体零件"
 
 #: part/views.py:111
 msgid "Match References"
-msgstr ""
+msgstr "匹配参考"
 
 #: part/views.py:275
 #, python-brace-format
 msgid "Can't import part {new_part.name} because there is no category assigned"
-msgstr ""
+msgstr "无法导入零件 {new_part.name} ,因为没有指定类别"
 
 #: part/views.py:425
 msgid "Select Part Image"
-msgstr ""
+msgstr "选择零件图片"
 
 #: part/views.py:448
 msgid "Updated part image"
-msgstr ""
+msgstr "更新零件图片"
 
 #: part/views.py:451
 msgid "Part image not found"
-msgstr ""
+msgstr "未找到零件图片"
 
 #: part/views.py:545
 msgid "Part Pricing"
-msgstr ""
+msgstr "零件价格"
 
 #: plugin/api.py:168
 msgid "Plugin cannot be deleted as it is currently active"
-msgstr ""
+msgstr "插件不能被删除,因为它当前处于激活状态"
 
 #: plugin/base/action/api.py:32
 msgid "No action specified"
-msgstr ""
+msgstr "未指定操作"
 
 #: plugin/base/action/api.py:41
 msgid "No matching action found"
-msgstr ""
+msgstr "未找到指定操作"
 
 #: plugin/base/barcodes/api.py:124 plugin/base/barcodes/api.py:328
 #: plugin/base/barcodes/api.py:503
 msgid "No match found for barcode data"
-msgstr ""
+msgstr "未找到匹配条形码数据"
 
 #: plugin/base/barcodes/api.py:128
 msgid "Match found for barcode data"
-msgstr ""
+msgstr "找到匹配条形码数据"
 
 #: plugin/base/barcodes/api.py:154
 #: templates/js/translated/purchase_order.js:1406
 msgid "Barcode matches existing item"
-msgstr ""
+msgstr "条形码匹配现有项目"
 
 #: plugin/base/barcodes/api.py:293
 msgid "No matching part data found"
-msgstr ""
+msgstr "没有找到匹配的零件数据"
 
 #: plugin/base/barcodes/api.py:310
 msgid "No matching supplier parts found"
-msgstr ""
+msgstr "没有找到匹配的供应商零件"
 
 #: plugin/base/barcodes/api.py:314
 msgid "Multiple matching supplier parts found"
-msgstr ""
+msgstr "找到多个匹配的供应商零件"
 
 #: plugin/base/barcodes/api.py:338
 msgid "Matched supplier part"
-msgstr ""
+msgstr "匹配供应商零件"
 
 #: plugin/base/barcodes/api.py:387
 msgid "Item has already been received"
-msgstr ""
+msgstr "项目已被接收"
 
 #: plugin/base/barcodes/api.py:424
 msgid "No match for supplier barcode"
-msgstr ""
+msgstr "供应商条形码没有匹配"
 
 #: plugin/base/barcodes/api.py:467
 msgid "Multiple matching line items found"
-msgstr ""
+msgstr "找到多个匹配的行项目"
 
 #: plugin/base/barcodes/api.py:470
 msgid "No matching line item found"
-msgstr ""
+msgstr "未找到匹配的行项目"
 
 #: plugin/base/barcodes/api.py:508 plugin/base/barcodes/api.py:515
 msgid "Barcode does not match an existing stock item"
-msgstr ""
+msgstr "条形码与现有的库存项不匹配"
 
 #: plugin/base/barcodes/api.py:526
 msgid "Stock item does not match line item"
-msgstr ""
+msgstr "库存项与行项目不匹配"
 
 #: plugin/base/barcodes/api.py:550 templates/js/translated/build.js:2590
 #: templates/js/translated/sales_order.js:1917
 msgid "Insufficient stock available"
-msgstr ""
+msgstr "可用库存不足"
 
 #: plugin/base/barcodes/api.py:559
 msgid "Stock item allocated to sales order"
-msgstr ""
+msgstr "库存项已分配到销售订单"
 
 #: plugin/base/barcodes/api.py:563
 msgid "Not enough information"
-msgstr ""
+msgstr "没有足够的信息"
 
 #: plugin/base/barcodes/mixins.py:147 plugin/base/barcodes/mixins.py:179
 msgid "Found multiple matching supplier parts for barcode"
-msgstr ""
+msgstr "发现多个匹配的供应商条目条形码"
 
 #: plugin/base/barcodes/mixins.py:197
 #, python-brace-format
 msgid "Found multiple purchase orders matching '{order}'"
-msgstr ""
+msgstr "找到多个匹配的采购订单 '{order}'"
 
 #: plugin/base/barcodes/mixins.py:201
 #, python-brace-format
 msgid "No matching purchase order for '{order}'"
-msgstr ""
+msgstr "没有找到匹配的采购订单  '{order}'"
 
 #: plugin/base/barcodes/mixins.py:207
 msgid "Purchase order does not match supplier"
-msgstr ""
+msgstr "采购订单不匹配供应商"
 
 #: plugin/base/barcodes/mixins.py:441
 msgid "Failed to find pending line item for supplier part"
-msgstr ""
+msgstr "未找到供应商零件待处理行项目"
 
 #: plugin/base/barcodes/mixins.py:472
 msgid "Further information required to receive line item"
-msgstr ""
+msgstr "需要更多信息以接收行项目"
 
 #: plugin/base/barcodes/mixins.py:480
 msgid "Received purchase order line item"
-msgstr ""
+msgstr "已收到采购订单行项目"
 
 #: plugin/base/barcodes/serializers.py:21
 msgid "Scanned barcode data"
-msgstr ""
+msgstr "已扫描条形码"
 
 #: plugin/base/barcodes/serializers.py:81
 msgid "Purchase Order to allocate items against"
-msgstr ""
+msgstr "根据采购订单以分配项目"
 
 #: plugin/base/barcodes/serializers.py:87
 msgid "Purchase order is not pending"
-msgstr ""
+msgstr "采购订单未处理"
 
 #: plugin/base/barcodes/serializers.py:105
 msgid "PurchaseOrder to receive items against"
-msgstr ""
+msgstr "根据采购订单以接收项目"
 
 #: plugin/base/barcodes/serializers.py:111
 msgid "Purchase order has not been placed"
-msgstr ""
+msgstr "采购订单尚未提交"
 
 #: plugin/base/barcodes/serializers.py:119
 msgid "Location to receive items into"
-msgstr ""
+msgstr "项目接收地点"
 
 #: plugin/base/barcodes/serializers.py:125
 msgid "Cannot select a structural location"
-msgstr ""
+msgstr "无法选择一个结构性位置"
 
 #: plugin/base/barcodes/serializers.py:139
 msgid "Sales Order to allocate items against"
-msgstr ""
+msgstr "根据销售订单以分配项目"
 
 #: plugin/base/barcodes/serializers.py:145
 msgid "Sales order is not pending"
-msgstr ""
+msgstr "销售订单未挂起"
 
 #: plugin/base/barcodes/serializers.py:153
 msgid "Sales order line item to allocate items against"
-msgstr ""
+msgstr "根据销售订单行项目分配项目"
 
 #: plugin/base/barcodes/serializers.py:160
 msgid "Sales order shipment to allocate items against"
-msgstr ""
+msgstr "根据销售订单配送分配项目"
 
 #: plugin/base/barcodes/serializers.py:166
 msgid "Shipment has already been delivered"
-msgstr ""
+msgstr "已交付"
 
 #: plugin/base/barcodes/serializers.py:171
 msgid "Quantity to allocate"
-msgstr ""
+msgstr "待分配数"
 
 #: plugin/base/label/label.py:39
 msgid "Label printing failed"
-msgstr ""
+msgstr "标签打印失败"
 
 #: plugin/base/label/mixins.py:63
 msgid "Error rendering label to PDF"
-msgstr ""
+msgstr "渲染标签到 PDF 时出错"
 
 #: plugin/base/label/mixins.py:76
 msgid "Error rendering label to HTML"
-msgstr ""
+msgstr "渲染标签到 HTML 时出错"
 
 #: plugin/base/label/mixins.py:111
 msgid "Error rendering label to PNG"
-msgstr ""
+msgstr "渲染标签到 PNG 时出错"
 
 #: plugin/builtin/barcodes/inventree_barcode.py:25
 msgid "InvenTree Barcodes"
-msgstr ""
+msgstr "InventTree 条形码"
 
 #: plugin/builtin/barcodes/inventree_barcode.py:26
 msgid "Provides native support for barcodes"
-msgstr ""
+msgstr "提供条形码本地支持"
 
 #: plugin/builtin/barcodes/inventree_barcode.py:28
 #: plugin/builtin/integration/core_notifications.py:35
@@ -7957,562 +7979,562 @@ msgstr ""
 #: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21
 #: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21
 msgid "InvenTree contributors"
-msgstr ""
+msgstr "InventTree 贡献者"
 
 #: plugin/builtin/integration/core_notifications.py:34
 msgid "InvenTree Notifications"
-msgstr ""
+msgstr "Inventree 通知"
 
 #: plugin/builtin/integration/core_notifications.py:36
 msgid "Integrated outgoing notification methods"
-msgstr ""
+msgstr "集成输出通知方法"
 
 #: plugin/builtin/integration/core_notifications.py:41
 #: plugin/builtin/integration/core_notifications.py:80
 msgid "Enable email notifications"
-msgstr ""
+msgstr "启用电子邮件通知"
 
 #: plugin/builtin/integration/core_notifications.py:42
 #: plugin/builtin/integration/core_notifications.py:81
 msgid "Allow sending of emails for event notifications"
-msgstr ""
+msgstr "允许发送事件通知邮件"
 
 #: plugin/builtin/integration/core_notifications.py:47
 msgid "Enable slack notifications"
-msgstr ""
+msgstr "启用黑名单通知"
 
 #: plugin/builtin/integration/core_notifications.py:49
 msgid "Allow sending of slack channel messages for event notifications"
-msgstr ""
+msgstr "允许发送事件通知的 slack 频道消息"
 
 #: plugin/builtin/integration/core_notifications.py:55
 msgid "Slack incoming webhook url"
-msgstr ""
+msgstr "Slack传入Webhook url"
 
 #: plugin/builtin/integration/core_notifications.py:56
 msgid "URL that is used to send messages to a slack channel"
-msgstr ""
+msgstr "用于发送消息到slack的 URL"
 
 #: plugin/builtin/integration/core_notifications.py:164
 msgid "Open link"
-msgstr ""
+msgstr "打开链接"
 
 #: plugin/builtin/integration/currency_exchange.py:22
 msgid "InvenTree Currency Exchange"
-msgstr ""
+msgstr "InventTree 货币兑换"
 
 #: plugin/builtin/integration/currency_exchange.py:23
 msgid "Default currency exchange integration"
-msgstr ""
+msgstr "默认货币兑换集成"
 
 #: plugin/builtin/labels/inventree_label.py:20
 msgid "InvenTree PDF label printer"
-msgstr ""
+msgstr "InventTree PDF 标签打印机"
 
 #: plugin/builtin/labels/inventree_label.py:21
 msgid "Provides native support for printing PDF labels"
-msgstr ""
+msgstr "为打印 PDF 标签提供本机支持"
 
 #: plugin/builtin/labels/inventree_label.py:29
 msgid "Debug mode"
-msgstr ""
+msgstr "调试模式"
 
 #: plugin/builtin/labels/inventree_label.py:30
 msgid "Enable debug mode - returns raw HTML instead of PDF"
-msgstr ""
+msgstr "启用调试模式 - 返回原始的 HTML 而不是 PDF"
 
 #: plugin/builtin/labels/inventree_machine.py:61
 msgid "InvenTree machine label printer"
-msgstr ""
+msgstr "InventTree 机器标签打印机"
 
 #: plugin/builtin/labels/inventree_machine.py:62
 msgid "Provides support for printing using a machine"
-msgstr ""
+msgstr "提供使用机器打印的支持"
 
 #: plugin/builtin/labels/inventree_machine.py:150
 msgid "last used"
-msgstr ""
+msgstr "最近使用"
 
 #: plugin/builtin/labels/inventree_machine.py:167
 msgid "Options"
-msgstr ""
+msgstr "选项"
 
 #: plugin/builtin/labels/label_sheet.py:29
 msgid "Page size for the label sheet"
-msgstr ""
+msgstr "标签页大小"
 
 #: plugin/builtin/labels/label_sheet.py:34
 msgid "Skip Labels"
-msgstr ""
+msgstr "跳过标签"
 
 #: plugin/builtin/labels/label_sheet.py:35
 msgid "Skip this number of labels when printing label sheets"
-msgstr ""
+msgstr "打印标签页时跳过标签的数量"
 
 #: plugin/builtin/labels/label_sheet.py:41
 msgid "Border"
-msgstr ""
+msgstr "边框"
 
 #: plugin/builtin/labels/label_sheet.py:42
 msgid "Print a border around each label"
-msgstr ""
+msgstr "打印每个标签的边框"
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
-msgstr ""
+msgstr "横向"
 
 #: plugin/builtin/labels/label_sheet.py:48
 msgid "Print the label sheet in landscape mode"
-msgstr ""
+msgstr "在横屏模式下打印标签表"
 
 #: plugin/builtin/labels/label_sheet.py:60
 msgid "InvenTree Label Sheet Printer"
-msgstr ""
+msgstr "库存树标签工作表"
 
 #: plugin/builtin/labels/label_sheet.py:61
 msgid "Arrays multiple labels onto a single sheet"
-msgstr ""
+msgstr "单张纸上的组合多个标签"
 
 #: plugin/builtin/labels/label_sheet.py:94
 msgid "Label is too large for page size"
-msgstr ""
+msgstr "标签大过页面"
 
 #: plugin/builtin/labels/label_sheet.py:128
 msgid "No labels were generated"
-msgstr ""
+msgstr "没有生成标签"
 
 #: plugin/builtin/suppliers/digikey.py:16
 msgid "Supplier Integration - DigiKey"
-msgstr ""
+msgstr "供应商集成 - DigiKey"
 
 #: plugin/builtin/suppliers/digikey.py:17
 msgid "Provides support for scanning DigiKey barcodes"
-msgstr ""
+msgstr "为扫描 DigiKey 条形码提供支持"
 
 #: plugin/builtin/suppliers/digikey.py:26
 msgid "The Supplier which acts as 'DigiKey'"
-msgstr ""
+msgstr "作为“DigiKey”的供应商。"
 
 #: plugin/builtin/suppliers/lcsc.py:18
 msgid "Supplier Integration - LCSC"
-msgstr ""
+msgstr "供应商集成 - LCSC"
 
 #: plugin/builtin/suppliers/lcsc.py:19
 msgid "Provides support for scanning LCSC barcodes"
-msgstr ""
+msgstr "为扫描 LCSC 条形码提供支持"
 
 #: plugin/builtin/suppliers/lcsc.py:27
 msgid "The Supplier which acts as 'LCSC'"
-msgstr ""
+msgstr "作为“LCSC”的供应商。"
 
 #: plugin/builtin/suppliers/mouser.py:16
 msgid "Supplier Integration - Mouser"
-msgstr ""
+msgstr "供应商集成 - Mouser"
 
 #: plugin/builtin/suppliers/mouser.py:17
 msgid "Provides support for scanning Mouser barcodes"
-msgstr ""
+msgstr "为扫描 Mouser条形码提供支持"
 
 #: plugin/builtin/suppliers/mouser.py:25
 msgid "The Supplier which acts as 'Mouser'"
-msgstr ""
+msgstr "作为“Mouser”的供应商。"
 
 #: plugin/builtin/suppliers/tme.py:18
 msgid "Supplier Integration - TME"
-msgstr ""
+msgstr "供应商集成 - TME"
 
 #: plugin/builtin/suppliers/tme.py:19
 msgid "Provides support for scanning TME barcodes"
-msgstr ""
+msgstr "为扫描 TME 条形码提供支持"
 
 #: plugin/builtin/suppliers/tme.py:27
 msgid "The Supplier which acts as 'TME'"
-msgstr ""
+msgstr "作为“LCSC”的供应商。"
 
 #: plugin/installer.py:194 plugin/installer.py:282
 msgid "Only staff users can administer plugins"
-msgstr ""
+msgstr "只有员工用户可以管理插件"
 
 #: plugin/installer.py:197
 msgid "Plugin installation is disabled"
-msgstr ""
+msgstr "插件安装已禁用"
 
 #: plugin/installer.py:248
 msgid "Installed plugin successfully"
-msgstr ""
+msgstr "插件安装成功"
 
 #: plugin/installer.py:254
 #, python-brace-format
 msgid "Installed plugin into {path}"
-msgstr ""
+msgstr "插件安装到 {path}"
 
 #: plugin/installer.py:273
 msgid "Plugin was not found in registry"
-msgstr ""
+msgstr "在插件仓库中找不到插件"
 
 #: plugin/installer.py:276
 msgid "Plugin is not a packaged plugin"
-msgstr ""
+msgstr "插件不是一个插件包"
 
 #: plugin/installer.py:279
 msgid "Plugin package name not found"
-msgstr ""
+msgstr "找不到插件包名称"
 
 #: plugin/installer.py:299
 msgid "Plugin uninstalling is disabled"
-msgstr ""
+msgstr "插件卸载已禁用"
 
 #: plugin/installer.py:303
 msgid "Plugin cannot be uninstalled as it is currently active"
-msgstr ""
+msgstr "插件无法卸载,因为它目前处于激活状态"
 
 #: plugin/installer.py:316
 msgid "Uninstalled plugin successfully"
-msgstr ""
+msgstr "插件卸载成功"
 
 #: plugin/models.py:30
 msgid "Plugin Configuration"
-msgstr ""
+msgstr "插件配置"
 
 #: plugin/models.py:31
 msgid "Plugin Configurations"
-msgstr ""
+msgstr "插件配置"
 
 #: plugin/models.py:34 users/models.py:89
 msgid "Key"
-msgstr ""
+msgstr "键"
 
 #: plugin/models.py:34
 msgid "Key of plugin"
-msgstr ""
+msgstr "插件的键"
 
 #: plugin/models.py:42
 msgid "PluginName of the plugin"
-msgstr ""
+msgstr "插件名称"
 
 #: plugin/models.py:49 plugin/serializers.py:90
 msgid "Package Name"
-msgstr ""
+msgstr "程序包名称"
 
 #: plugin/models.py:51
 msgid "Name of the installed package, if the plugin was installed via PIP"
-msgstr ""
+msgstr "已安装软件包的名称 (如果插件是通过 PIP 安装的)"
 
 #: plugin/models.py:56
 msgid "Is the plugin active"
-msgstr ""
+msgstr "插件是否激活"
 
 #: plugin/models.py:148 templates/js/translated/table_filters.js:370
 #: templates/js/translated/table_filters.js:504
 msgid "Installed"
-msgstr ""
+msgstr "已安装"
 
 #: plugin/models.py:157
 msgid "Sample plugin"
-msgstr ""
+msgstr "示例插件"
 
 #: plugin/models.py:165
 msgid "Builtin Plugin"
-msgstr ""
+msgstr "内置插件"
 
 #: plugin/models.py:173
 msgid "Package Plugin"
-msgstr ""
+msgstr "软件包插件"
 
 #: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9
 #: templates/js/translated/plugin.js:51
 msgid "Plugin"
-msgstr ""
+msgstr "插件"
 
 #: plugin/models.py:244
 msgid "Method"
-msgstr ""
+msgstr "方法"
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
-msgstr ""
+msgstr "未找到作者"
 
 #: plugin/registry.py:589
 #, python-brace-format
 msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
-msgstr ""
+msgstr "插件 '{p}' 与当前 InvenTree 版本{v} 不兼容"
 
 #: plugin/registry.py:592
 #, python-brace-format
 msgid "Plugin requires at least version {v}"
-msgstr ""
+msgstr "插件所需最低版本 {v}"
 
 #: plugin/registry.py:594
 #, python-brace-format
 msgid "Plugin requires at most version {v}"
-msgstr ""
+msgstr "插件要求高于版本 {v}"
 
 #: plugin/samples/integration/sample.py:52
 msgid "Enable PO"
-msgstr ""
+msgstr "启用 SSO"
 
 #: plugin/samples/integration/sample.py:53
 msgid "Enable PO functionality in InvenTree interface"
-msgstr ""
+msgstr "在 InventTree 界面中启用采购功能"
 
 #: plugin/samples/integration/sample.py:58
 msgid "API Key"
-msgstr ""
+msgstr "API Key"
 
 #: plugin/samples/integration/sample.py:59
 msgid "Key required for accessing external API"
-msgstr ""
+msgstr "访问外部 API 所需的密钥"
 
 #: plugin/samples/integration/sample.py:63
 msgid "Numerical"
-msgstr ""
+msgstr "数字化"
 
 #: plugin/samples/integration/sample.py:64
 msgid "A numerical setting"
-msgstr ""
+msgstr "数值设置"
 
 #: plugin/samples/integration/sample.py:69
 msgid "Choice Setting"
-msgstr ""
+msgstr "选择设置"
 
 #: plugin/samples/integration/sample.py:70
 msgid "A setting with multiple choices"
-msgstr ""
+msgstr "带有多个选项的设置"
 
 #: plugin/samples/integration/sample_currency_exchange.py:15
 msgid "Sample currency exchange plugin"
-msgstr ""
+msgstr "货币兑换插件示例"
 
 #: plugin/samples/integration/sample_currency_exchange.py:18
 msgid "InvenTree Contributors"
-msgstr ""
+msgstr "InventTree 贡献者"
 
 #: plugin/serializers.py:81
 msgid "Source URL"
-msgstr ""
+msgstr "源URL"
 
 #: plugin/serializers.py:83
 msgid "Source for the package - this can be a custom registry or a VCS path"
-msgstr ""
+msgstr "软件包的来源 - 这可以是自定义注册表或 VCS 路径"
 
 #: plugin/serializers.py:92
 msgid "Name for the Plugin Package - can also contain a version indicator"
-msgstr ""
+msgstr "插件包名称 - 也可以包含版本指示器"
 
 #: plugin/serializers.py:99
 #: templates/InvenTree/settings/plugin_settings.html:42
 #: templates/js/translated/plugin.js:86
 msgid "Version"
-msgstr ""
+msgstr "版本"
 
 #: plugin/serializers.py:101
 msgid "Version specifier for the plugin. Leave blank for latest version."
-msgstr ""
+msgstr "插件版本说明。新版请留白。"
 
 #: plugin/serializers.py:106
 msgid "Confirm plugin installation"
-msgstr ""
+msgstr "确认插件安装"
 
 #: plugin/serializers.py:108
 msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
-msgstr ""
+msgstr "这将把这个插件安装到当前实例中。这个实例将进行维护。"
 
 #: plugin/serializers.py:121
 msgid "Installation not confirmed"
-msgstr ""
+msgstr "安装尚未确认"
 
 #: plugin/serializers.py:123
 msgid "Either packagename of URL must be provided"
-msgstr ""
+msgstr "必须提供 URL 的软件包名称"
 
 #: plugin/serializers.py:156
 msgid "Full reload"
-msgstr ""
+msgstr "完全重载"
 
 #: plugin/serializers.py:157
 msgid "Perform a full reload of the plugin registry"
-msgstr ""
+msgstr "执行插件库的完整重载"
 
 #: plugin/serializers.py:163
 msgid "Force reload"
-msgstr ""
+msgstr "强制重载"
 
 #: plugin/serializers.py:165
 msgid "Force a reload of the plugin registry, even if it is already loaded"
-msgstr ""
+msgstr "强制重载插件库,即使已经加载"
 
 #: plugin/serializers.py:172
 msgid "Collect plugins"
-msgstr ""
+msgstr "收集插件"
 
 #: plugin/serializers.py:173
 msgid "Collect plugins and add them to the registry"
-msgstr ""
+msgstr "收集插件并添加到注册表中"
 
 #: plugin/serializers.py:195
 msgid "Activate Plugin"
-msgstr ""
+msgstr "激活插件"
 
 #: plugin/serializers.py:196
 msgid "Activate this plugin"
-msgstr ""
+msgstr "激活此插件"
 
 #: plugin/serializers.py:219
 msgid "Delete configuration"
-msgstr ""
+msgstr "删除配置"
 
 #: plugin/serializers.py:220
 msgid "Delete the plugin configuration from the database"
-msgstr ""
+msgstr "从数据库中删除插件配置"
 
 #: report/api.py:158
 msgid "No valid objects provided to template"
-msgstr ""
+msgstr "没有为模板提供有效对象"
 
 #: report/api.py:197 report/api.py:234
 #, python-brace-format
 msgid "Template file '{template}' is missing or does not exist"
-msgstr ""
+msgstr "模板文件'{template}' 丢失或不存在"
 
 #: report/api.py:319
 msgid "Test report"
-msgstr ""
+msgstr "测试报告"
 
 #: report/helpers.py:15
 msgid "A4"
-msgstr ""
+msgstr "A4"
 
 #: report/helpers.py:16
 msgid "A3"
-msgstr ""
+msgstr "A3"
 
 #: report/helpers.py:17
 msgid "Legal"
-msgstr ""
+msgstr "法律条款"
 
 #: report/helpers.py:18
 msgid "Letter"
-msgstr ""
+msgstr "字母"
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
-msgstr ""
+msgstr "模版名称"
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
-msgstr ""
+msgstr "报告模板文件"
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
-msgstr ""
+msgstr "报告模板描述"
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
-msgstr ""
+msgstr "报告版本号 (自动增量)"
 
-#: report/models.py:203
+#: report/models.py:204
 msgid "Page size for PDF reports"
-msgstr ""
+msgstr "PDF 报告的页面大小"
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
-msgstr ""
+msgstr "横向渲染报告"
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
-msgstr ""
+msgstr "生成标签文件名模式"
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
-msgstr ""
+msgstr "已启用报表模板"
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
-msgstr ""
+msgstr "库存项查询筛选器 (逗号分隔的键值对列表)"
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
-msgstr ""
+msgstr "包括已安装的测试"
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
-msgstr ""
+msgstr "包含组装物品内安装的库存项的测试结果"
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
-msgstr ""
+msgstr "生产过滤器"
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
-msgstr ""
+msgstr "查询筛选器 (逗号分隔的键值对列表)"
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
-msgstr ""
+msgstr "零件过滤器"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
-msgstr ""
+msgstr "零件查询筛选器 (逗号分隔的键值对列表)"
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
-msgstr ""
+msgstr "采购订单查询筛选器"
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
-msgstr ""
+msgstr "销售订单查询筛选器"
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
-msgstr ""
+msgstr "退货订单查询筛选器"
 
-#: report/models.py:640
+#: report/models.py:641
 msgid "Snippet file with this name already exists"
-msgstr ""
+msgstr "已存在该名称的片段文件"
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
-msgstr ""
+msgstr "代码片段"
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
-msgstr ""
+msgstr "报告代码片段"
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
-msgstr ""
+msgstr "代码片段文件描述"
 
-#: report/models.py:713
+#: report/models.py:714
 msgid "Asset file with this name already exists"
-msgstr ""
+msgstr "已存在该名称的资产文件"
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
-msgstr ""
+msgstr "资产"
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
-msgstr ""
+msgstr "报告代码片段文件"
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
-msgstr ""
+msgstr "代码片段文件描述"
 
-#: report/models.py:751
+#: report/models.py:752
 msgid "stock location query filters (comma-separated list of key=value pairs)"
-msgstr ""
+msgstr "库存零件位置查询筛选器 (逗号分隔的键值对列表)"
 
 #: report/templates/report/inventree_bill_of_materials_report.html:133
 msgid "Materials needed"
-msgstr ""
+msgstr "所需材料清单"
 
 #: report/templates/report/inventree_build_order_base.html:146
 msgid "Required For"
-msgstr ""
+msgstr "需要给"
 
 #: report/templates/report/inventree_po_report_base.html:15
 msgid "Supplier was deleted"
-msgstr ""
+msgstr "供应商已删除"
 
 #: report/templates/report/inventree_po_report_base.html:30
 #: report/templates/report/inventree_so_report_base.html:30
@@ -8522,20 +8544,20 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:2116
 #: templates/js/translated/sales_order.js:1837
 msgid "Unit Price"
-msgstr ""
+msgstr "单价"
 
 #: report/templates/report/inventree_po_report_base.html:55
 #: report/templates/report/inventree_return_order_report_base.html:48
 #: report/templates/report/inventree_so_report_base.html:55
 msgid "Extra Line Items"
-msgstr ""
+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:2018
 #: templates/js/translated/sales_order.js:1806
 msgid "Total"
-msgstr ""
+msgstr "总计"
 
 #: report/templates/report/inventree_return_order_report_base.html:25
 #: report/templates/report/inventree_test_report_base.html:88
@@ -8550,1280 +8572,1280 @@ msgstr ""
 #: templates/js/translated/sales_order.js:1696
 #: templates/js/translated/stock.js:596
 msgid "Serial Number"
-msgstr ""
+msgstr "序列号"
 
 #: report/templates/report/inventree_slr_report.html:97
 msgid "Stock location items"
-msgstr ""
+msgstr "库存地点项目"
 
 #: report/templates/report/inventree_test_report_base.html:21
 msgid "Stock Item Test Report"
-msgstr ""
+msgstr "库存项测试报告"
 
 #: report/templates/report/inventree_test_report_base.html:97
 msgid "Test Results"
-msgstr ""
+msgstr "测试结果"
 
 #: report/templates/report/inventree_test_report_base.html:102
 #: templates/js/translated/stock.js:1492
 msgid "Test"
-msgstr ""
+msgstr "测试"
 
 #: report/templates/report/inventree_test_report_base.html:103
 #: stock/models.py:2435
 msgid "Result"
-msgstr ""
+msgstr "结果"
 
 #: report/templates/report/inventree_test_report_base.html:130
 msgid "Pass"
-msgstr ""
+msgstr "通过"
 
 #: report/templates/report/inventree_test_report_base.html:132
 msgid "Fail"
-msgstr ""
+msgstr "失败"
 
 #: report/templates/report/inventree_test_report_base.html:139
 msgid "No result (required)"
-msgstr ""
+msgstr "无结果 (必填)"
 
 #: report/templates/report/inventree_test_report_base.html:141
 msgid "No result"
-msgstr ""
+msgstr "没有结果"
 
 #: report/templates/report/inventree_test_report_base.html:154
 #: stock/templates/stock/stock_sidebar.html:16
 msgid "Installed Items"
-msgstr ""
+msgstr "已安装的项目"
 
 #: report/templates/report/inventree_test_report_base.html:168
 #: stock/admin.py:162 templates/js/translated/stock.js:700
 #: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110
 msgid "Serial"
-msgstr ""
+msgstr "系列"
 
 #: report/templatetags/report.py:96
 msgid "Asset file does not exist"
-msgstr ""
+msgstr "Asset文件不存在"
 
 #: report/templatetags/report.py:152 report/templatetags/report.py:217
 msgid "Image file not found"
-msgstr ""
+msgstr "找不到图片文件"
 
 #: report/templatetags/report.py:242
 msgid "part_image tag requires a Part instance"
-msgstr ""
+msgstr "parpart_image 标签需要一个零件实例"
 
 #: report/templatetags/report.py:283
 msgid "company_image tag requires a Company instance"
-msgstr ""
+msgstr "公司图片标签需要一个公司实例"
 
 #: stock/admin.py:52 stock/admin.py:172
 msgid "Location ID"
-msgstr ""
+msgstr "位置 ID"
 
 #: stock/admin.py:54 stock/admin.py:176
 msgid "Location Name"
-msgstr ""
+msgstr "位置名称"
 
 #: stock/admin.py:64 stock/templates/stock/location.html:131
 #: stock/templates/stock/location.html:137
 msgid "Location Path"
-msgstr ""
+msgstr "地点路径"
 
 #: stock/admin.py:149
 msgid "Stock Item ID"
-msgstr ""
+msgstr "库存项 ID"
 
 #: stock/admin.py:168
 msgid "Status Code"
-msgstr ""
+msgstr "状态代码"
 
 #: stock/admin.py:180
 msgid "Supplier Part ID"
-msgstr ""
+msgstr "供应商零件 ID"
 
 #: stock/admin.py:185
 msgid "Supplier ID"
-msgstr ""
+msgstr "供应商 ID"
 
 #: stock/admin.py:191
 msgid "Supplier Name"
-msgstr ""
+msgstr "供应商名称;"
 
 #: stock/admin.py:196
 msgid "Customer ID"
-msgstr ""
+msgstr "客户 ID"
 
 #: stock/admin.py:201 stock/models.py:792
 #: stock/templates/stock/item_base.html:354
 msgid "Installed In"
-msgstr ""
+msgstr "已安装"
 
 #: stock/admin.py:206
 msgid "Build ID"
-msgstr ""
+msgstr "生产 ID"
 
 #: stock/admin.py:216
 msgid "Sales Order ID"
-msgstr ""
+msgstr "销售订单 ID"
 
 #: stock/admin.py:221
 msgid "Purchase Order ID"
-msgstr ""
+msgstr "采购订单 ID"
 
 #: stock/admin.py:236
 msgid "Review Needed"
-msgstr ""
+msgstr "需要审核"
 
 #: stock/admin.py:241
 msgid "Delete on Deplete"
-msgstr ""
+msgstr "在消耗品上删除"
 
 #: stock/admin.py:256 stock/models.py:886
 #: stock/templates/stock/item_base.html:433
 #: templates/js/translated/stock.js:2229 users/models.py:113
 msgid "Expiry Date"
-msgstr ""
+msgstr "到期日期"
 
-#: stock/api.py:281
+#: stock/api.py:284
 msgid "Filter by location depth"
-msgstr ""
+msgstr "按位置深度筛选"
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
-msgstr ""
+msgstr "在筛选结果中包含子地点"
 
-#: stock/api.py:322
+#: stock/api.py:325
 msgid "Parent Location"
-msgstr ""
+msgstr "上级地点"
 
-#: stock/api.py:323
+#: stock/api.py:326
 msgid "Filter by parent location"
-msgstr ""
+msgstr "按上级位置筛选"
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
-msgstr ""
+msgstr "外部位置"
 
-#: stock/api.py:753
+#: stock/api.py:767
 msgid "Part Tree"
-msgstr ""
+msgstr "零件树"
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
-msgstr ""
+msgstr "过期日期前"
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
-msgstr ""
+msgstr "过期日期后"
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
-msgstr ""
+msgstr "过期"
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
-msgstr ""
+msgstr "请先输入数量!"
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
-msgstr ""
+msgstr "必须提供有效的零件"
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
-msgstr ""
+msgstr "给定的供应商零件不存在"
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
-msgstr ""
+msgstr "供应商零件有定义的包装大小,但 use_pack_size 标志未设置"
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
-msgstr ""
+msgstr "不能为不可跟踪的零件提供序列号"
 
 #: stock/models.py:63
 msgid "Stock Location type"
-msgstr ""
+msgstr "库存地点类型"
 
 #: stock/models.py:64
 msgid "Stock Location types"
-msgstr ""
+msgstr "库存地点类型"
 
 #: stock/models.py:90
 msgid "Default icon for all locations that have no icon set (optional)"
-msgstr ""
+msgstr "为所有没有图标的位置设置默认图标(可选)"
 
 #: stock/models.py:125 stock/models.py:774
 #: stock/templates/stock/location.html:17
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
-msgstr ""
+msgstr "库存地点"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
-msgstr ""
+msgstr "库存地点"
 
 #: stock/models.py:158 stock/models.py:935
 #: stock/templates/stock/item_base.html:247
 msgid "Owner"
-msgstr ""
+msgstr "所有者"
 
 #: stock/models.py:159 stock/models.py:936
 msgid "Select Owner"
-msgstr ""
+msgstr "选择所有者"
 
 #: stock/models.py:167
 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
-msgstr ""
+msgstr "库存项可能不直接位于结构库存地点,但可能位于其子地点。"
 
 #: stock/models.py:174 templates/js/translated/stock.js:2781
 #: templates/js/translated/table_filters.js:243
 msgid "External"
-msgstr ""
+msgstr "外部的"
 
 #: stock/models.py:175
 msgid "This is an external stock location"
-msgstr ""
+msgstr "这是一个外部库存地点"
 
 #: stock/models.py:181 templates/js/translated/stock.js:2790
 #: templates/js/translated/table_filters.js:246
 msgid "Location type"
-msgstr ""
+msgstr "位置类型"
 
 #: stock/models.py:185
 msgid "Stock location type of this location"
-msgstr ""
+msgstr "该位置的库存地点类型"
 
 #: stock/models.py:254
 msgid "You cannot make this stock location structural because some stock items are already located into it!"
-msgstr ""
+msgstr "您不能将此库存地点设置为结构性,因为某些库存项已经位于它!"
 
 #: stock/models.py:626
 msgid "Stock items cannot be located into structural stock locations!"
-msgstr ""
+msgstr "库存项不能存放在结构性库存地点!"
 
 #: stock/models.py:656 stock/serializers.py:290
 msgid "Stock item cannot be created for virtual parts"
-msgstr ""
+msgstr "无法为虚拟零件创建库存项"
 
 #: stock/models.py:673
 #, python-brace-format
 msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
-msgstr ""
+msgstr "零件类型 ('{self.supplier_part.part}') 必须为 {self.part}"
 
 #: stock/models.py:683 stock/models.py:696
 msgid "Quantity must be 1 for item with a serial number"
-msgstr ""
+msgstr "数量必须是带序列号的条目的 1"
 
 #: stock/models.py:686
 msgid "Serial number cannot be set if quantity greater than 1"
-msgstr ""
+msgstr "如果数量大于1,则不能设置序列号"
 
 #: stock/models.py:710
 msgid "Item cannot belong to itself"
-msgstr ""
+msgstr "项目不能属于自己。"
 
 #: stock/models.py:715
 msgid "Item must have a build reference if is_building=True"
-msgstr ""
+msgstr "如果是生产=True的话,项目必须有生产参考"
 
 #: stock/models.py:728
 msgid "Build reference does not point to the same part object"
-msgstr ""
+msgstr "生产引用没有指向同一零件对象"
 
 #: stock/models.py:744
 msgid "Parent Stock Item"
-msgstr ""
+msgstr "上级库存项"
 
 #: stock/models.py:756
 msgid "Base part"
-msgstr ""
+msgstr "基础零件"
 
 #: stock/models.py:766
 msgid "Select a matching supplier part for this stock item"
-msgstr ""
+msgstr "请为此零件选择一个供应商"
 
 #: stock/models.py:778
 msgid "Where is this stock item located?"
-msgstr ""
+msgstr "此库存项的位置?"
 
 #: stock/models.py:786 stock/serializers.py:1351
 msgid "Packaging this stock item is stored in"
-msgstr ""
+msgstr "此库存项包装存储在"
 
 #: stock/models.py:797
 msgid "Is this item installed in another item?"
-msgstr ""
+msgstr "这个项目是否安装在另一个项目中?"
 
 #: stock/models.py:816
 msgid "Serial number for this item"
-msgstr ""
+msgstr "此条目的序列号"
 
 #: stock/models.py:830 stock/serializers.py:1334
 msgid "Batch code for this stock item"
-msgstr "此庫存品項的生產批號"
+msgstr "此库存项的批号"
 
 #: stock/models.py:835
 msgid "Stock Quantity"
-msgstr ""
+msgstr "库存量"
 
 #: stock/models.py:845
 msgid "Source Build"
-msgstr ""
+msgstr "源生产:"
 
 #: stock/models.py:848
 msgid "Build for this stock item"
-msgstr ""
+msgstr "此库存项的生产"
 
 #: stock/models.py:855 stock/templates/stock/item_base.html:363
 msgid "Consumed By"
-msgstr ""
+msgstr "消耗者"
 
 #: stock/models.py:858
 msgid "Build order which consumed this stock item"
-msgstr ""
+msgstr "消耗该库存项的生产订单"
 
 #: stock/models.py:867
 msgid "Source Purchase Order"
-msgstr ""
+msgstr "采购订单源"
 
 #: stock/models.py:871
 msgid "Purchase order for this stock item"
-msgstr ""
+msgstr "此库存项的采购订单"
 
 #: stock/models.py:877
 msgid "Destination Sales Order"
-msgstr ""
+msgstr "目标销售订单"
 
 #: stock/models.py:888
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
-msgstr ""
+msgstr "库存项的有效期。超过此日期,库存将被视为过期"
 
 #: stock/models.py:906
 msgid "Delete on deplete"
-msgstr ""
+msgstr "耗尽时删除"
 
 #: stock/models.py:907
 msgid "Delete this Stock Item when stock is depleted"
-msgstr ""
+msgstr "当库存耗尽时删除此库存项"
 
 #: stock/models.py:927
 msgid "Single unit purchase price at time of purchase"
-msgstr ""
+msgstr "购买时的单价"
 
 #: stock/models.py:958
 msgid "Converted to part"
-msgstr ""
+msgstr "转换为零件"
 
 #: stock/models.py:1468
 msgid "Part is not set as trackable"
-msgstr ""
+msgstr "零件未设置为可跟踪"
 
 #: stock/models.py:1474
 msgid "Quantity must be integer"
-msgstr ""
+msgstr "数量必须是整数"
 
 #: stock/models.py:1482
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({self.quantity})"
-msgstr ""
+msgstr "数量不得超过现有库存量 ({self.quantity})"
 
 #: stock/models.py:1488
 msgid "Serial numbers must be a list of integers"
-msgstr ""
+msgstr "序列号必须是整数列表"
 
 #: stock/models.py:1493
 msgid "Quantity does not match serial numbers"
-msgstr ""
+msgstr "数量不匹配序列号"
 
 #: stock/models.py:1501 stock/serializers.py:529
 msgid "Serial numbers already exist"
-msgstr ""
+msgstr "序列号已存在"
 
 #: stock/models.py:1598
 msgid "Test template does not exist"
-msgstr ""
+msgstr "测试模板不存在"
 
 #: stock/models.py:1616
 msgid "Stock item has been assigned to a sales order"
-msgstr ""
+msgstr "库存项已分配到销售订单"
 
 #: stock/models.py:1620
 msgid "Stock item is installed in another item"
-msgstr ""
+msgstr "库存项已安装在另一个项目中"
 
 #: stock/models.py:1623
 msgid "Stock item contains other items"
-msgstr ""
+msgstr "库存项包含其他项目"
 
 #: stock/models.py:1626
 msgid "Stock item has been assigned to a customer"
-msgstr ""
+msgstr "库存项已分配给客户"
 
 #: stock/models.py:1629
 msgid "Stock item is currently in production"
-msgstr ""
+msgstr "库存项目前正在生产"
 
 #: stock/models.py:1632
 msgid "Serialized stock cannot be merged"
-msgstr ""
+msgstr "序列化的库存不能合并"
 
 #: stock/models.py:1639 stock/serializers.py:1240
 msgid "Duplicate stock items"
-msgstr ""
+msgstr "复制库存项"
 
 #: stock/models.py:1643
 msgid "Stock items must refer to the same part"
-msgstr ""
+msgstr "库存项必须指相同零件"
 
 #: stock/models.py:1651
 msgid "Stock items must refer to the same supplier part"
-msgstr ""
+msgstr "库存项必须是同一供应商的零件"
 
 #: stock/models.py:1656
 msgid "Stock status codes must match"
-msgstr ""
+msgstr "库存状态码必须匹配"
 
 #: stock/models.py:1873
 msgid "StockItem cannot be moved as it is not in stock"
-msgstr ""
+msgstr "库存项不能移动,因为它没有库存"
 
 #: stock/models.py:2336
 msgid "Entry notes"
-msgstr ""
+msgstr "条目注释"
 
 #: stock/models.py:2402
 msgid "Value must be provided for this test"
-msgstr ""
+msgstr "必须为此测试提供值"
 
 #: stock/models.py:2408
 msgid "Attachment must be uploaded for this test"
-msgstr ""
+msgstr "测试附件必须上传"
 
 #: stock/models.py:2435
 msgid "Test result"
-msgstr ""
+msgstr "测试结果"
 
 #: stock/models.py:2442
 msgid "Test output value"
-msgstr ""
+msgstr "测试输出值"
 
 #: stock/models.py:2450
 msgid "Test result attachment"
-msgstr ""
+msgstr "测验结果附件"
 
 #: stock/models.py:2454
 msgid "Test notes"
-msgstr ""
+msgstr "测试备注"
 
 #: stock/models.py:2462 templates/js/translated/stock.js:1545
 msgid "Test station"
-msgstr ""
+msgstr "测试站"
 
 #: stock/models.py:2463
 msgid "The identifier of the test station where the test was performed"
-msgstr ""
+msgstr "进行测试的测试站的标识符"
 
 #: stock/models.py:2469
 msgid "Started"
-msgstr ""
+msgstr "已开始"
 
 #: stock/models.py:2470
 msgid "The timestamp of the test start"
-msgstr ""
+msgstr "测试开始的时间戳"
 
 #: stock/models.py:2476
 msgid "Finished"
-msgstr ""
+msgstr "已完成"
 
 #: stock/models.py:2477
 msgid "The timestamp of the test finish"
-msgstr ""
+msgstr "测试结束的时间戳"
 
 #: stock/serializers.py:100
 msgid "Test template for this result"
-msgstr ""
+msgstr "此结果的测试模板"
 
 #: stock/serializers.py:119
 msgid "Template ID or test name must be provided"
-msgstr ""
+msgstr "必须提供模板 ID 或测试名称"
 
 #: stock/serializers.py:151
 msgid "The test finished time cannot be earlier than the test started time"
-msgstr ""
+msgstr "测试完成时间不能早于测试开始时间"
 
 #: stock/serializers.py:184
 msgid "Serial number is too large"
-msgstr ""
+msgstr "序列号太大"
 
 #: stock/serializers.py:282
 msgid "Use pack size when adding: the quantity defined is the number of packs"
-msgstr ""
+msgstr "添加时使用包大小:数量定义为包数量"
 
 #: stock/serializers.py:402
 msgid "Purchase price of this stock item, per unit or pack"
-msgstr ""
+msgstr "此库存项的购买价格,每单位或包装"
 
 #: stock/serializers.py:464
 msgid "Enter number of stock items to serialize"
-msgstr ""
+msgstr "输入要序列化的库存项数"
 
 #: stock/serializers.py:477
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
-msgstr ""
+msgstr "数量必不可减去 有效库存({q}) 数量"
 
 #: stock/serializers.py:484
 msgid "Enter serial numbers for new items"
-msgstr ""
+msgstr "输入新项目的序列号"
 
 #: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453
 msgid "Destination stock location"
-msgstr ""
+msgstr "目标库存地点"
 
 #: stock/serializers.py:502
 msgid "Optional note field"
-msgstr ""
+msgstr "可选注释字段"
 
 #: stock/serializers.py:512
 msgid "Serial numbers cannot be assigned to this part"
-msgstr ""
+msgstr "序列号不能分配到这个零件"
 
 #: stock/serializers.py:567
 msgid "Select stock item to install"
-msgstr ""
+msgstr "选择要安装的库存项"
 
 #: stock/serializers.py:574
 msgid "Quantity to Install"
-msgstr ""
+msgstr "要安装的数量"
 
 #: stock/serializers.py:575
 msgid "Enter the quantity of items to install"
-msgstr ""
+msgstr "输入要安装的物品数量"
 
 #: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756
 #: stock/serializers.py:806
 msgid "Add transaction note (optional)"
-msgstr ""
+msgstr "添加交易备注 (可选)"
 
 #: stock/serializers.py:588
 msgid "Quantity to install must be at least 1"
-msgstr ""
+msgstr "要安装的数量必须至少 1 个"
 
 #: stock/serializers.py:596
 msgid "Stock item is unavailable"
-msgstr ""
+msgstr "此库存项不可用"
 
 #: stock/serializers.py:607
 msgid "Selected part is not in the Bill of Materials"
-msgstr ""
+msgstr "选定零件不在该物料清单中"
 
 #: stock/serializers.py:620
 msgid "Quantity to install must not exceed available quantity"
-msgstr ""
+msgstr "要安装的数量不能超过可用数量"
 
 #: stock/serializers.py:655
 msgid "Destination location for uninstalled item"
-msgstr ""
+msgstr "卸载项目的目标位置"
 
 #: stock/serializers.py:690
 msgid "Select part to convert stock item into"
-msgstr ""
+msgstr "选择要将库存项转换成的零件"
 
 #: stock/serializers.py:703
 msgid "Selected part is not a valid option for conversion"
-msgstr ""
+msgstr "所选零件不是一个有效的转换选项"
 
 #: stock/serializers.py:720
 msgid "Cannot convert stock item with assigned SupplierPart"
-msgstr ""
+msgstr "无法转换已分配供应商零件的库存项"
 
 #: stock/serializers.py:751
 msgid "Destination location for returned item"
-msgstr ""
+msgstr "返回物品的目标位置"
 
 #: stock/serializers.py:788
 msgid "Select stock items to change status"
-msgstr ""
+msgstr "选择要改变状态的库存项"
 
 #: stock/serializers.py:794
 msgid "No stock items selected"
-msgstr ""
+msgstr "没有选择库存项"
 
 #: stock/serializers.py:890 stock/serializers.py:953
 #: stock/templates/stock/location.html:165
 #: stock/templates/stock/location.html:213
 #: stock/templates/stock/location_sidebar.html:5
 msgid "Sublocations"
-msgstr ""
+msgstr "次级地点"
 
 #: stock/serializers.py:1069
 msgid "Part must be salable"
-msgstr ""
+msgstr "零件必须是可出售的"
 
 #: stock/serializers.py:1073
 msgid "Item is allocated to a sales order"
-msgstr ""
+msgstr "项目被分配到销售订单"
 
 #: stock/serializers.py:1077
 msgid "Item is allocated to a build order"
-msgstr ""
+msgstr "项目被分配到生产订单"
 
 #: stock/serializers.py:1101
 msgid "Customer to assign stock items"
-msgstr ""
+msgstr "客户分配库存项"
 
 #: stock/serializers.py:1107
 msgid "Selected company is not a customer"
-msgstr ""
+msgstr "所选公司不是一个有效的供应商"
 
 #: stock/serializers.py:1115
 msgid "Stock assignment notes"
-msgstr ""
+msgstr "库存转让备注"
 
 #: stock/serializers.py:1125 stock/serializers.py:1379
 msgid "A list of stock items must be provided"
-msgstr ""
+msgstr "必须提供库存项列表"
 
 #: stock/serializers.py:1204
 msgid "Stock merging notes"
-msgstr ""
+msgstr "库存合并备注"
 
 #: stock/serializers.py:1209
 msgid "Allow mismatched suppliers"
-msgstr ""
+msgstr "允许不匹配的供应商。"
 
 #: stock/serializers.py:1210
 msgid "Allow stock items with different supplier parts to be merged"
-msgstr ""
+msgstr "允许含有不同供应商零件的库存项被合并"
 
 #: stock/serializers.py:1215
 msgid "Allow mismatched status"
-msgstr ""
+msgstr "允许不匹配的状态"
 
 #: stock/serializers.py:1216
 msgid "Allow stock items with different status codes to be merged"
-msgstr ""
+msgstr "允许含有不同供应商零件的库存项被合并"
 
 #: stock/serializers.py:1226
 msgid "At least two stock items must be provided"
-msgstr ""
+msgstr "必须提供至少两个库存项"
 
 #: stock/serializers.py:1293
 msgid "No Change"
-msgstr ""
+msgstr "无更改"
 
 #: stock/serializers.py:1322
 msgid "StockItem primary key value"
-msgstr ""
+msgstr "库存项主键值"
 
 #: stock/serializers.py:1341
 msgid "Stock item status code"
-msgstr ""
+msgstr "库存项状态代码"
 
 #: stock/serializers.py:1369
 msgid "Stock transaction notes"
-msgstr ""
+msgstr "库存交易便笺"
 
 #: stock/templates/stock/item.html:17
 msgid "Stock Tracking Information"
-msgstr ""
+msgstr "库存跟踪信息"
 
 #: stock/templates/stock/item.html:63
 msgid "Child Stock Items"
-msgstr ""
+msgstr "子库存项"
 
 #: stock/templates/stock/item.html:72
 msgid "This stock item does not have any child items"
-msgstr ""
+msgstr "此库存项没有任何子项"
 
 #: stock/templates/stock/item.html:81
 #: stock/templates/stock/stock_sidebar.html:12
 msgid "Test Data"
-msgstr ""
+msgstr "测试数据"
 
 #: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
 msgid "Test Report"
-msgstr ""
+msgstr "测试报表"
 
 #: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286
 msgid "Delete Test Data"
-msgstr ""
+msgstr "删除测试数据"
 
 #: stock/templates/stock/item.html:93
 msgid "Add Test Data"
-msgstr ""
+msgstr "添加测试数据"
 
 #: stock/templates/stock/item.html:125
 msgid "Stock Item Notes"
-msgstr ""
+msgstr "库存项注释"
 
 #: stock/templates/stock/item.html:140
 msgid "Installed Stock Items"
-msgstr ""
+msgstr "已安装的库存项"
 
 #: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271
 msgid "Install Stock Item"
-msgstr ""
+msgstr "安装库存项"
 
 #: stock/templates/stock/item.html:274
 msgid "Delete all test results for this stock item"
-msgstr ""
+msgstr "删除此库存项的所有测试结果"
 
 #: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698
 msgid "Add Test Result"
-msgstr ""
+msgstr "添加测试结果"
 
 #: stock/templates/stock/item_base.html:33
 msgid "Locate stock item"
-msgstr ""
+msgstr "定位库存项"
 
 #: stock/templates/stock/item_base.html:51
 msgid "Scan to Location"
-msgstr ""
+msgstr "已扫描至位置"
 
 #: stock/templates/stock/item_base.html:59
 #: stock/templates/stock/location.html:70
 #: templates/js/translated/filters.js:431
 msgid "Printing actions"
-msgstr ""
+msgstr "打印操作"
 
 #: stock/templates/stock/item_base.html:75
 msgid "Stock adjustment actions"
-msgstr ""
+msgstr "库存调整操作"
 
 #: stock/templates/stock/item_base.html:79
 #: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821
 msgid "Count stock"
-msgstr ""
+msgstr "已盘点库存"
 
 #: stock/templates/stock/item_base.html:81
 #: templates/js/translated/stock.js:1803
 msgid "Add stock"
-msgstr ""
+msgstr "添加仓库"
 
 #: stock/templates/stock/item_base.html:82
 #: templates/js/translated/stock.js:1812
 msgid "Remove stock"
-msgstr ""
+msgstr "移除仓库"
 
 #: stock/templates/stock/item_base.html:85
 msgid "Serialize stock"
-msgstr ""
+msgstr "序列化 仓库"
 
 #: stock/templates/stock/item_base.html:88
 #: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830
 msgid "Transfer stock"
-msgstr ""
+msgstr "转移仓库"
 
 #: stock/templates/stock/item_base.html:91
 #: templates/js/translated/stock.js:1884
 msgid "Assign to customer"
-msgstr ""
+msgstr "分配给客户"
 
 #: stock/templates/stock/item_base.html:94
 msgid "Return to stock"
-msgstr ""
+msgstr "返回库存"
 
 #: stock/templates/stock/item_base.html:97
 msgid "Uninstall stock item"
-msgstr ""
+msgstr "卸载库存项"
 
 #: stock/templates/stock/item_base.html:97
 msgid "Uninstall"
-msgstr ""
+msgstr "卸载"
 
 #: stock/templates/stock/item_base.html:101
 msgid "Install stock item"
-msgstr ""
+msgstr "安装库存项"
 
 #: stock/templates/stock/item_base.html:101
 msgid "Install"
-msgstr ""
+msgstr "安装"
 
 #: stock/templates/stock/item_base.html:115
 msgid "Convert to variant"
-msgstr ""
+msgstr "转换为变体"
 
 #: stock/templates/stock/item_base.html:118
 msgid "Duplicate stock item"
-msgstr ""
+msgstr "复制库存项"
 
 #: stock/templates/stock/item_base.html:120
 msgid "Edit stock item"
-msgstr ""
+msgstr "编辑库存项"
 
 #: stock/templates/stock/item_base.html:123
 msgid "Delete stock item"
-msgstr ""
+msgstr "删除库存项"
 
 #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
 #: templates/js/translated/build.js:2121 templates/navbar.html:38
 msgid "Build"
-msgstr ""
+msgstr "生产"
 
 #: stock/templates/stock/item_base.html:193
 msgid "Parent Item"
-msgstr ""
+msgstr "上级菜单项"
 
 #: stock/templates/stock/item_base.html:211
 msgid "No manufacturer set"
-msgstr ""
+msgstr "没有制造商设置"
 
 #: stock/templates/stock/item_base.html:251
 msgid "You are not in the list of owners of this item. This stock item cannot be edited."
-msgstr ""
+msgstr "您不在此零件所有者列表中。此库存项不可编辑。"
 
 #: stock/templates/stock/item_base.html:252
 #: stock/templates/stock/location.html:149
 msgid "Read only"
-msgstr ""
+msgstr "只读"
 
 #: stock/templates/stock/item_base.html:265
 msgid "This stock item is unavailable"
-msgstr ""
+msgstr "此库存项不可用"
 
 #: stock/templates/stock/item_base.html:271
 msgid "This stock item is in production and cannot be edited."
-msgstr ""
+msgstr "此库存项正在生产中,无法编辑。"
 
 #: stock/templates/stock/item_base.html:272
 msgid "Edit the stock item from the build view."
-msgstr ""
+msgstr "从生产视图中编辑库存项。"
 
 #: stock/templates/stock/item_base.html:287
 msgid "This stock item is allocated to Sales Order"
-msgstr ""
+msgstr "此生产订单已分配给销售订单"
 
 #: stock/templates/stock/item_base.html:295
 msgid "This stock item is allocated to Build Order"
-msgstr ""
+msgstr "此库存项已分配给生产订单"
 
 #: stock/templates/stock/item_base.html:311
 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted"
-msgstr ""
+msgstr "此库存项已序列化。它有一个唯一的序列号,数量不可调整"
 
 #: stock/templates/stock/item_base.html:317
 msgid "previous page"
-msgstr ""
+msgstr "上一页"
 
 #: stock/templates/stock/item_base.html:317
 msgid "Navigate to previous serial number"
-msgstr ""
+msgstr "导航到上一个序列号"
 
 #: stock/templates/stock/item_base.html:326
 msgid "next page"
-msgstr ""
+msgstr "下一页"
 
 #: stock/templates/stock/item_base.html:326
 msgid "Navigate to next serial number"
-msgstr ""
+msgstr "导航到下一个序列号"
 
 #: stock/templates/stock/item_base.html:340
 msgid "Available Quantity"
-msgstr ""
+msgstr "可用数量"
 
 #: stock/templates/stock/item_base.html:398
 #: templates/js/translated/build.js:2378
 msgid "No location set"
-msgstr ""
+msgstr "未设置库存地点"
 
 #: stock/templates/stock/item_base.html:413
 msgid "Tests"
-msgstr ""
+msgstr "测试"
 
 #: stock/templates/stock/item_base.html:419
 msgid "This stock item has not passed all required tests"
-msgstr ""
+msgstr "此库存项尚未通过所有必需的测试"
 
 #: stock/templates/stock/item_base.html:437
 #, python-format
 msgid "This StockItem expired on %(item.expiry_date)s"
-msgstr ""
+msgstr "此库存项在 %(item.expiry_date)s 过期"
 
 #: stock/templates/stock/item_base.html:437
 #: templates/js/translated/table_filters.js:435 users/models.py:163
 msgid "Expired"
-msgstr ""
+msgstr "已过期"
 
 #: stock/templates/stock/item_base.html:439
 #, python-format
 msgid "This StockItem expires on %(item.expiry_date)s"
-msgstr ""
+msgstr "此库存项在 %(item.expiry_date)s 过期"
 
 #: stock/templates/stock/item_base.html:455
 msgid "No stocktake performed"
-msgstr ""
+msgstr "没有进行盘点呈现"
 
 #: stock/templates/stock/item_base.html:507
 #: templates/js/translated/stock.js:1951
 msgid "stock item"
-msgstr ""
+msgstr "库存项"
 
 #: stock/templates/stock/item_base.html:532
 msgid "Edit Stock Status"
-msgstr ""
+msgstr "编辑库存状态"
 
 #: stock/templates/stock/item_base.html:541
 msgid "Stock Item QR Code"
-msgstr ""
+msgstr "库存项二维码"
 
 #: stock/templates/stock/item_base.html:552
 msgid "Link Barcode to Stock Item"
-msgstr ""
+msgstr "将条形码链接到库存项"
 
 #: stock/templates/stock/item_base.html:616
 msgid "Select one of the part variants listed below."
-msgstr ""
+msgstr "选择下面列出的零件变体之一。"
 
 #: stock/templates/stock/item_base.html:619
 msgid "Warning"
-msgstr ""
+msgstr "警告"
 
 #: stock/templates/stock/item_base.html:620
 msgid "This action cannot be easily undone"
-msgstr ""
+msgstr "本操作无法轻易撤销"
 
 #: stock/templates/stock/item_base.html:628
 msgid "Convert Stock Item"
-msgstr ""
+msgstr "转换库存项"
 
 #: stock/templates/stock/item_base.html:662
 msgid "Return to Stock"
-msgstr ""
+msgstr "返回到库存"
 
 #: stock/templates/stock/item_serialize.html:5
 msgid "Create serialized items from this stock item."
-msgstr ""
+msgstr "从此库存项创建序列化项目。"
 
 #: stock/templates/stock/item_serialize.html:7
 msgid "Select quantity to serialize, and unique serial numbers."
-msgstr ""
+msgstr "选择要序列化的数量和唯一的序列号。"
 
 #: stock/templates/stock/location.html:38
 msgid "Perform stocktake for this stock location"
-msgstr ""
+msgstr "对此库存地点进行盘点"
 
 #: stock/templates/stock/location.html:45
 msgid "Locate stock location"
-msgstr ""
+msgstr "定位库存地点"
 
 #: stock/templates/stock/location.html:63
 msgid "Scan stock items into this location"
-msgstr ""
+msgstr "扫描库存项到此位置"
 
 #: stock/templates/stock/location.html:63
 msgid "Scan In Stock Items"
-msgstr ""
+msgstr "在库存项中扫描"
 
 #: stock/templates/stock/location.html:64
 msgid "Scan stock container into this location"
-msgstr ""
+msgstr "扫描库存容品到此位置"
 
 #: stock/templates/stock/location.html:64
 msgid "Scan In Container"
-msgstr ""
+msgstr "在容器中扫描"
 
 #: stock/templates/stock/location.html:75
 msgid "Print Location Report"
-msgstr ""
+msgstr "打印位置报告"
 
 #: stock/templates/stock/location.html:104
 msgid "Location actions"
-msgstr ""
+msgstr "仓储地操作"
 
 #: stock/templates/stock/location.html:106
 msgid "Edit location"
-msgstr ""
+msgstr "编辑仓储地"
 
 #: stock/templates/stock/location.html:108
 msgid "Delete location"
-msgstr ""
+msgstr "删除仓储地"
 
 #: stock/templates/stock/location.html:138
 msgid "Top level stock location"
-msgstr ""
+msgstr "顶级库存地点"
 
 #: stock/templates/stock/location.html:144
 msgid "Location Owner"
-msgstr ""
+msgstr "地点所有者"
 
 #: stock/templates/stock/location.html:148
 msgid "You are not in the list of owners of this location. This stock location cannot be edited."
-msgstr ""
+msgstr "您不在此地点的所有者列表中。无法编辑此库存地点。"
 
 #: stock/templates/stock/location.html:217
 msgid "Create new stock location"
-msgstr ""
+msgstr "新建库存地点"
 
 #: stock/templates/stock/location.html:218
 msgid "New Location"
-msgstr ""
+msgstr "新建库存地点"
 
 #: stock/templates/stock/location.html:287
 #: templates/js/translated/stock.js:2572
 msgid "stock location"
-msgstr ""
+msgstr "库存地点"
 
 #: stock/templates/stock/location.html:315
 msgid "Scanned stock container into this location"
-msgstr ""
+msgstr "将库存容器扫描进这个地点"
 
 #: stock/templates/stock/location.html:388
 msgid "Stock Location QR Code"
-msgstr ""
+msgstr "库存地点二维码"
 
 #: stock/templates/stock/location.html:399
 msgid "Link Barcode to Stock Location"
-msgstr ""
+msgstr "将条形码链接到库存地点"
 
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
-msgstr ""
+msgstr "正在加载..."
 
 #: stock/templates/stock/stock_sidebar.html:5
 msgid "Stock Tracking"
-msgstr ""
+msgstr "库存跟踪"
 
 #: stock/templates/stock/stock_sidebar.html:8
 msgid "Allocations"
-msgstr ""
+msgstr "分配"
 
 #: stock/templates/stock/stock_sidebar.html:20
 msgid "Child Items"
-msgstr ""
+msgstr "子项目"
 
 #: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
 msgid "Permission Denied"
-msgstr ""
+msgstr "权限受限"
 
 #: templates/403.html:15
 msgid "You do not have permission to view this page."
-msgstr ""
+msgstr "您没有权限查看此网页。"
 
 #: templates/403_csrf.html:11
 msgid "Authentication Failure"
-msgstr ""
+msgstr "身份验证失败"
 
 #: templates/403_csrf.html:14
 msgid "You have been logged out from InvenTree."
-msgstr ""
+msgstr "您已经从 Inventree 中登出。"
 
 #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29
 #: templates/navbar.html:150
 msgid "Login"
-msgstr ""
+msgstr "登入"
 
 #: templates/404.html:6 templates/404.html:12
 msgid "Page Not Found"
-msgstr ""
+msgstr "找不到页面"
 
 #: templates/404.html:15
 msgid "The requested page does not exist"
-msgstr ""
+msgstr "请求的页面不存在"
 
 #: templates/500.html:6 templates/500.html:12
 msgid "Internal Server Error"
-msgstr ""
+msgstr "内部服务器错误"
 
 #: templates/500.html:15
 #, python-format
 msgid "The %(inventree_title)s server raised an internal error"
-msgstr ""
+msgstr "%(inventree_title)s 服务器引起一个内部错误"
 
 #: templates/500.html:16
 msgid "Refer to the error log in the admin interface for further details"
-msgstr ""
+msgstr "请参阅管理界面中的错误日志以获取更多详细信息"
 
 #: templates/503.html:11 templates/503.html:33
 msgid "Site is in Maintenance"
-msgstr ""
+msgstr "站点正在维护中"
 
 #: templates/503.html:39
 msgid "The site is currently in maintenance and should be up again soon!"
-msgstr ""
+msgstr "该站点目前正在维护,将会很快再次运行!"
 
 #: templates/InvenTree/index.html:7
 msgid "Index"
-msgstr ""
+msgstr "索引"
 
 #: templates/InvenTree/index.html:39
 msgid "Subscribed Parts"
-msgstr ""
+msgstr "已订阅零件"
 
 #: templates/InvenTree/index.html:52
 msgid "Subscribed Categories"
-msgstr ""
+msgstr "已订阅类别"
 
 #: templates/InvenTree/index.html:62
 msgid "Latest Parts"
-msgstr ""
+msgstr "最近零件"
 
 #: templates/InvenTree/index.html:77
 msgid "BOM Waiting Validation"
-msgstr ""
+msgstr "等待验证的物料清单"
 
 #: templates/InvenTree/index.html:106
 msgid "Recently Updated"
-msgstr ""
+msgstr "最近更新"
 
 #: templates/InvenTree/index.html:134
 msgid "Depleted Stock"
-msgstr ""
+msgstr "已耗尽库存"
 
 #: templates/InvenTree/index.html:148
 msgid "Required for Build Orders"
-msgstr ""
+msgstr "生产订单所需的"
 
 #: templates/InvenTree/index.html:156
 msgid "Expired Stock"
-msgstr ""
+msgstr "过期库存"
 
 #: templates/InvenTree/index.html:172
 msgid "Stale Stock"
-msgstr ""
+msgstr "过期库存"
 
 #: templates/InvenTree/index.html:199
 msgid "Build Orders In Progress"
-msgstr ""
+msgstr "进行中的生产订单"
 
 #: templates/InvenTree/index.html:210
 msgid "Overdue Build Orders"
-msgstr ""
+msgstr "逾期的生产订单"
 
 #: templates/InvenTree/index.html:230
 msgid "Outstanding Purchase Orders"
-msgstr ""
+msgstr "未完成的采购订单"
 
 #: templates/InvenTree/index.html:241
 msgid "Overdue Purchase Orders"
-msgstr ""
+msgstr "逾期的采购订单"
 
 #: templates/InvenTree/index.html:262
 msgid "Outstanding Sales Orders"
-msgstr ""
+msgstr "未完成的销售订单"
 
 #: templates/InvenTree/index.html:273
 msgid "Overdue Sales Orders"
-msgstr ""
+msgstr "逾期的销售订单"
 
 #: templates/InvenTree/index.html:299
 msgid "InvenTree News"
-msgstr ""
+msgstr "InventTree 新闻"
 
 #: templates/InvenTree/index.html:301
 msgid "Current News"
-msgstr ""
+msgstr "当前新闻"
 
 #: templates/InvenTree/notifications/history.html:9
 msgid "Notification History"
-msgstr ""
+msgstr "通知历史记录"
 
 #: templates/InvenTree/notifications/history.html:13
 #: templates/InvenTree/notifications/history.html:14
 #: templates/InvenTree/notifications/notifications.html:75
 msgid "Delete Notifications"
-msgstr ""
+msgstr "移除通知"
 
 #: templates/InvenTree/notifications/inbox.html:9
 msgid "Pending Notifications"
-msgstr ""
+msgstr "待处理通知"
 
 #: templates/InvenTree/notifications/inbox.html:13
 #: templates/InvenTree/notifications/inbox.html:14
 msgid "Mark all as read"
-msgstr ""
+msgstr "标记所有文章为已读"
 
 #: templates/InvenTree/notifications/notifications.html:10
 #: templates/InvenTree/notifications/sidebar.html:5
 #: templates/InvenTree/settings/sidebar.html:17
 #: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5
 msgid "Notifications"
-msgstr ""
+msgstr "通知"
 
 #: templates/InvenTree/notifications/notifications.html:38
 msgid "No unread notifications found"
-msgstr ""
+msgstr "未找到未读通知"
 
 #: templates/InvenTree/notifications/notifications.html:58
 msgid "No notification history found"
-msgstr ""
+msgstr "未找到通知历史记录"
 
 #: templates/InvenTree/notifications/notifications.html:65
 msgid "Delete all read notifications"
-msgstr ""
+msgstr "删除已读通知"
 
 #: templates/InvenTree/notifications/notifications.html:89
 #: templates/js/translated/notification.js:85
 msgid "Delete Notification"
-msgstr ""
+msgstr "删除通知"
 
 #: templates/InvenTree/notifications/sidebar.html:8
 msgid "Inbox"
-msgstr ""
+msgstr "收件箱"
 
 #: templates/InvenTree/notifications/sidebar.html:10
 msgid "History"
-msgstr ""
+msgstr "历史"
 
 #: templates/InvenTree/search.html:8
 msgid "Search Results"
-msgstr ""
+msgstr "搜索结果"
 
 #: templates/InvenTree/settings/barcode.html:8
 msgid "Barcode Settings"
-msgstr ""
+msgstr "条形码设置"
 
 #: templates/InvenTree/settings/build.html:8
 msgid "Build Order Settings"
-msgstr ""
+msgstr "生产订单设置"
 
 #: templates/InvenTree/settings/category.html:7
 msgid "Category Settings"
-msgstr ""
+msgstr "类别设置"
 
 #: templates/InvenTree/settings/global.html:8
 msgid "Server Settings"
-msgstr ""
+msgstr "服务器设置"
 
 #: templates/InvenTree/settings/label.html:8
 #: templates/InvenTree/settings/user_labels.html:9
 msgid "Label Settings"
-msgstr ""
+msgstr "标签设置"
 
 #: templates/InvenTree/settings/login.html:8
 msgid "Login Settings"
-msgstr ""
+msgstr "登录设置"
 
 #: templates/InvenTree/settings/login.html:15
 msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!"
-msgstr ""
+msgstr "发送邮件尚未配置。一些登录和注册功能可能无法正常工作!"
 
 #: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5
 #: templates/socialaccount/signup.html:5
 msgid "Signup"
-msgstr ""
+msgstr "注册"
 
 #: templates/InvenTree/settings/login.html:34
 msgid "Single Sign On"
-msgstr ""
+msgstr "单点登录"
 
 #: templates/InvenTree/settings/mixins/settings.html:5
 #: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147
 msgid "Settings"
-msgstr ""
+msgstr "设置"
 
 #: templates/InvenTree/settings/mixins/urls.html:5
 msgid "URLs"
-msgstr ""
+msgstr "URL"
 
 #: templates/InvenTree/settings/mixins/urls.html:8
 #, python-format
 msgid "The Base-URL for this plugin is <a href=\"/%(base)s\" target=\"_blank\"><strong>%(base)s</strong></a>."
-msgstr ""
+msgstr "此插件的基本URL是 <a href=\"/%(base)s\" target=\"_blank\"><strong>%(base)s</strong></a>。"
 
 #: templates/InvenTree/settings/mixins/urls.html:14
 msgid "URL"
@@ -9831,902 +9853,902 @@ msgstr "URL"
 
 #: templates/InvenTree/settings/mixins/urls.html:23
 msgid "Open in new tab"
-msgstr ""
+msgstr "在新标签页中打开"
 
 #: templates/InvenTree/settings/notifications.html:9
 #: templates/InvenTree/settings/user_notifications.html:9
 msgid "Notification Settings"
-msgstr ""
+msgstr "通知设置"
 
 #: templates/InvenTree/settings/notifications.html:18
 msgid "Slug"
-msgstr ""
+msgstr "别名"
 
 #: templates/InvenTree/settings/part.html:7
 msgid "Part Settings"
-msgstr ""
+msgstr "零件设置"
 
 #: templates/InvenTree/settings/part.html:42
 msgid "Part Import"
-msgstr ""
+msgstr "零件导入"
 
 #: templates/InvenTree/settings/part.html:46
 msgid "Import Part"
-msgstr ""
+msgstr "导入零件"
 
 #: templates/InvenTree/settings/part_parameters.html:20
 msgid "Part Parameter Templates"
-msgstr ""
+msgstr "零件参数模板"
 
 #: templates/InvenTree/settings/part_stocktake.html:7
 msgid "Stocktake Settings"
-msgstr ""
+msgstr "库存盘点设置"
 
 #: templates/InvenTree/settings/part_stocktake.html:25
 msgid "Stocktake Reports"
-msgstr ""
+msgstr "库存盘点报告"
 
 #: templates/InvenTree/settings/physical_units.html:8
 #: templates/InvenTree/settings/sidebar.html:35
 msgid "Physical Units"
-msgstr ""
+msgstr "物理单位"
 
 #: templates/InvenTree/settings/physical_units.html:12
 msgid "Add Unit"
-msgstr ""
+msgstr "添加单位"
 
 #: templates/InvenTree/settings/plugin.html:9
 #: templates/InvenTree/settings/sidebar.html:64
 msgid "Plugin Settings"
-msgstr ""
+msgstr "插件设置"
 
 #: templates/InvenTree/settings/plugin.html:15
 msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage."
-msgstr ""
+msgstr "更改下面的设置需要您立即重新启动服务器。在使用中不要更改此设置。"
 
 #: templates/InvenTree/settings/plugin.html:36
 #: templates/InvenTree/settings/sidebar.html:66
 msgid "Plugins"
-msgstr ""
+msgstr "插件"
 
 #: templates/InvenTree/settings/plugin.html:42
 #: templates/InvenTree/settings/plugin.html:43
 #: templates/js/translated/plugin.js:151
 msgid "Install Plugin"
-msgstr ""
+msgstr "安装插件"
 
 #: templates/InvenTree/settings/plugin.html:45
 #: templates/InvenTree/settings/plugin.html:46
 #: templates/js/translated/plugin.js:224
 msgid "Reload Plugins"
-msgstr ""
+msgstr "重载插件"
 
 #: templates/InvenTree/settings/plugin.html:56
 msgid "External plugins are not enabled for this InvenTree installation"
-msgstr ""
+msgstr "此InventTree安装没有启用外部插件"
 
 #: templates/InvenTree/settings/plugin.html:71
 msgid "Plugin Error Stack"
-msgstr ""
+msgstr "插件错误堆栈..."
 
 #: templates/InvenTree/settings/plugin.html:80
 msgid "Stage"
-msgstr ""
+msgstr "阶段"
 
 #: templates/InvenTree/settings/plugin.html:82
 #: templates/js/translated/notification.js:76
 msgid "Message"
-msgstr ""
+msgstr "信息"
 
 #: templates/InvenTree/settings/plugin_settings.html:16
 msgid "Plugin information"
-msgstr ""
+msgstr "插件信息"
 
 #: templates/InvenTree/settings/plugin_settings.html:47
 msgid "no version information supplied"
-msgstr ""
+msgstr "没有提供版本信息"
 
 #: templates/InvenTree/settings/plugin_settings.html:61
 msgid "License"
-msgstr ""
+msgstr "许可协议"
 
 #: templates/InvenTree/settings/plugin_settings.html:70
 msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running."
-msgstr ""
+msgstr "代码信息将从此插件的最新git提交中拉取。 它可能不反映官方版本号或信息,但实际代码正在运行。"
 
 #: templates/InvenTree/settings/plugin_settings.html:76
 msgid "Package information"
-msgstr ""
+msgstr "包装信息"
 
 #: templates/InvenTree/settings/plugin_settings.html:82
 msgid "Installation method"
-msgstr ""
+msgstr "安装方法"
 
 #: templates/InvenTree/settings/plugin_settings.html:85
 msgid "This plugin was installed as a package"
-msgstr ""
+msgstr "此插件被安装为软件包"
 
 #: templates/InvenTree/settings/plugin_settings.html:87
 msgid "This plugin was found in a local server path"
-msgstr ""
+msgstr "此插件在本地服务器路径中找到"
 
 #: templates/InvenTree/settings/plugin_settings.html:93
 msgid "Installation path"
-msgstr ""
+msgstr "安装路径"
 
 #: templates/InvenTree/settings/plugin_settings.html:100
 #: templates/js/translated/plugin.js:68
 #: templates/js/translated/table_filters.js:496
 msgid "Builtin"
-msgstr ""
+msgstr "内建"
 
 #: templates/InvenTree/settings/plugin_settings.html:101
 msgid "This is a builtin plugin which cannot be disabled"
-msgstr ""
+msgstr "这是一个内置插件,无法禁用"
 
 #: templates/InvenTree/settings/plugin_settings.html:107
 #: templates/js/translated/plugin.js:72
 #: templates/js/translated/table_filters.js:500
 msgid "Sample"
-msgstr ""
+msgstr "样本"
 
 #: templates/InvenTree/settings/plugin_settings.html:108
 msgid "This is a sample plugin"
-msgstr ""
+msgstr "这是一个示例插件"
 
 #: templates/InvenTree/settings/plugin_settings.html:113
 msgid "Commit Author"
-msgstr ""
+msgstr "提交的人"
 
 #: templates/InvenTree/settings/plugin_settings.html:117
 #: templates/about.html:36
 msgid "Commit Date"
-msgstr ""
+msgstr "提交日期"
 
 #: templates/InvenTree/settings/plugin_settings.html:121
 #: templates/about.html:29
 msgid "Commit Hash"
-msgstr ""
+msgstr "提交哈希值"
 
 #: templates/InvenTree/settings/plugin_settings.html:125
 msgid "Commit Message"
-msgstr ""
+msgstr "提交信息"
 
 #: templates/InvenTree/settings/po.html:7
 msgid "Purchase Order Settings"
-msgstr ""
+msgstr "采购订单设置"
 
 #: templates/InvenTree/settings/pricing.html:7
 msgid "Pricing Settings"
-msgstr ""
+msgstr "价格设置"
 
 #: templates/InvenTree/settings/pricing.html:34
 msgid "Exchange Rates"
-msgstr ""
+msgstr "汇率"
 
 #: templates/InvenTree/settings/pricing.html:38
 msgid "Update Now"
-msgstr ""
+msgstr "立即更新"
 
 #: templates/InvenTree/settings/pricing.html:46
 #: templates/InvenTree/settings/pricing.html:50
 msgid "Last Update"
-msgstr ""
+msgstr "上次更新"
 
 #: templates/InvenTree/settings/pricing.html:50
 msgid "Never"
-msgstr ""
+msgstr "从不"
 
 #: templates/InvenTree/settings/project_codes.html:8
 msgid "Project Code Settings"
-msgstr ""
+msgstr "项目编码设置"
 
 #: templates/InvenTree/settings/project_codes.html:21
 #: templates/InvenTree/settings/sidebar.html:33
 msgid "Project Codes"
-msgstr ""
+msgstr "项目编码"
 
 #: templates/InvenTree/settings/project_codes.html:25
 #: templates/InvenTree/settings/settings_staff_js.html:216
 msgid "New Project Code"
-msgstr ""
+msgstr "新项目编码"
 
 #: templates/InvenTree/settings/report.html:8
 #: templates/InvenTree/settings/user_reporting.html:9
 msgid "Report Settings"
-msgstr ""
+msgstr "报表设置"
 
 #: templates/InvenTree/settings/returns.html:7
 msgid "Return Order Settings"
-msgstr ""
+msgstr "退货订单设置"
 
 #: templates/InvenTree/settings/setting.html:31
 msgid "No value set"
-msgstr ""
+msgstr "未设置值"
 
 #: templates/InvenTree/settings/setting.html:46
 msgid "Edit setting"
-msgstr ""
+msgstr "编辑设置"
 
 #: templates/InvenTree/settings/settings_js.html:58
 msgid "Edit Plugin Setting"
-msgstr ""
+msgstr "编辑插件设置"
 
 #: templates/InvenTree/settings/settings_js.html:60
 msgid "Edit Notification Setting"
-msgstr ""
+msgstr "编辑通知设置"
 
 #: templates/InvenTree/settings/settings_js.html:63
 msgid "Edit Global Setting"
-msgstr ""
+msgstr "编辑全局设置"
 
 #: templates/InvenTree/settings/settings_js.html:65
 msgid "Edit User Setting"
-msgstr ""
+msgstr "编辑用户设置"
 
 #: templates/InvenTree/settings/settings_staff_js.html:49
 msgid "Rate"
-msgstr ""
+msgstr "评价"
 
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
-msgstr ""
+msgstr "删除"
 
 #: templates/InvenTree/settings/settings_staff_js.html:95
 msgid "Edit Custom Unit"
-msgstr ""
+msgstr "编辑自定义单位"
 
 #: templates/InvenTree/settings/settings_staff_js.html:110
 msgid "Delete Custom Unit"
-msgstr ""
+msgstr "删除自定义单位"
 
 #: templates/InvenTree/settings/settings_staff_js.html:124
 msgid "New Custom Unit"
-msgstr ""
+msgstr "新建自定义单位"
 
 #: templates/InvenTree/settings/settings_staff_js.html:140
 msgid "No project codes found"
-msgstr ""
+msgstr "没有找到项目编码"
 
 #: templates/InvenTree/settings/settings_staff_js.html:158
 #: templates/js/translated/build.js:2226
 msgid "group"
-msgstr ""
+msgstr "组"
 
 #: templates/InvenTree/settings/settings_staff_js.html:175
 #: templates/InvenTree/settings/settings_staff_js.html:189
 msgid "Edit Project Code"
-msgstr ""
+msgstr "编辑项目编码"
 
 #: templates/InvenTree/settings/settings_staff_js.html:176
 #: templates/InvenTree/settings/settings_staff_js.html:203
 msgid "Delete Project Code"
-msgstr ""
+msgstr "删除项目编码"
 
 #: templates/InvenTree/settings/settings_staff_js.html:285
 msgid "No category parameter templates found"
-msgstr ""
+msgstr "未找到类别参数模板"
 
 #: templates/InvenTree/settings/settings_staff_js.html:308
 #: templates/js/translated/part.js:1645
 msgid "Edit Template"
-msgstr ""
+msgstr "编辑模板"
 
 #: templates/InvenTree/settings/settings_staff_js.html:309
 #: templates/js/translated/part.js:1646
 msgid "Delete Template"
-msgstr ""
+msgstr "删除模板"
 
 #: templates/InvenTree/settings/settings_staff_js.html:326
 msgid "Edit Category Parameter Template"
-msgstr ""
+msgstr "编辑类别参数模板"
 
 #: templates/InvenTree/settings/settings_staff_js.html:353
 msgid "Delete Category Parameter Template"
-msgstr ""
+msgstr "删除类别参数模板"
 
 #: templates/InvenTree/settings/settings_staff_js.html:388
 msgid "Create Category Parameter Template"
-msgstr ""
+msgstr "创建类别参数模板"
 
 #: templates/InvenTree/settings/settings_staff_js.html:418
 msgid "Create Part Parameter Template"
-msgstr ""
+msgstr "创建零件参数模板"
 
 #: templates/InvenTree/settings/settings_staff_js.html:440
 msgid "No stock location types found"
-msgstr ""
+msgstr "未找到库存地点类型"
 
 #: templates/InvenTree/settings/settings_staff_js.html:461
 msgid "Location count"
-msgstr ""
+msgstr "地点计数"
 
 #: templates/InvenTree/settings/settings_staff_js.html:466
 #: templates/InvenTree/settings/settings_staff_js.html:480
 msgid "Edit Location Type"
-msgstr ""
+msgstr "编辑地点类型"
 
 #: templates/InvenTree/settings/settings_staff_js.html:467
 msgid "Delete Location type"
-msgstr ""
+msgstr "删除地点类型"
 
 #: templates/InvenTree/settings/settings_staff_js.html:490
 msgid "Delete Location Type"
-msgstr ""
+msgstr "删除地点类型"
 
 #: templates/InvenTree/settings/settings_staff_js.html:500
 #: templates/InvenTree/settings/stock.html:37
 msgid "New Location Type"
-msgstr ""
+msgstr "新建位置类型"
 
 #: templates/InvenTree/settings/sidebar.html:6
 #: templates/InvenTree/settings/user_settings.html:9
 msgid "User Settings"
-msgstr ""
+msgstr "用户设置"
 
 #: templates/InvenTree/settings/sidebar.html:9
 msgid "Account"
-msgstr ""
+msgstr "账户"
 
 #: templates/InvenTree/settings/sidebar.html:11
 msgid "Display"
-msgstr ""
+msgstr "显示"
 
 #: templates/InvenTree/settings/sidebar.html:13
 msgid "Home Page"
-msgstr ""
+msgstr "主页"
 
 #: templates/InvenTree/settings/sidebar.html:15
 #: templates/js/translated/forms.js:2159 templates/js/translated/tables.js:543
 #: templates/navbar.html:107 templates/search.html:8
 #: templates/search_form.html:6 templates/search_form.html:7
 msgid "Search"
-msgstr ""
+msgstr "搜索"
 
 #: templates/InvenTree/settings/sidebar.html:19
 #: templates/InvenTree/settings/sidebar.html:43
 msgid "Reporting"
-msgstr ""
+msgstr "报表"
 
 #: templates/InvenTree/settings/sidebar.html:24
 msgid "Global Settings"
-msgstr ""
+msgstr "全局设置"
 
 #: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9
 msgid "Server"
-msgstr ""
+msgstr "服务器"
 
 #: templates/InvenTree/settings/sidebar.html:41
 msgid "Labels"
-msgstr ""
+msgstr "标签"
 
 #: templates/InvenTree/settings/sidebar.html:45
 msgid "Categories"
-msgstr ""
+msgstr "类别"
 
 #: templates/InvenTree/settings/so.html:7
 msgid "Sales Order Settings"
-msgstr ""
+msgstr "销售订单设置"
 
 #: templates/InvenTree/settings/stock.html:7
 msgid "Stock Settings"
-msgstr ""
+msgstr "库存设置"
 
 #: templates/InvenTree/settings/stock.html:33
 msgid "Stock Location Types"
-msgstr ""
+msgstr "库存地点类型"
 
 #: templates/InvenTree/settings/user.html:13
 msgid "Account Settings"
-msgstr ""
+msgstr "账户设置"
 
 #: templates/InvenTree/settings/user.html:19
 #: templates/account/password_reset_from_key.html:4
 #: templates/account/password_reset_from_key.html:7
 msgid "Change Password"
-msgstr ""
+msgstr "更改密码"
 
 #: templates/InvenTree/settings/user.html:33
 msgid "Username"
-msgstr ""
+msgstr "用户名"
 
 #: templates/InvenTree/settings/user.html:37
 msgid "First Name"
-msgstr ""
+msgstr "名字"
 
 #: templates/InvenTree/settings/user.html:41
 msgid "Last Name"
-msgstr ""
+msgstr "姓氏"
 
 #: templates/InvenTree/settings/user.html:55
 msgid "The following email addresses are associated with your account:"
-msgstr ""
+msgstr "以下电子邮件地址与您的账户相关联:"
 
 #: templates/InvenTree/settings/user.html:76
 msgid "Verified"
-msgstr ""
+msgstr "已验证"
 
 #: templates/InvenTree/settings/user.html:78
 msgid "Unverified"
-msgstr ""
+msgstr "未验证"
 
 #: templates/InvenTree/settings/user.html:80
 #: templates/js/translated/company.js:947
 msgid "Primary"
-msgstr ""
+msgstr "主要的"
 
 #: templates/InvenTree/settings/user.html:86
 msgid "Make Primary"
-msgstr ""
+msgstr "设为首选"
 
 #: templates/InvenTree/settings/user.html:87
 msgid "Re-send Verification"
-msgstr ""
+msgstr "重新发送验证"
 
 #: templates/InvenTree/settings/user.html:96
 msgid "Warning:"
-msgstr ""
+msgstr "警告:"
 
 #: templates/InvenTree/settings/user.html:97
 msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
-msgstr ""
+msgstr "您当前没有设置任何电子邮件地址。您确实应该添加一个电子邮件地址, 以方便您接收通知、重设密码等。"
 
 #: templates/InvenTree/settings/user.html:105
 msgid "Add Email Address"
-msgstr ""
+msgstr "添加电子邮件地址"
 
 #: templates/InvenTree/settings/user.html:110
 msgid "Add Email"
-msgstr ""
+msgstr "添加电子邮件"
 
 #: templates/InvenTree/settings/user.html:120
 msgid "Multifactor"
-msgstr ""
+msgstr "多因素身份验证"
 
 #: templates/InvenTree/settings/user.html:125
 msgid "You have these factors available:"
-msgstr ""
+msgstr "您有这些因素可用:"
 
 #: templates/InvenTree/settings/user.html:135
 msgid "TOTP"
-msgstr ""
+msgstr "TOTP"
 
 #: templates/InvenTree/settings/user.html:141
 msgid "Static"
-msgstr ""
+msgstr "静态"
 
 #: templates/InvenTree/settings/user.html:150
 msgid "Multifactor authentication is not configured for your account"
-msgstr ""
+msgstr "未为您的账户配置多因素身份验证"
 
 #: templates/InvenTree/settings/user.html:157
 msgid "Change factors"
-msgstr ""
+msgstr "更改系数"
 
 #: templates/InvenTree/settings/user.html:158
 msgid "Setup multifactor"
-msgstr ""
+msgstr "设置多因素身份验证"
 
 #: templates/InvenTree/settings/user.html:160
 msgid "Remove multifactor"
-msgstr ""
+msgstr "删除多因素身份验证"
 
 #: templates/InvenTree/settings/user.html:168
 msgid "Active Sessions"
-msgstr ""
+msgstr "活动会话"
 
 #: templates/InvenTree/settings/user.html:174
 msgid "Log out active sessions (except this one)"
-msgstr ""
+msgstr "注销活动会话(除了这个会话)"
 
 #: templates/InvenTree/settings/user.html:175
 msgid "Log Out Active Sessions"
-msgstr ""
+msgstr "退出活动会话"
 
 #: templates/InvenTree/settings/user.html:184
 msgid "<em>unknown on unknown</em>"
-msgstr ""
+msgstr "<em>未知</em>"
 
 #: templates/InvenTree/settings/user.html:185
 msgid "<em>unknown</em>"
-msgstr ""
+msgstr "<em>未知</em>"
 
 #: templates/InvenTree/settings/user.html:189
 msgid "IP Address"
-msgstr ""
+msgstr "IP 地址"
 
 #: templates/InvenTree/settings/user.html:190
 msgid "Device"
-msgstr ""
+msgstr "设备"
 
 #: templates/InvenTree/settings/user.html:191
 msgid "Last Activity"
-msgstr ""
+msgstr "最近活跃"
 
 #: templates/InvenTree/settings/user.html:204
 #, python-format
 msgid "%(time)s ago (this session)"
-msgstr ""
+msgstr "%(time)s 之前 (本会话)"
 
 #: templates/InvenTree/settings/user.html:206
 #, python-format
 msgid "%(time)s ago"
-msgstr ""
+msgstr "%(time)s 之前"
 
 #: templates/InvenTree/settings/user.html:218
 msgid "Do you really want to remove the selected email address?"
-msgstr ""
+msgstr "是否确实要删除所选的电子邮件地址?"
 
 #: templates/InvenTree/settings/user_display.html:9
 msgid "Display Settings"
-msgstr ""
+msgstr "显示设置"
 
 #: templates/InvenTree/settings/user_display.html:29
 msgid "Theme Settings"
-msgstr ""
+msgstr "主题设置"
 
 #: templates/InvenTree/settings/user_display.html:39
 msgid "Select theme"
-msgstr ""
+msgstr "选择主题"
 
 #: templates/InvenTree/settings/user_display.html:50
 msgid "Set Theme"
-msgstr ""
+msgstr "设置主题"
 
 #: templates/InvenTree/settings/user_display.html:58
 msgid "Language Settings"
-msgstr ""
+msgstr "语言设置"
 
 #: templates/InvenTree/settings/user_display.html:67
 msgid "Select language"
-msgstr ""
+msgstr "选择语言"
 
 #: templates/InvenTree/settings/user_display.html:83
 #, python-format
 msgid "%(lang_translated)s%% translated"
-msgstr ""
+msgstr "%(lang_translated)s%% 已翻译"
 
 #: templates/InvenTree/settings/user_display.html:85
 msgid "No translations available"
-msgstr ""
+msgstr "无可用翻译"
 
 #: templates/InvenTree/settings/user_display.html:92
 msgid "Set Language"
-msgstr ""
+msgstr "设置语言"
 
 #: templates/InvenTree/settings/user_display.html:95
 msgid "Some languages are not complete"
-msgstr ""
+msgstr "部分语言尚未翻译完成"
 
 #: templates/InvenTree/settings/user_display.html:97
 msgid "Show only sufficient"
-msgstr ""
+msgstr "只显示足够的"
 
 #: templates/InvenTree/settings/user_display.html:99
 msgid "and hidden."
-msgstr ""
+msgstr "并隐藏。"
 
 #: templates/InvenTree/settings/user_display.html:99
 msgid "Show them too"
-msgstr ""
+msgstr "同时显示"
 
 #: templates/InvenTree/settings/user_display.html:106
 msgid "Help the translation efforts!"
-msgstr ""
+msgstr "帮助翻译工作!"
 
 #: templates/InvenTree/settings/user_display.html:107
 msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged."
-msgstr ""
+msgstr "InventTree 网页的本地化翻译是社区通过 crowdin 贡献的。我们欢迎并鼓励参与贡献。"
 
 #: templates/InvenTree/settings/user_display.html:108
 msgid "InvenTree Translation Project"
-msgstr ""
+msgstr "InvenTree 翻译项目"
 
 #: templates/InvenTree/settings/user_homepage.html:9
 msgid "Home Page Settings"
-msgstr ""
+msgstr "主页设置"
 
 #: templates/InvenTree/settings/user_search.html:9
 msgid "Search Settings"
-msgstr ""
+msgstr "搜索设置"
 
 #: templates/InvenTree/settings/user_sso.html:9
 msgid "Single Sign On Accounts"
-msgstr ""
+msgstr "单点登录账户"
 
 #: templates/InvenTree/settings/user_sso.html:16
 msgid "You can sign in to your account using any of the following third party accounts:"
-msgstr ""
+msgstr "您可以使用下列任何第三方账户登录您的账户:"
 
 #: templates/InvenTree/settings/user_sso.html:52
 msgid "There are no social network accounts connected to this account."
-msgstr ""
+msgstr "您当前没有连接到此账户的社交网络账户。"
 
 #: templates/InvenTree/settings/user_sso.html:58
 msgid "Add SSO Account"
-msgstr ""
+msgstr "添加 SSO 账户"
 
 #: templates/InvenTree/settings/user_sso.html:67
 msgid "Single Sign On is not enabled for this server"
-msgstr ""
+msgstr "此服务器没有启用单点登录"
 
 #: templates/about.html:9
 msgid "InvenTree Version"
-msgstr ""
+msgstr "InvenTree 版本"
 
 #: templates/about.html:14
 msgid "Development Version"
-msgstr ""
+msgstr "开发版"
 
 #: templates/about.html:17
 msgid "Up to Date"
-msgstr ""
+msgstr "已是最新版本"
 
 #: templates/about.html:19
 msgid "Update Available"
-msgstr ""
+msgstr "有可用更新"
 
 #: templates/about.html:43
 msgid "Commit Branch"
-msgstr ""
+msgstr "提交分支"
 
 #: templates/about.html:49
 msgid "InvenTree Documentation"
-msgstr ""
+msgstr "InvenTree 文档"
 
 #: templates/about.html:54
 msgid "API Version"
-msgstr ""
+msgstr "API 版本"
 
 #: templates/about.html:59
 msgid "Python Version"
-msgstr ""
+msgstr "Python 版本"
 
 #: templates/about.html:64
 msgid "Django Version"
-msgstr ""
+msgstr "Django 版本"
 
 #: templates/about.html:69
 msgid "View Code on GitHub"
-msgstr ""
+msgstr "在 GitHub 上查看代码"
 
 #: templates/about.html:74
 msgid "Credits"
-msgstr ""
+msgstr "致谢"
 
 #: templates/about.html:79
 msgid "Mobile App"
-msgstr ""
+msgstr "手机 App"
 
 #: templates/about.html:84
 msgid "Submit Bug Report"
-msgstr ""
+msgstr "提交 Bug"
 
 #: templates/about.html:91 templates/clip.html:4
 #: templates/js/translated/helpers.js:585
 msgid "copy to clipboard"
-msgstr ""
+msgstr "复制到剪贴板"
 
 #: templates/about.html:91
 msgid "copy version information"
-msgstr ""
+msgstr "显示版本信息"
 
 #: templates/account/base.html:66 templates/navbar.html:17
 msgid "InvenTree logo"
-msgstr ""
+msgstr "InventTree 徽标"
 
 #: templates/account/email_confirm.html:6
 #: templates/account/email_confirm.html:9
 msgid "Confirm Email Address"
-msgstr ""
+msgstr "确认邮件地址"
 
 #: templates/account/email_confirm.html:15
 #, python-format
 msgid "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an email address for user %(user_display)s."
-msgstr ""
+msgstr "请确认<a href=\"mailto:%(email)s\">%(email)s</a> 是用户 %(user_display)s 的电子邮件地址。"
 
 #: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774
 msgid "Confirm"
-msgstr ""
+msgstr "确认"
 
 #: templates/account/email_confirm.html:29
 #, python-format
 msgid "This email confirmation link expired or is invalid. Please <a href=\"%(email_url)s\">issue a new email confirmation request</a>."
-msgstr ""
+msgstr "此电子邮件确认链接已过期或无效。请 <a href=\"%(email_url)s\"> 发布一个新的电子邮件确认请求 request</a>。"
 
 #: templates/account/login.html:6 templates/account/login.html:17
 #: templates/account/login.html:38 templates/socialaccount/login.html:5
 msgid "Sign In"
-msgstr ""
+msgstr "登录-test"
 
 #: templates/account/login.html:21
 msgid "Not a member?"
-msgstr ""
+msgstr "还不是用户?"
 
 #: templates/account/login.html:23 templates/account/signup.html:11
 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8
 #: templates/socialaccount/signup.html:23
 msgid "Sign Up"
-msgstr ""
+msgstr "注册"
 
 #: templates/account/login.html:45
 msgid "Forgot Password?"
-msgstr ""
+msgstr "忘记密码?"
 
 #: templates/account/login.html:53
 msgid "or log in with"
-msgstr ""
+msgstr "或者登入"
 
 #: templates/account/logout.html:5 templates/account/logout.html:8
 #: templates/account/logout.html:20
 msgid "Sign Out"
-msgstr ""
+msgstr "登出"
 
 #: templates/account/logout.html:10
 msgid "Are you sure you want to sign out?"
-msgstr ""
+msgstr "您确定要退出吗?"
 
 #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35
 #: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44
 msgid "Return to Site"
-msgstr ""
+msgstr "返回网站"
 
 #: templates/account/password_reset.html:5
 #: templates/account/password_reset.html:12
 msgid "Password Reset"
-msgstr ""
+msgstr "密码重置"
 
 #: templates/account/password_reset.html:18
 msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it."
-msgstr ""
+msgstr "忘记了密码?请在下面输入您的电子邮件地址, 我们将向您发送一封电子邮件, 允许您重置密码。"
 
 #: templates/account/password_reset.html:23
 msgid "Reset My Password"
-msgstr ""
+msgstr "重置我的密码"
 
 #: templates/account/password_reset.html:27 templates/account/signup.html:37
 msgid "This function is currently disabled. Please contact an administrator."
-msgstr ""
+msgstr "此功能目前已禁用。请联系管理员。"
 
 #: templates/account/password_reset_from_key.html:7
 msgid "Bad Token"
-msgstr ""
+msgstr "坏令牌"
 
 #: templates/account/password_reset_from_key.html:11
 #, python-format
 msgid "The password reset link was invalid, possibly because it has already been used.  Please request a <a href=\"%(passwd_reset_url)s\">new password reset</a>."
-msgstr ""
+msgstr "密码重置链接无效, 可能是因为它已被使用。 请发送一个<a href=\"%(passwd_reset_url)s\">密码重置reset</a>的请求。"
 
 #: templates/account/password_reset_from_key.html:18
 msgid "Change password"
-msgstr ""
+msgstr "更改密码"
 
 #: templates/account/password_reset_from_key.html:22
 msgid "Your password is now changed."
-msgstr ""
+msgstr "您的密码现在已更改。"
 
 #: templates/account/signup.html:13
 #, python-format
 msgid "Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
-msgstr ""
+msgstr "已经有账户了?那么请 <a href=\"%(login_url)s\">登陆</a>。"
 
 #: templates/account/signup.html:28
 msgid "Use a SSO-provider for signup"
-msgstr ""
+msgstr "使用SSO提供商注册"
 
 #: templates/account/signup_closed.html:5
 #: templates/account/signup_closed.html:8
 msgid "Sign Up Closed"
-msgstr ""
+msgstr "注册关闭"
 
 #: templates/account/signup_closed.html:10
 msgid "Sign up is currently closed."
-msgstr ""
+msgstr "注册目前已关闭。"
 
 #: templates/account/signup_closed.html:15
 #: templates/socialaccount/authentication_error.html:19
 #: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:30
 msgid "Return to login page"
-msgstr ""
+msgstr "返回登录页面"
 
 #: templates/admin_button.html:8
 msgid "View in administration panel"
-msgstr ""
+msgstr "在管理面板中查看"
 
 #: templates/allauth_2fa/authenticate.html:5
 msgid "Two-Factor Authentication"
-msgstr ""
+msgstr "双重验证"
 
 #: templates/allauth_2fa/authenticate.html:13
 msgid "Authenticate"
-msgstr ""
+msgstr "验证账户"
 
 #: templates/allauth_2fa/backup_tokens.html:6
 msgid "Two-Factor Authentication Backup Tokens"
-msgstr ""
+msgstr "双重身份验证备份令牌"
 
 #: templates/allauth_2fa/backup_tokens.html:17
 msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
-msgstr ""
+msgstr "备份令牌已经生成,但由于安全原因不会在这里显示。按下面的按钮生成新的标记。"
 
 #: templates/allauth_2fa/backup_tokens.html:20
 msgid "No backup tokens are available. Press the button below to generate some."
-msgstr ""
+msgstr "没有备份令牌可用。按下面的按钮生成一些令牌。"
 
 #: templates/allauth_2fa/backup_tokens.html:28
 msgid "Generate Tokens"
-msgstr ""
+msgstr "生成令牌"
 
 #: templates/allauth_2fa/remove.html:6
 msgid "Disable Two-Factor Authentication"
-msgstr ""
+msgstr "关闭双重身份验证"
 
 #: templates/allauth_2fa/remove.html:9
 msgid "Are you sure?"
-msgstr ""
+msgstr "您确定吗?"
 
 #: templates/allauth_2fa/remove.html:17
 msgid "Disable 2FA"
-msgstr ""
+msgstr "禁用二元身份验证"
 
 #: templates/allauth_2fa/setup.html:6
 msgid "Setup Two-Factor Authentication"
-msgstr ""
+msgstr "设置双重身份认证"
 
 #: templates/allauth_2fa/setup.html:10
 msgid "Step 1"
-msgstr ""
+msgstr "第一步"
 
 #: templates/allauth_2fa/setup.html:14
 msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
-msgstr ""
+msgstr "用您选择的令牌生成器扫描下面的二维码(例如Google Authenticator)。"
 
 #: templates/allauth_2fa/setup.html:23
 msgid "Step 2"
-msgstr ""
+msgstr "步骤2"
 
 #: templates/allauth_2fa/setup.html:27
 msgid "Input a token generated by the app:"
-msgstr ""
+msgstr "输入应用程序生成的令牌:"
 
 #: templates/allauth_2fa/setup.html:37
 msgid "Verify"
-msgstr ""
+msgstr "验证"
 
 #: templates/attachment_button.html:4 templates/js/translated/attachment.js:70
 msgid "Add Link"
-msgstr ""
+msgstr "添加链接"
 
 #: templates/attachment_button.html:7 templates/js/translated/attachment.js:48
 msgid "Add Attachment"
-msgstr ""
+msgstr "添加附件"
 
 #: templates/barcode_data.html:5
 msgid "Barcode Identifier"
-msgstr ""
+msgstr "条形码验证器"
 
 #: templates/base.html:103
 msgid "Server Restart Required"
-msgstr ""
+msgstr "需要重启服务器"
 
 #: templates/base.html:106
 msgid "A configuration option has been changed which requires a server restart"
-msgstr ""
+msgstr "设置已更改,需要服务器重启"
 
 #: templates/base.html:106 templates/base.html:116
 msgid "Contact your system administrator for further information"
-msgstr ""
+msgstr "联系您的系统管理员以获取更多信息"
 
 #: templates/base.html:113
 msgid "Pending Database Migrations"
-msgstr ""
+msgstr "等待数据库迁移"
 
 #: templates/base.html:116
 msgid "There are pending database migrations which require attention"
-msgstr ""
+msgstr "有待处理的数据库迁移需要注意。"
 
 #: templates/email/build_order_completed.html:9
 #: templates/email/canceled_order_assigned.html:9
@@ -10737,274 +10759,274 @@ msgstr ""
 #: templates/email/purchase_order_received.html:9
 #: templates/email/return_order_received.html:9
 msgid "Click on the following link to view this order"
-msgstr ""
+msgstr "点击以下链接查看此订单"
 
 #: templates/email/build_order_required_stock.html:7
 msgid "Stock is required for the following build order"
-msgstr ""
+msgstr "以下生产订单需要库存"
 
 #: templates/email/build_order_required_stock.html:8
 #, python-format
 msgid "Build order %(build)s - building %(quantity)s x %(part)s"
-msgstr ""
+msgstr "生产订单 %(build)s - 生产… %(quantity)s x %(part)s"
 
 #: templates/email/build_order_required_stock.html:10
 msgid "Click on the following link to view this build order"
-msgstr ""
+msgstr "点击以下链接查看此生产订单"
 
 #: templates/email/build_order_required_stock.html:14
 msgid "The following parts are low on required stock"
-msgstr ""
+msgstr "以下零件在所需库存中偏低"
 
 #: templates/email/build_order_required_stock.html:18
 #: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557
 msgid "Required Quantity"
-msgstr ""
+msgstr "请求的数量"
 
 #: templates/email/build_order_required_stock.html:38
 #: templates/email/low_stock_notification.html:30
 msgid "You are receiving this email because you are subscribed to notifications for this part "
-msgstr ""
+msgstr "您收到此邮件是因为您订阅了此零件的通知"
 
 #: templates/email/low_stock_notification.html:9
 msgid "Click on the following link to view this part"
-msgstr ""
+msgstr "点击以下链接查看此零件"
 
 #: templates/email/low_stock_notification.html:18
 #: templates/js/translated/part.js:3218
 msgid "Minimum Quantity"
-msgstr ""
+msgstr "最小数量"
 
 #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130
 msgid "No Response"
-msgstr ""
+msgstr "无响应"
 
 #: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131
 msgid "No response from the InvenTree server"
-msgstr ""
+msgstr "InventTree服务器没有响应"
 
 #: templates/js/translated/api.js:232
 msgid "Error 400: Bad request"
-msgstr ""
+msgstr "Error 400: Bad request"
 
 #: templates/js/translated/api.js:233
 msgid "API request returned error code 400"
-msgstr ""
+msgstr "API 请求返回错误代码 400"
 
 #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140
 msgid "Error 401: Not Authenticated"
-msgstr ""
+msgstr "Error 401: Not Authenticated"
 
 #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141
 msgid "Authentication credentials not supplied"
-msgstr ""
+msgstr "未提供身份验证凭据"
 
 #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145
 msgid "Error 403: Permission Denied"
-msgstr ""
+msgstr "Error 403: Permission Denied"
 
 #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146
 msgid "You do not have the required permissions to access this function"
-msgstr ""
+msgstr "您的帐户没有执行此操作所需的权限"
 
 #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150
 msgid "Error 404: Resource Not Found"
-msgstr ""
+msgstr "Error 404: Resource Not Found"
 
 #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151
 msgid "The requested resource could not be located on the server"
-msgstr ""
+msgstr "请求的资源不能位于服务器"
 
 #: templates/js/translated/api.js:252
 msgid "Error 405: Method Not Allowed"
-msgstr ""
+msgstr "Error 405: Method Not Allowed"
 
 #: templates/js/translated/api.js:253
 msgid "HTTP method not allowed at URL"
-msgstr ""
+msgstr "HTTP 方法在 URL 中不允许"
 
 #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155
 msgid "Error 408: Timeout"
-msgstr ""
+msgstr "Error 408: Timeout"
 
 #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156
 msgid "Connection timeout while requesting data from server"
-msgstr ""
+msgstr "从服务器请求数据时连接超时"
 
 #: templates/js/translated/api.js:261
 msgid "Error 503: Service Unavailable"
-msgstr ""
+msgstr "Error 503: Service Unavailable"
 
 #: templates/js/translated/api.js:262
 msgid "The server is currently unavailable"
-msgstr ""
+msgstr "服务器当前不可用"
 
 #: templates/js/translated/api.js:265
 msgid "Unhandled Error Code"
-msgstr ""
+msgstr "未处理的错误代码"
 
 #: templates/js/translated/api.js:266
 msgid "Error code"
-msgstr ""
+msgstr "错误代码"
 
 #: templates/js/translated/attachment.js:114
 msgid "All selected attachments will be deleted"
-msgstr ""
+msgstr "所有选中的附件将被删除"
 
 #: templates/js/translated/attachment.js:129
 msgid "Delete Attachments"
-msgstr ""
+msgstr "删除附件"
 
 #: templates/js/translated/attachment.js:205
 msgid "Delete attachments"
-msgstr ""
+msgstr "删除附件"
 
 #: templates/js/translated/attachment.js:253
 msgid "Attachment actions"
-msgstr ""
+msgstr "附件操作"
 
 #: templates/js/translated/attachment.js:275
 msgid "No attachments found"
-msgstr ""
+msgstr "未找到附件"
 
 #: templates/js/translated/attachment.js:315
 msgid "Edit Attachment"
-msgstr ""
+msgstr "编辑附件"
 
 #: templates/js/translated/attachment.js:346
 msgid "Upload Date"
-msgstr ""
+msgstr "上传日期"
 
 #: templates/js/translated/attachment.js:366
 msgid "Edit attachment"
-msgstr ""
+msgstr "编辑附件"
 
 #: templates/js/translated/attachment.js:374
 msgid "Delete attachment"
-msgstr ""
+msgstr "删除附件"
 
 #: templates/js/translated/barcode.js:43
 msgid "Scan barcode data here using barcode scanner"
-msgstr ""
+msgstr "在这里使用条形码扫描仪扫描条形码数据"
 
 #: templates/js/translated/barcode.js:45
 msgid "Enter barcode data"
-msgstr ""
+msgstr "输入条形码数据"
 
 #: templates/js/translated/barcode.js:59
 msgid "Scan barcode using connected webcam"
-msgstr ""
+msgstr "使用已连接的摄像头扫描条形码"
 
 #: templates/js/translated/barcode.js:138
 msgid "Enter optional notes for stock transfer"
-msgstr ""
+msgstr "输入可选的库存转移备注"
 
 #: templates/js/translated/barcode.js:139
 msgid "Enter notes"
-msgstr ""
+msgstr "添加备注"
 
 #: templates/js/translated/barcode.js:188
 msgid "Server error"
-msgstr ""
+msgstr "服务器错误"
 
 #: templates/js/translated/barcode.js:217
 msgid "Unknown response from server"
-msgstr ""
+msgstr "服务器返回了未知响应"
 
 #: templates/js/translated/barcode.js:252
 #: templates/js/translated/modals.js:1120
 msgid "Invalid server response"
-msgstr ""
+msgstr "无效的服务器响应"
 
 #: templates/js/translated/barcode.js:372
 msgid "Scan barcode data"
-msgstr ""
+msgstr "扫描条形码数据"
 
 #: templates/js/translated/barcode.js:420 templates/navbar.html:114
 msgid "Scan Barcode"
-msgstr ""
+msgstr "扫描条形码"
 
 #: templates/js/translated/barcode.js:458
 msgid "No URL in response"
-msgstr ""
+msgstr "响应中没有URL"
 
 #: templates/js/translated/barcode.js:498
 msgid "This will remove the link to the associated barcode"
-msgstr ""
+msgstr "这将删除到关联条形码的链接"
 
 #: templates/js/translated/barcode.js:504
 msgid "Unlink"
-msgstr ""
+msgstr "取消链接"
 
 #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155
 msgid "Remove stock item"
-msgstr ""
+msgstr "移除库存项"
 
 #: templates/js/translated/barcode.js:610
 msgid "Scan Stock Items Into Location"
-msgstr ""
+msgstr "扫描库存项到此地点"
 
 #: templates/js/translated/barcode.js:612
 msgid "Scan stock item barcode to check in to this location"
-msgstr ""
+msgstr "扫描库存项条形码以登记到此地点"
 
 #: templates/js/translated/barcode.js:615
 #: templates/js/translated/barcode.js:812
 msgid "Check In"
-msgstr ""
+msgstr "登记"
 
 #: templates/js/translated/barcode.js:647
 msgid "No barcode provided"
-msgstr ""
+msgstr "未提供条形码"
 
 #: templates/js/translated/barcode.js:687
 msgid "Stock Item already scanned"
-msgstr ""
+msgstr "库存项已扫描"
 
 #: templates/js/translated/barcode.js:691
 msgid "Stock Item already in this location"
-msgstr ""
+msgstr "库存项已经在这个地点"
 
 #: templates/js/translated/barcode.js:698
 msgid "Added stock item"
-msgstr ""
+msgstr "已添加库存项"
 
 #: templates/js/translated/barcode.js:707
 msgid "Barcode does not match valid stock item"
-msgstr ""
+msgstr "条形码不匹配有效的库存项"
 
 #: templates/js/translated/barcode.js:726
 msgid "Scan Stock Container Into Location"
-msgstr ""
+msgstr "扫描库存容器到此地点"
 
 #: templates/js/translated/barcode.js:728
 msgid "Scan stock container barcode to check in to this location"
-msgstr ""
+msgstr "扫描库存容器条形码以登记到此地点"
 
 #: templates/js/translated/barcode.js:762
 msgid "Barcode does not match valid stock location"
-msgstr ""
+msgstr "条形码与有效的库存地点不匹配"
 
 #: templates/js/translated/barcode.js:806
 msgid "Check Into Location"
-msgstr ""
+msgstr "已登记至地点"
 
 #: templates/js/translated/barcode.js:875
 #: templates/js/translated/barcode.js:884
 msgid "Barcode does not match a valid location"
-msgstr ""
+msgstr "条形码与有效的地点不匹配"
 
 #: templates/js/translated/bom.js:78
 msgid "Create BOM Item"
-msgstr ""
+msgstr "创建物料清单项目"
 
 #: templates/js/translated/bom.js:132
 msgid "Display row data"
-msgstr ""
+msgstr "显示行数据"
 
 #: templates/js/translated/bom.js:188
 msgid "Row Data"
-msgstr ""
+msgstr "行数据"
 
 #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628
@@ -11012,1279 +11034,1279 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:797 templates/modals.html:15
 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
 msgid "Close"
-msgstr ""
+msgstr "关闭"
 
 #: templates/js/translated/bom.js:306
 msgid "Download BOM Template"
-msgstr ""
+msgstr "下载物料清单模板"
 
 #: templates/js/translated/bom.js:351
 msgid "Multi Level BOM"
-msgstr ""
+msgstr "多级物料清单"
 
 #: templates/js/translated/bom.js:352
 msgid "Include BOM data for subassemblies"
-msgstr ""
+msgstr "包括子装配体物料清单数据"
 
 #: templates/js/translated/bom.js:357
 msgid "Levels"
-msgstr ""
+msgstr "等级"
 
 #: templates/js/translated/bom.js:358
 msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
+msgstr "选择要导出的物料清单的最大级别 (0 = 所有级别)"
 
 #: templates/js/translated/bom.js:365
 msgid "Include Alternative Parts"
-msgstr ""
+msgstr "包含替代零件"
 
 #: templates/js/translated/bom.js:366
 msgid "Include alternative parts in exported BOM"
-msgstr ""
+msgstr "在导出的物料清单中包含替代零件"
 
 #: templates/js/translated/bom.js:371
 msgid "Include Parameter Data"
-msgstr ""
+msgstr "包含参数数据"
 
 #: templates/js/translated/bom.js:372
 msgid "Include part parameter data in exported BOM"
-msgstr ""
+msgstr "在导出的物料清单中包含零件参数"
 
 #: templates/js/translated/bom.js:377
 msgid "Include Stock Data"
-msgstr ""
+msgstr "包括库存数据"
 
 #: templates/js/translated/bom.js:378
 msgid "Include part stock data in exported BOM"
-msgstr ""
+msgstr "在导出的物料清单中包含零件库存数据"
 
 #: templates/js/translated/bom.js:383
 msgid "Include Manufacturer Data"
-msgstr ""
+msgstr "包括制造商数据"
 
 #: templates/js/translated/bom.js:384
 msgid "Include part manufacturer data in exported BOM"
-msgstr ""
+msgstr "在导出的物料清单中包含零件制造商数据"
 
 #: templates/js/translated/bom.js:389
 msgid "Include Supplier Data"
-msgstr ""
+msgstr "包含供应商数据"
 
 #: templates/js/translated/bom.js:390
 msgid "Include part supplier data in exported BOM"
-msgstr ""
+msgstr "在导出的物料清单中包含零件供应商数据"
 
 #: templates/js/translated/bom.js:395
 msgid "Include Pricing Data"
-msgstr ""
+msgstr "包含价格数据"
 
 #: templates/js/translated/bom.js:396
 msgid "Include part pricing data in exported BOM"
-msgstr ""
+msgstr "在导出的物料清单中包含零件价格数据"
 
 #: templates/js/translated/bom.js:591
 msgid "Remove substitute part"
-msgstr ""
+msgstr "移除替代零件"
 
 #: templates/js/translated/bom.js:645
 msgid "Select and add a new substitute part using the input below"
-msgstr ""
+msgstr "使用下面的输入选择并添加一个新的替代零件"
 
 #: templates/js/translated/bom.js:656
 msgid "Are you sure you wish to remove this substitute part link?"
-msgstr ""
+msgstr "您确定要删除此替代零件链接吗?"
 
 #: templates/js/translated/bom.js:662
 msgid "Remove Substitute Part"
-msgstr ""
+msgstr "移除替代零件"
 
 #: templates/js/translated/bom.js:701
 msgid "Add Substitute"
-msgstr ""
+msgstr "添加替代"
 
 #: templates/js/translated/bom.js:702
 msgid "Edit BOM Item Substitutes"
-msgstr ""
+msgstr "编辑物料清单项替代品"
 
 #: templates/js/translated/bom.js:764
 msgid "All selected BOM items will be deleted"
-msgstr ""
+msgstr "所有选中的物料清单项目将被删除"
 
 #: templates/js/translated/bom.js:780
 msgid "Delete selected BOM items?"
-msgstr ""
+msgstr "删除选中的物料清单项目吗?"
 
 #: templates/js/translated/bom.js:826
 msgid "Delete items"
-msgstr ""
+msgstr "删除项目"
 
 #: templates/js/translated/bom.js:936
 msgid "Load BOM for subassembly"
-msgstr ""
+msgstr "为子组件加载物料清单"
 
 #: templates/js/translated/bom.js:946
 msgid "Substitutes Available"
-msgstr ""
+msgstr "替代可用"
 
 #: templates/js/translated/bom.js:950 templates/js/translated/build.js:2501
 msgid "Variant stock allowed"
-msgstr ""
+msgstr "已允许变体库存"
 
 #: templates/js/translated/bom.js:1014
 msgid "Substitutes"
-msgstr ""
+msgstr "替代品"
 
 #: templates/js/translated/bom.js:1139
 msgid "BOM pricing is complete"
-msgstr ""
+msgstr "物料清单定价已完成"
 
 #: templates/js/translated/bom.js:1144
 msgid "BOM pricing is incomplete"
-msgstr ""
+msgstr "物料清单定价未完成"
 
 #: templates/js/translated/bom.js:1151
 msgid "No pricing available"
-msgstr ""
+msgstr "无可用价格"
 
 #: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622
 msgid "External stock"
-msgstr ""
+msgstr "外部库存"
 
 #: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596
 #: templates/js/translated/sales_order.js:1910
 msgid "No Stock Available"
-msgstr ""
+msgstr "无可用库存"
 
 #: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600
 msgid "Includes variant and substitute stock"
-msgstr ""
+msgstr "包括变体和替代品库存"
 
 #: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602
 #: templates/js/translated/part.js:1256
 #: templates/js/translated/sales_order.js:1907
 msgid "Includes variant stock"
-msgstr ""
+msgstr "包括变体库存"
 
 #: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604
 msgid "Includes substitute stock"
-msgstr ""
+msgstr "包括替代品库存"
 
 #: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587
 msgid "Consumable item"
-msgstr ""
+msgstr "可消耗项目"
 
 #: templates/js/translated/bom.js:1285
 msgid "Validate BOM Item"
-msgstr ""
+msgstr "验证物料清单项目"
 
 #: templates/js/translated/bom.js:1287
 msgid "This line has been validated"
-msgstr ""
+msgstr "此行已被验证"
 
 #: templates/js/translated/bom.js:1289
 msgid "Edit substitute parts"
-msgstr ""
+msgstr "编辑替代零件"
 
 #: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486
 msgid "Edit BOM Item"
-msgstr ""
+msgstr "编辑物料清单项目"
 
 #: templates/js/translated/bom.js:1293
 msgid "Delete BOM Item"
-msgstr ""
+msgstr "删除物料清单项目"
 
 #: templates/js/translated/bom.js:1313
 msgid "View BOM"
-msgstr ""
+msgstr "查看物料清单"
 
 #: templates/js/translated/bom.js:1397
 msgid "No BOM items found"
-msgstr ""
+msgstr "未找到物料清单项目"
 
 #: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486
 msgid "Required Part"
-msgstr ""
+msgstr "必须零件"
 
 #: templates/js/translated/bom.js:1683
 msgid "Inherited from parent BOM"
-msgstr ""
+msgstr "从上级物料清单继承"
 
 #: templates/js/translated/build.js:142
 msgid "Edit Build Order"
-msgstr ""
+msgstr "编辑生产订单"
 
 #: templates/js/translated/build.js:190
 msgid "Create Build Order"
-msgstr ""
+msgstr "创建生产订单"
 
 #: templates/js/translated/build.js:222
 msgid "Cancel Build Order"
-msgstr ""
+msgstr "取消生产订单"
 
 #: templates/js/translated/build.js:231
 msgid "Are you sure you wish to cancel this build?"
-msgstr ""
+msgstr "是否确定取消生产?"
 
 #: templates/js/translated/build.js:237
 msgid "Stock items have been allocated to this build order"
-msgstr ""
+msgstr "库存项目已分配到此生产订单"
 
 #: templates/js/translated/build.js:244
 msgid "There are incomplete outputs remaining for this build order"
-msgstr ""
+msgstr "此生产订单还有未完成的输出"
 
 #: templates/js/translated/build.js:296
 msgid "Build order is ready to be completed"
-msgstr ""
+msgstr "生产订单已准备完成"
 
 #: templates/js/translated/build.js:304
 msgid "This build order cannot be completed as there are incomplete outputs"
-msgstr ""
+msgstr "由于输出不完整,无法完成此生产订单"
 
 #: templates/js/translated/build.js:309
 msgid "Build Order is incomplete"
-msgstr ""
+msgstr "生产订单未完成"
 
 #: templates/js/translated/build.js:327
 msgid "Complete Build Order"
-msgstr ""
+msgstr "完成生产订单"
 
 #: templates/js/translated/build.js:368 templates/js/translated/stock.js:119
 #: templates/js/translated/stock.js:294
 msgid "Next available serial number"
-msgstr ""
+msgstr "下一个可用序列号"
 
 #: templates/js/translated/build.js:370 templates/js/translated/stock.js:121
 #: templates/js/translated/stock.js:296
 msgid "Latest serial number"
-msgstr ""
+msgstr "最新序列号"
 
 #: templates/js/translated/build.js:379
 msgid "The Bill of Materials contains trackable parts"
-msgstr ""
+msgstr "物料清单中包含可追踪的零件"
 
 #: templates/js/translated/build.js:380
 msgid "Build outputs must be generated individually"
-msgstr ""
+msgstr "必须单独生成生产输出"
 
 #: templates/js/translated/build.js:388
 msgid "Trackable parts can have serial numbers specified"
-msgstr ""
+msgstr "可追踪零件可以指定序列号"
 
 #: templates/js/translated/build.js:389
 msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
+msgstr "输入序列号来生成多个单一生产输出"
 
 #: templates/js/translated/build.js:396
 msgid "Create Build Output"
-msgstr ""
+msgstr "创建生产输出"
 
 #: templates/js/translated/build.js:427
 msgid "Allocate stock items to this build output"
-msgstr ""
+msgstr "分配库存项到此生产输出"
 
 #: templates/js/translated/build.js:435
 msgid "Deallocate stock from build output"
-msgstr ""
+msgstr "从生产输出中取消分配库存"
 
 #: templates/js/translated/build.js:444
 msgid "Complete build output"
-msgstr ""
+msgstr "完成生产输出"
 
 #: templates/js/translated/build.js:452
 msgid "Scrap build output"
-msgstr ""
+msgstr "报废生产输出"
 
 #: templates/js/translated/build.js:459
 msgid "Delete build output"
-msgstr ""
+msgstr "删除生产输出"
 
 #: templates/js/translated/build.js:479
 msgid "Are you sure you wish to deallocate the selected stock items from this build?"
-msgstr ""
+msgstr "您确定要取消此生产的所有库存分配?"
 
 #: templates/js/translated/build.js:497
 msgid "Deallocate Stock Items"
-msgstr ""
+msgstr "取消分配库存项"
 
 #: templates/js/translated/build.js:583 templates/js/translated/build.js:711
 #: templates/js/translated/build.js:837
 msgid "Select Build Outputs"
-msgstr ""
+msgstr "选择生产输出"
 
 #: templates/js/translated/build.js:584 templates/js/translated/build.js:712
 #: templates/js/translated/build.js:838
 msgid "At least one build output must be selected"
-msgstr ""
+msgstr "必须选择至少一个生产输出"
 
 #: templates/js/translated/build.js:598
 msgid "Selected build outputs will be marked as complete"
-msgstr ""
+msgstr "选择的生产输出将被标记为完成"
 
 #: templates/js/translated/build.js:602 templates/js/translated/build.js:736
 #: templates/js/translated/build.js:860
 msgid "Output"
-msgstr ""
+msgstr "输出"
 
 #: templates/js/translated/build.js:630
 msgid "Complete Build Outputs"
-msgstr ""
+msgstr "完成生产输出"
 
 #: templates/js/translated/build.js:727
 msgid "Selected build outputs will be marked as scrapped"
-msgstr ""
+msgstr "选择的生产输出将被标记为已报废"
 
 #: templates/js/translated/build.js:729
 msgid "Scrapped output are marked as rejected"
-msgstr ""
+msgstr "报废的输出被标记为拒收"
 
 #: templates/js/translated/build.js:730
 msgid "Allocated stock items will no longer be available"
-msgstr ""
+msgstr "已分配的库存项将不再可用"
 
 #: templates/js/translated/build.js:731
 msgid "The completion status of the build order will not be adjusted"
-msgstr ""
+msgstr "生产订单的完成状态将不会调整"
 
 #: templates/js/translated/build.js:762
 msgid "Scrap Build Outputs"
-msgstr ""
+msgstr "报废生产输出"
 
 #: templates/js/translated/build.js:852
 msgid "Selected build outputs will be deleted"
-msgstr ""
+msgstr "选定的生产输出将被删除"
 
 #: templates/js/translated/build.js:854
 msgid "Build output data will be permanently deleted"
-msgstr ""
+msgstr "生产输出数据将被永久删除"
 
 #: templates/js/translated/build.js:855
 msgid "Allocated stock items will be returned to stock"
-msgstr ""
+msgstr "分配的库存项将被退回到库存"
 
 #: templates/js/translated/build.js:873
 msgid "Delete Build Outputs"
-msgstr ""
+msgstr "删除生产输出"
 
 #: templates/js/translated/build.js:960
 msgid "No build order allocations found"
-msgstr ""
+msgstr "未找到生产订单分配"
 
 #: templates/js/translated/build.js:989 templates/js/translated/build.js:2342
 msgid "Allocated Quantity"
-msgstr ""
+msgstr "已分配数量"
 
 #: templates/js/translated/build.js:1003
 msgid "Location not specified"
-msgstr ""
+msgstr "未指定地点"
 
 #: templates/js/translated/build.js:1025
 msgid "Complete outputs"
-msgstr ""
+msgstr "已完成输出"
 
 #: templates/js/translated/build.js:1043
 msgid "Scrap outputs"
-msgstr ""
+msgstr "报废输出"
 
 #: templates/js/translated/build.js:1061
 msgid "Delete outputs"
-msgstr ""
+msgstr "删除输出"
 
 #: templates/js/translated/build.js:1115
 msgid "build output"
-msgstr ""
+msgstr "生产输出"
 
 #: templates/js/translated/build.js:1116
 msgid "build outputs"
-msgstr ""
+msgstr "生产输出"
 
 #: templates/js/translated/build.js:1120
 msgid "Build output actions"
-msgstr ""
+msgstr "生产输出操作"
 
 #: templates/js/translated/build.js:1294
 msgid "No active build outputs found"
-msgstr ""
+msgstr "未找到激活的生产输出"
 
 #: templates/js/translated/build.js:1387
 msgid "Allocated Lines"
-msgstr ""
+msgstr "已分配行"
 
 #: templates/js/translated/build.js:1401
 msgid "Required Tests"
-msgstr ""
+msgstr "需要测试"
 
 #: templates/js/translated/build.js:1573
 #: templates/js/translated/purchase_order.js:611
 #: templates/js/translated/sales_order.js:1171
 msgid "Select Parts"
-msgstr ""
+msgstr "选择零件"
 
 #: templates/js/translated/build.js:1574
 #: templates/js/translated/sales_order.js:1172
 msgid "You must select at least one part to allocate"
-msgstr ""
+msgstr "您必须选择至少一个要分配的零件"
 
 #: templates/js/translated/build.js:1637
 #: templates/js/translated/sales_order.js:1121
 msgid "Specify stock allocation quantity"
-msgstr ""
+msgstr "指定库存分配数量"
 
 #: templates/js/translated/build.js:1714
 msgid "All Parts Allocated"
-msgstr ""
+msgstr "所有零件已分配"
 
 #: templates/js/translated/build.js:1715
 msgid "All selected parts have been fully allocated"
-msgstr ""
+msgstr "所有选中的零件已全部分配"
 
 #: templates/js/translated/build.js:1729
 #: templates/js/translated/sales_order.js:1186
 msgid "Select source location (leave blank to take from all locations)"
-msgstr ""
+msgstr "选择源地点 (留空以从所有地点取出)"
 
 #: templates/js/translated/build.js:1757
 msgid "Allocate Stock Items to Build Order"
-msgstr ""
+msgstr "分配库存项到生产订单"
 
 #: templates/js/translated/build.js:1768
 #: templates/js/translated/sales_order.js:1283
 msgid "No matching stock locations"
-msgstr ""
+msgstr "没有匹配的库存地点"
 
 #: templates/js/translated/build.js:1841
 #: templates/js/translated/sales_order.js:1362
 msgid "No matching stock items"
-msgstr ""
+msgstr "没有匹配的库存项"
 
 #: templates/js/translated/build.js:1938
 msgid "Automatic Stock Allocation"
-msgstr ""
+msgstr "自动库存分配"
 
 #: templates/js/translated/build.js:1939
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
-msgstr ""
+msgstr "根据所提供的指引,库存项将被自动分配到这个生产订单"
 
 #: templates/js/translated/build.js:1941
 msgid "If a location is specified, stock will only be allocated from that location"
-msgstr ""
+msgstr "如果指定了一个位置,库存将仅从该位置分配"
 
 #: templates/js/translated/build.js:1942
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
-msgstr ""
+msgstr "如果库存被认为是可互换的,则它将从第一个地点进行分配。"
 
 #: templates/js/translated/build.js:1943
 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
-msgstr ""
+msgstr "如果允许使用替代库存,则将在无法找到主要零件时使用"
 
 #: templates/js/translated/build.js:1974
 msgid "Allocate Stock Items"
-msgstr ""
+msgstr "分配库存项"
 
 #: templates/js/translated/build.js:2080
 msgid "No builds matching query"
-msgstr ""
+msgstr "没有与查询匹配的生产"
 
 #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480
 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
 #: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710
 msgid "Select"
-msgstr ""
+msgstr "选择"
 
 #: templates/js/translated/build.js:2129
 msgid "Build order is overdue"
-msgstr ""
+msgstr "生产订单已逾期"
 
 #: templates/js/translated/build.js:2175
 msgid "Progress"
-msgstr ""
+msgstr "进度"
 
 #: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042
 msgid "No user information"
-msgstr ""
+msgstr "没有用户信息"
 
 #: templates/js/translated/build.js:2387
 #: templates/js/translated/sales_order.js:1646
 msgid "Edit stock allocation"
-msgstr ""
+msgstr "编辑库存分配"
 
 #: templates/js/translated/build.js:2388
 #: templates/js/translated/sales_order.js:1647
 msgid "Delete stock allocation"
-msgstr ""
+msgstr "删除库存分配"
 
 #: templates/js/translated/build.js:2403
 msgid "Edit Allocation"
-msgstr ""
+msgstr "编辑分配"
 
 #: templates/js/translated/build.js:2415
 msgid "Remove Allocation"
-msgstr ""
+msgstr "删除分配"
 
 #: templates/js/translated/build.js:2456
 msgid "build line"
-msgstr ""
+msgstr "生产行"
 
 #: templates/js/translated/build.js:2457
 msgid "build lines"
-msgstr ""
+msgstr "生产行"
 
 #: templates/js/translated/build.js:2475
 msgid "No build lines found"
-msgstr ""
+msgstr "未找到生产行"
 
 #: templates/js/translated/build.js:2505 templates/js/translated/part.js:790
 #: templates/js/translated/part.js:1202
 msgid "Trackable part"
-msgstr ""
+msgstr "可追溯零件"
 
 #: templates/js/translated/build.js:2540
 msgid "Unit Quantity"
-msgstr ""
+msgstr "单位数量"
 
 #: templates/js/translated/build.js:2592
 #: templates/js/translated/sales_order.js:1915
 msgid "Sufficient stock available"
-msgstr ""
+msgstr "库存充足"
 
 #: templates/js/translated/build.js:2647
 msgid "Consumable Item"
-msgstr ""
+msgstr "可消耗物品"
 
 #: templates/js/translated/build.js:2652
 msgid "Tracked item"
-msgstr ""
+msgstr "已跟踪项目"
 
 #: templates/js/translated/build.js:2659
 #: templates/js/translated/sales_order.js:2016
 msgid "Build stock"
-msgstr ""
+msgstr "生产库存"
 
 #: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865
 msgid "Order stock"
-msgstr ""
+msgstr "订单库存"
 
 #: templates/js/translated/build.js:2668
 #: templates/js/translated/sales_order.js:2010
 msgid "Allocate stock"
-msgstr ""
+msgstr "分配库存"
 
 #: templates/js/translated/build.js:2672
 msgid "Remove stock allocation"
-msgstr ""
+msgstr "移除库存分配"
 
 #: templates/js/translated/company.js:98
 msgid "Add Manufacturer"
-msgstr ""
+msgstr "添加制造商"
 
 #: templates/js/translated/company.js:111
 #: templates/js/translated/company.js:213
 msgid "Add Manufacturer Part"
-msgstr ""
+msgstr "添加制造商零件"
 
 #: templates/js/translated/company.js:132
 msgid "Edit Manufacturer Part"
-msgstr ""
+msgstr "编辑制造商零件"
 
 #: templates/js/translated/company.js:201
 #: templates/js/translated/purchase_order.js:93
 msgid "Add Supplier"
-msgstr ""
+msgstr "添加供应商"
 
 #: templates/js/translated/company.js:243
 #: templates/js/translated/purchase_order.js:318
 msgid "Add Supplier Part"
-msgstr ""
+msgstr "添加供应商零件"
 
 #: templates/js/translated/company.js:344
 msgid "All selected supplier parts will be deleted"
-msgstr ""
+msgstr "所有选中的供应商零件将被删除"
 
 #: templates/js/translated/company.js:360
 msgid "Delete Supplier Parts"
-msgstr ""
+msgstr "删除供应商零件"
 
 #: templates/js/translated/company.js:465
 msgid "Add new Company"
-msgstr ""
+msgstr "添加新公司"
 
 #: templates/js/translated/company.js:536
 msgid "Parts Supplied"
-msgstr ""
+msgstr "零件已提供"
 
 #: templates/js/translated/company.js:545
 msgid "Parts Manufactured"
-msgstr ""
+msgstr "零件已制造"
 
 #: templates/js/translated/company.js:560
 msgid "No company information found"
-msgstr ""
+msgstr "未找到该公司信息"
 
 #: templates/js/translated/company.js:609
 msgid "Create New Contact"
-msgstr ""
+msgstr "创建新的联系人"
 
 #: templates/js/translated/company.js:625
 #: templates/js/translated/company.js:748
 msgid "Edit Contact"
-msgstr ""
+msgstr "编辑联系人"
 
 #: templates/js/translated/company.js:662
 msgid "All selected contacts will be deleted"
-msgstr ""
+msgstr "所有选中的联系人将被删除"
 
 #: templates/js/translated/company.js:668
 #: templates/js/translated/company.js:732
 msgid "Role"
-msgstr ""
+msgstr "职位"
 
 #: templates/js/translated/company.js:676
 msgid "Delete Contacts"
-msgstr ""
+msgstr "删除联系人"
 
 #: templates/js/translated/company.js:707
 msgid "No contacts found"
-msgstr ""
+msgstr "未找到联系人"
 
 #: templates/js/translated/company.js:720
 msgid "Phone Number"
-msgstr ""
+msgstr "电话号码"
 
 #: templates/js/translated/company.js:726
 msgid "Email Address"
-msgstr ""
+msgstr "电子邮件地址"
 
 #: templates/js/translated/company.js:752
 msgid "Delete Contact"
-msgstr ""
+msgstr "删除联系人"
 
 #: templates/js/translated/company.js:849
 msgid "Create New Address"
-msgstr ""
+msgstr "创建新地址"
 
 #: templates/js/translated/company.js:864
 #: templates/js/translated/company.js:1025
 msgid "Edit Address"
-msgstr ""
+msgstr "编辑地址"
 
 #: templates/js/translated/company.js:899
 msgid "All selected addresses will be deleted"
-msgstr ""
+msgstr "所有选中的地址将被删除"
 
 #: templates/js/translated/company.js:913
 msgid "Delete Addresses"
-msgstr ""
+msgstr "删除地址"
 
 #: templates/js/translated/company.js:940
 msgid "No addresses found"
-msgstr ""
+msgstr "未找到地址"
 
 #: templates/js/translated/company.js:979
 msgid "Postal city"
-msgstr ""
+msgstr "邮编所属城市"
 
 #: templates/js/translated/company.js:985
 msgid "State/province"
-msgstr ""
+msgstr "省、自治区或直辖市"
 
 #: templates/js/translated/company.js:997
 msgid "Courier notes"
-msgstr ""
+msgstr "快递备注"
 
 #: templates/js/translated/company.js:1003
 msgid "Internal notes"
-msgstr ""
+msgstr "内部备注"
 
 #: templates/js/translated/company.js:1029
 msgid "Delete Address"
-msgstr ""
+msgstr "删除地址"
 
 #: templates/js/translated/company.js:1102
 msgid "All selected manufacturer parts will be deleted"
-msgstr ""
+msgstr "所有选中的制造商零件将被删除"
 
 #: templates/js/translated/company.js:1117
 msgid "Delete Manufacturer Parts"
-msgstr ""
+msgstr "删除制造商零件"
 
 #: templates/js/translated/company.js:1151
 msgid "All selected parameters will be deleted"
-msgstr ""
+msgstr "所有选中的参数将被删除"
 
 #: templates/js/translated/company.js:1165
 msgid "Delete Parameters"
-msgstr ""
+msgstr "删除参数"
 
 #: templates/js/translated/company.js:1181
 #: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244
 msgid "Order parts"
-msgstr ""
+msgstr "订购零件"
 
 #: templates/js/translated/company.js:1198
 msgid "Delete manufacturer parts"
-msgstr ""
+msgstr "删除制造商零件"
 
 #: templates/js/translated/company.js:1230
 msgid "Manufacturer part actions"
-msgstr ""
+msgstr "制造商零件操作"
 
 #: templates/js/translated/company.js:1249
 msgid "No manufacturer parts found"
-msgstr ""
+msgstr "未找到制造商零件"
 
 #: templates/js/translated/company.js:1269
 #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798
 #: templates/js/translated/part.js:1210
 msgid "Template part"
-msgstr ""
+msgstr "模板零件"
 
 #: templates/js/translated/company.js:1273
 #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802
 #: templates/js/translated/part.js:1214
 msgid "Assembled part"
-msgstr ""
+msgstr "装配零件"
 
 #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464
 msgid "No parameters found"
-msgstr ""
+msgstr "未找到参数"
 
 #: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527
 msgid "Edit parameter"
-msgstr ""
+msgstr "编辑参数"
 
 #: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528
 msgid "Delete parameter"
-msgstr ""
+msgstr "删除参数"
 
 #: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433
 msgid "Edit Parameter"
-msgstr ""
+msgstr "编辑参数"
 
 #: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549
 msgid "Delete Parameter"
-msgstr ""
+msgstr "删除参数"
 
 #: templates/js/translated/company.js:1486
 msgid "Delete supplier parts"
-msgstr ""
+msgstr "删除供应商零件"
 
 #: templates/js/translated/company.js:1536
 msgid "No supplier parts found"
-msgstr ""
+msgstr "未找到供应商零件"
 
 #: templates/js/translated/company.js:1654
 msgid "Base Units"
-msgstr ""
+msgstr "基础单位"
 
 #: templates/js/translated/company.js:1684
 msgid "Availability"
-msgstr ""
+msgstr "可用性"
 
 #: templates/js/translated/company.js:1715
 msgid "Edit supplier part"
-msgstr ""
+msgstr "编辑供应商零件"
 
 #: templates/js/translated/company.js:1716
 msgid "Delete supplier part"
-msgstr ""
+msgstr "删除供应商零件"
 
 #: templates/js/translated/company.js:1769
 #: templates/js/translated/pricing.js:694
 msgid "Delete Price Break"
-msgstr ""
+msgstr "删除批发价"
 
 #: templates/js/translated/company.js:1779
 #: templates/js/translated/pricing.js:712
 msgid "Edit Price Break"
-msgstr ""
+msgstr "编辑批发价"
 
 #: templates/js/translated/company.js:1794
 msgid "No price break information found"
-msgstr ""
+msgstr "找不到批发价信息"
 
 #: templates/js/translated/company.js:1823
 msgid "Last updated"
-msgstr ""
+msgstr "最近更新"
 
 #: templates/js/translated/company.js:1830
 msgid "Edit price break"
-msgstr ""
+msgstr "删除批发价"
 
 #: templates/js/translated/company.js:1831
 msgid "Delete price break"
-msgstr ""
+msgstr "删除批发价"
 
 #: templates/js/translated/filters.js:186
 #: templates/js/translated/filters.js:672
 msgid "true"
-msgstr ""
+msgstr "真"
 
 #: templates/js/translated/filters.js:190
 #: templates/js/translated/filters.js:673
 msgid "false"
-msgstr ""
+msgstr "假"
 
 #: templates/js/translated/filters.js:214
 msgid "Select filter"
-msgstr ""
+msgstr "选择过滤器"
 
 #: templates/js/translated/filters.js:437
 msgid "Print Labels"
-msgstr ""
+msgstr "打印标签"
 
 #: templates/js/translated/filters.js:441
 msgid "Print Reports"
-msgstr ""
+msgstr "打印报表"
 
 #: templates/js/translated/filters.js:453
 msgid "Download table data"
-msgstr ""
+msgstr "下载表格数据"
 
 #: templates/js/translated/filters.js:460
 msgid "Reload table data"
-msgstr ""
+msgstr "重新加载表格数据"
 
 #: templates/js/translated/filters.js:469
 msgid "Add new filter"
-msgstr ""
+msgstr "添加新过滤器"
 
 #: templates/js/translated/filters.js:477
 msgid "Clear all filters"
-msgstr ""
+msgstr "清除所有过滤器"
 
 #: templates/js/translated/filters.js:582
 msgid "Create filter"
-msgstr ""
+msgstr "创建过滤器"
 
 #: templates/js/translated/forms.js:378 templates/js/translated/forms.js:393
 #: templates/js/translated/forms.js:407 templates/js/translated/forms.js:421
 msgid "Action Prohibited"
-msgstr ""
+msgstr "禁止操作"
 
 #: templates/js/translated/forms.js:380
 msgid "Create operation not allowed"
-msgstr ""
+msgstr "不允许创建操作"
 
 #: templates/js/translated/forms.js:395
 msgid "Update operation not allowed"
-msgstr ""
+msgstr "不允许更新操作"
 
 #: templates/js/translated/forms.js:409
 msgid "Delete operation not allowed"
-msgstr ""
+msgstr "不允许删除操作"
 
 #: templates/js/translated/forms.js:423
 msgid "View operation not allowed"
-msgstr ""
+msgstr "不允许查看操作"
 
 #: templates/js/translated/forms.js:800
 msgid "Keep this form open"
-msgstr ""
+msgstr "保持此表单打开"
 
 #: templates/js/translated/forms.js:903
 msgid "Enter a valid number"
-msgstr ""
+msgstr "输入一个有效的数字"
 
 #: templates/js/translated/forms.js:1473 templates/modals.html:19
 #: templates/modals.html:43
 msgid "Form errors exist"
-msgstr ""
+msgstr "表单存在错误"
 
 #: templates/js/translated/forms.js:1971
 msgid "No results found"
-msgstr ""
+msgstr "未找到结果"
 
 #: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239
 msgid "Searching"
-msgstr ""
+msgstr "正在搜索"
 
 #: templates/js/translated/forms.js:2489
 msgid "Clear input"
-msgstr ""
+msgstr "清空输入"
 
 #: templates/js/translated/forms.js:3091
 msgid "File Column"
-msgstr ""
+msgstr "文件列"
 
 #: templates/js/translated/forms.js:3091
 msgid "Field Name"
-msgstr ""
+msgstr "字段名称"
 
 #: templates/js/translated/forms.js:3103
 msgid "Select Columns"
-msgstr ""
+msgstr "选择列"
 
 #: templates/js/translated/helpers.js:77
 msgid "YES"
-msgstr ""
+msgstr "是"
 
 #: templates/js/translated/helpers.js:80
 msgid "NO"
-msgstr ""
+msgstr "否"
 
 #: templates/js/translated/helpers.js:93
 msgid "True"
-msgstr ""
+msgstr "真"
 
 #: templates/js/translated/helpers.js:94
 msgid "False"
-msgstr ""
+msgstr "假"
 
 #: templates/js/translated/index.js:104
 msgid "No parts required for builds"
-msgstr ""
+msgstr "生产时无需零件"
 
 #: templates/js/translated/label.js:53 templates/js/translated/report.js:123
 msgid "Select Items"
-msgstr ""
+msgstr "选择项目"
 
 #: templates/js/translated/label.js:54
 msgid "No items selected for printing"
-msgstr ""
+msgstr "未选择要打印的项目"
 
 #: templates/js/translated/label.js:72
 msgid "No Labels Found"
-msgstr ""
+msgstr "未找到标签"
 
 #: templates/js/translated/label.js:73
 msgid "No label templates found which match the selected items"
-msgstr ""
+msgstr "没有找到匹配所选项目的标签模板"
 
 #: templates/js/translated/label.js:97
 msgid "selected"
-msgstr ""
+msgstr "已选"
 
 #: templates/js/translated/label.js:133
 msgid "Printing Options"
-msgstr ""
+msgstr "打印选项"
 
 #: templates/js/translated/label.js:148
 msgid "Print label"
-msgstr ""
+msgstr "打印标签"
 
 #: templates/js/translated/label.js:148
 msgid "Print labels"
-msgstr ""
+msgstr "打印标签"
 
 #: templates/js/translated/label.js:149
 msgid "Print"
-msgstr ""
+msgstr "打印"
 
 #: templates/js/translated/label.js:155
 msgid "Select label template"
-msgstr ""
+msgstr "选择标签模板"
 
 #: templates/js/translated/label.js:168
 msgid "Select plugin"
-msgstr ""
+msgstr "选择插件"
 
 #: templates/js/translated/label.js:187
 msgid "Labels sent to printer"
-msgstr ""
+msgstr "标签已发送到打印机"
 
 #: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158
 #: templates/js/translated/modals.js:683
 msgid "Cancel"
-msgstr ""
+msgstr "取消"
 
 #: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157
 #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059
 #: templates/modals.html:28 templates/modals.html:51
 msgid "Submit"
-msgstr ""
+msgstr "提交"
 
 #: templates/js/translated/modals.js:156
 msgid "Form Title"
-msgstr ""
+msgstr "表格标题"
 
 #: templates/js/translated/modals.js:445
 msgid "Waiting for server..."
-msgstr ""
+msgstr "等待服务器..."
 
 #: templates/js/translated/modals.js:596
 msgid "Show Error Information"
-msgstr ""
+msgstr "显示错误信息"
 
 #: templates/js/translated/modals.js:682
 msgid "Accept"
-msgstr ""
+msgstr "接受"
 
 #: templates/js/translated/modals.js:740
 msgid "Loading Data"
-msgstr ""
+msgstr "正在加载数据"
 
 #: templates/js/translated/modals.js:1011
 msgid "Invalid response from server"
-msgstr ""
+msgstr "服务器返回无效响应"
 
 #: templates/js/translated/modals.js:1011
 msgid "Form data missing from server response"
-msgstr ""
+msgstr "服务器响应中缺少表单数据"
 
 #: templates/js/translated/modals.js:1023
 msgid "Error posting form data"
-msgstr ""
+msgstr "发布表单数据时出错"
 
 #: templates/js/translated/modals.js:1120
 msgid "JSON response missing form data"
-msgstr ""
+msgstr "JSON 响应缺少表单数据"
 
 #: templates/js/translated/modals.js:1135
 msgid "Error 400: Bad Request"
-msgstr ""
+msgstr "Error 400: Bad Request"
 
 #: templates/js/translated/modals.js:1136
 msgid "Server returned error code 400"
-msgstr ""
+msgstr "服务器返回错误代码 400"
 
 #: templates/js/translated/modals.js:1159
 msgid "Error requesting form data"
-msgstr ""
+msgstr "请求表单数据时出错"
 
 #: templates/js/translated/news.js:33
 msgid "No news found"
-msgstr ""
+msgstr "未找到新闻"
 
 #: templates/js/translated/news.js:38
 #: templates/js/translated/notification.js:46
 #: templates/js/translated/part.js:1604
 msgid "ID"
-msgstr ""
+msgstr "ID"
 
 #: templates/js/translated/notification.js:52
 msgid "Age"
-msgstr ""
+msgstr "年龄"
 
 #: templates/js/translated/notification.js:65
 msgid "Notification"
-msgstr ""
+msgstr "通知"
 
 #: templates/js/translated/notification.js:224
 msgid "Mark as unread"
-msgstr ""
+msgstr "标记为未读"
 
 #: templates/js/translated/notification.js:228
 msgid "Mark as read"
-msgstr ""
+msgstr "标记为已读"
 
 #: templates/js/translated/notification.js:254
 msgid "No unread notifications"
-msgstr ""
+msgstr "没有未读通知"
 
 #: templates/js/translated/notification.js:296 templates/notifications.html:12
 msgid "Notifications will load here"
-msgstr ""
+msgstr "通知将在此处加载"
 
 #: templates/js/translated/order.js:89
 msgid "Add Extra Line Item"
-msgstr ""
+msgstr "添加额外行项目"
 
 #: templates/js/translated/order.js:126
 msgid "Export Order"
-msgstr ""
+msgstr "导出订单"
 
 #: templates/js/translated/order.js:241
 msgid "Duplicate Line"
-msgstr ""
+msgstr "复制行"
 
 #: templates/js/translated/order.js:255
 msgid "Edit Line"
-msgstr ""
+msgstr "编辑行"
 
 #: templates/js/translated/order.js:268
 msgid "Delete Line"
-msgstr ""
+msgstr "删除行"
 
 #: templates/js/translated/order.js:281
 #: templates/js/translated/purchase_order.js:1991
 msgid "No line items found"
-msgstr ""
+msgstr "没有找到行项目"
 
 #: templates/js/translated/order.js:369
 msgid "Duplicate line"
-msgstr ""
+msgstr "复制行"
 
 #: templates/js/translated/order.js:370
 msgid "Edit line"
-msgstr ""
+msgstr "编辑行"
 
 #: templates/js/translated/order.js:374
 msgid "Delete line"
-msgstr ""
+msgstr "删除行"
 
 #: templates/js/translated/part.js:90
 msgid "Part Attributes"
-msgstr ""
+msgstr "零件属性"
 
 #: templates/js/translated/part.js:94
 msgid "Part Creation Options"
-msgstr ""
+msgstr "零件创建选项"
 
 #: templates/js/translated/part.js:98
 msgid "Part Duplication Options"
-msgstr ""
+msgstr "零件复制选项"
 
 #: templates/js/translated/part.js:121
 msgid "Add Part Category"
-msgstr ""
+msgstr "增加零件类别"
 
 #: templates/js/translated/part.js:308
 msgid "Parent part category"
-msgstr ""
+msgstr "上级零件类别"
 
 #: templates/js/translated/part.js:332 templates/js/translated/stock.js:175
 msgid "Icon (optional) - Explore all available icons on"
-msgstr ""
+msgstr "图标(可选) - 浏览所有可用图标"
 
 #: templates/js/translated/part.js:352
 msgid "Create Part Category"
-msgstr ""
+msgstr "创建零件类别"
 
 #: templates/js/translated/part.js:355
 msgid "Create new category after this one"
-msgstr ""
+msgstr "在此后创建新类别"
 
 #: templates/js/translated/part.js:356
 msgid "Part category created"
-msgstr ""
+msgstr "零件类别已创建"
 
 #: templates/js/translated/part.js:370
 msgid "Edit Part Category"
-msgstr ""
+msgstr "设置零件类别"
 
 #: templates/js/translated/part.js:383
 msgid "Are you sure you want to delete this part category?"
-msgstr ""
+msgstr "确定要删除这个零件类别吗?"
 
 #: templates/js/translated/part.js:388
 msgid "Move to parent category"
-msgstr ""
+msgstr "移动到上级类别"
 
 #: templates/js/translated/part.js:397
 msgid "Delete Part Category"
-msgstr ""
+msgstr "删除零件类别"
 
 #: templates/js/translated/part.js:401
 msgid "Action for parts in this category"
-msgstr ""
+msgstr "对此类别中零件的操作"
 
 #: templates/js/translated/part.js:406
 msgid "Action for child categories"
-msgstr ""
+msgstr "针对子类别采取的操作"
 
 #: templates/js/translated/part.js:430
 msgid "Create Part"
-msgstr ""
+msgstr "创建零件"
 
 #: templates/js/translated/part.js:432
 msgid "Create another part after this one"
-msgstr ""
+msgstr "在此之后创建另一个零件"
 
 #: templates/js/translated/part.js:433
 msgid "Part created successfully"
-msgstr ""
+msgstr "零件创建成功"
 
 #: templates/js/translated/part.js:461
 msgid "Edit Part"
-msgstr ""
+msgstr "编辑零件"
 
 #: templates/js/translated/part.js:463
 msgid "Part edited"
-msgstr ""
+msgstr "已编辑零件"
 
 #: templates/js/translated/part.js:474
 msgid "Create Part Variant"
-msgstr ""
+msgstr "创建零件变体"
 
 #: templates/js/translated/part.js:531
 msgid "Active Part"
-msgstr ""
+msgstr "激活的零件"
 
 #: templates/js/translated/part.js:532
 msgid "Part cannot be deleted as it is currently active"
-msgstr ""
+msgstr "由于零件当前处于激活状态,因此无法删除"
 
 #: templates/js/translated/part.js:546
 msgid "Deleting this part cannot be reversed"
-msgstr ""
+msgstr "删除这个零件后将无法逆转"
 
 #: templates/js/translated/part.js:548
 msgid "Any stock items for this part will be deleted"
-msgstr ""
+msgstr "这一零件的所有库存项都将被删除"
 
 #: templates/js/translated/part.js:549
 msgid "This part will be removed from any Bills of Material"
-msgstr ""
+msgstr "这一零件将从所有材料清单中删除"
 
 #: templates/js/translated/part.js:550
 msgid "All manufacturer and supplier information for this part will be deleted"
-msgstr ""
+msgstr "此零件的所有制造商和供应商信息将被删除"
 
 #: templates/js/translated/part.js:557
 msgid "Delete Part"
-msgstr ""
+msgstr "删除零件"
 
 #: templates/js/translated/part.js:593
 msgid "You are subscribed to notifications for this item"
-msgstr ""
+msgstr "您已订阅此零件的通知"
 
 #: templates/js/translated/part.js:595
 msgid "You have subscribed to notifications for this item"
-msgstr ""
+msgstr "您已订阅此零件的通知"
 
 #: templates/js/translated/part.js:600
 msgid "Subscribe to notifications for this item"
-msgstr ""
+msgstr "订阅此零件的通知"
 
 #: templates/js/translated/part.js:602
 msgid "You have unsubscribed to notifications for this item"
-msgstr ""
+msgstr "您取消订阅此零件的通知"
 
 #: templates/js/translated/part.js:619
 msgid "Validating the BOM will mark each line item as valid"
-msgstr ""
+msgstr "物料清单验证将标记每个行项目为有效"
 
 #: templates/js/translated/part.js:629
 msgid "Validate Bill of Materials"
-msgstr ""
+msgstr "验证物料清单"
 
 #: templates/js/translated/part.js:632
 msgid "Validated Bill of Materials"
-msgstr ""
+msgstr "已验证物料清单"
 
 #: templates/js/translated/part.js:657
 msgid "Copy Bill of Materials"
-msgstr ""
+msgstr "复制物料清单"
 
 #: templates/js/translated/part.js:685
 #: templates/js/translated/table_filters.js:747
 msgid "Low stock"
-msgstr ""
+msgstr "低库存"
 
 #: templates/js/translated/part.js:688
 msgid "No stock available"
-msgstr ""
+msgstr "无可用库存"
 
 #: templates/js/translated/part.js:748
 msgid "Demand"
-msgstr ""
+msgstr "需求量"
 
 #: templates/js/translated/part.js:771
 msgid "Unit"
-msgstr ""
+msgstr "单位"
 
 #: templates/js/translated/part.js:794 templates/js/translated/part.js:1206
 msgid "Virtual part"
-msgstr ""
+msgstr "虚拟零件"
 
 #: templates/js/translated/part.js:806
 msgid "Subscribed part"
-msgstr ""
+msgstr "订阅的零件"
 
 #: templates/js/translated/part.js:810
 msgid "Salable part"
-msgstr ""
+msgstr "可销售零件"
 
 #: templates/js/translated/part.js:889
 msgid "Schedule generation of a new stocktake report."
@@ -12373,36 +12395,36 @@ msgstr ""
 
 #: templates/js/translated/part.js:2235
 msgid "Set category"
-msgstr ""
+msgstr "设置类别"
 
 #: templates/js/translated/part.js:2287
 msgid "part"
-msgstr ""
+msgstr "零件"
 
 #: templates/js/translated/part.js:2288
 msgid "parts"
-msgstr ""
+msgstr "零件"
 
 #: templates/js/translated/part.js:2384
 msgid "No category"
-msgstr ""
+msgstr "没有类别"
 
 #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
 #: templates/js/translated/stock.js:2669
 msgid "Display as list"
-msgstr ""
+msgstr "按列表显示"
 
 #: templates/js/translated/part.js:2547
 msgid "Display as grid"
-msgstr ""
+msgstr "按网格显示"
 
 #: templates/js/translated/part.js:2645
 msgid "No subcategories found"
-msgstr ""
+msgstr "未找到子类别"
 
 #: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689
 msgid "Display as tree"
-msgstr ""
+msgstr "按树显示"
 
 #: templates/js/translated/part.js:2761
 msgid "Load Subcategories"
@@ -12414,11 +12436,11 @@ msgstr ""
 
 #: templates/js/translated/part.js:2864
 msgid "No test templates matching query"
-msgstr ""
+msgstr "没有与查询匹配的测试模板"
 
 #: templates/js/translated/part.js:2886 templates/js/translated/search.js:342
 msgid "results"
-msgstr ""
+msgstr "结果"
 
 #: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453
 msgid "Edit test result"
@@ -12443,39 +12465,39 @@ msgstr ""
 
 #: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051
 msgid "No date specified"
-msgstr ""
+msgstr "无指定日期"
 
 #: templates/js/translated/part.js:3053
 msgid "Specified date is in the past"
-msgstr ""
+msgstr "指定日期已过"
 
 #: templates/js/translated/part.js:3059
 msgid "Speculative"
-msgstr ""
+msgstr "可指定的"
 
 #: templates/js/translated/part.js:3109
 msgid "No scheduling information available for this part"
-msgstr ""
+msgstr "该零件无计划信息"
 
 #: templates/js/translated/part.js:3115
 msgid "Error fetching scheduling information for this part"
-msgstr ""
+msgstr "获取此零件的调度信息时出错"
 
 #: templates/js/translated/part.js:3211
 msgid "Scheduled Stock Quantities"
-msgstr ""
+msgstr "计划库存数量"
 
 #: templates/js/translated/part.js:3227
 msgid "Maximum Quantity"
-msgstr ""
+msgstr "最大数量"
 
 #: templates/js/translated/part.js:3272
 msgid "Minimum Stock Level"
-msgstr ""
+msgstr "最低库存水平"
 
 #: templates/js/translated/plugin.js:46
 msgid "No plugins found"
-msgstr ""
+msgstr "未发现插件"
 
 #: templates/js/translated/plugin.js:58
 msgid "This plugin is no longer installed"
@@ -12483,51 +12505,51 @@ msgstr ""
 
 #: templates/js/translated/plugin.js:60
 msgid "This plugin is active"
-msgstr ""
+msgstr "此插件已激活"
 
 #: templates/js/translated/plugin.js:62
 msgid "This plugin is installed but not active"
-msgstr ""
+msgstr "此插件已安装但未激活"
 
 #: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186
 msgid "Disable Plugin"
-msgstr ""
+msgstr "禁用插件"
 
 #: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:186
 msgid "Enable Plugin"
-msgstr ""
+msgstr "启用插件"
 
 #: templates/js/translated/plugin.js:158
 msgid "The Plugin was installed"
-msgstr ""
+msgstr "插件已安装"
 
 #: templates/js/translated/plugin.js:177
 msgid "Are you sure you want to enable this plugin?"
-msgstr ""
+msgstr "您确定要启用此插件吗?"
 
 #: templates/js/translated/plugin.js:181
 msgid "Are you sure you want to disable this plugin?"
-msgstr ""
+msgstr "您确定要禁用此插件吗?"
 
 #: templates/js/translated/plugin.js:189
 msgid "Enable"
-msgstr ""
+msgstr "启用"
 
 #: templates/js/translated/plugin.js:189
 msgid "Disable"
-msgstr ""
+msgstr "禁用"
 
 #: templates/js/translated/plugin.js:203
 msgid "Plugin updated"
-msgstr ""
+msgstr "插件已更新"
 
 #: templates/js/translated/pricing.js:159
 msgid "Error fetching currency data"
-msgstr ""
+msgstr "获取货币数据出错"
 
 #: templates/js/translated/pricing.js:321
 msgid "No BOM data available"
-msgstr ""
+msgstr "没有可用的物料清单数据"
 
 #: templates/js/translated/pricing.js:463
 msgid "No supplier pricing data available"
@@ -12543,7 +12565,7 @@ msgstr ""
 
 #: templates/js/translated/pricing.js:791
 msgid "Purchase Price History"
-msgstr ""
+msgstr "购买价格历史记录"
 
 #: templates/js/translated/pricing.js:894
 msgid "No sales history data available"
@@ -12551,7 +12573,7 @@ msgstr ""
 
 #: templates/js/translated/pricing.js:916
 msgid "Sale Price History"
-msgstr ""
+msgstr "售出价格历史记录"
 
 #: templates/js/translated/pricing.js:1005
 msgid "No variant data available"
@@ -12559,7 +12581,7 @@ msgstr ""
 
 #: templates/js/translated/pricing.js:1045
 msgid "Variant Part"
-msgstr ""
+msgstr "变体零件"
 
 #: templates/js/translated/purchase_order.js:169
 msgid "Select purchase order to duplicate"
@@ -12571,7 +12593,7 @@ msgstr ""
 
 #: templates/js/translated/purchase_order.js:177
 msgid "Duplicate all line items from the selected order"
-msgstr ""
+msgstr "复制所选订单中的所有行项目"
 
 #: templates/js/translated/purchase_order.js:184
 msgid "Duplicate Extra Lines"
@@ -12583,7 +12605,7 @@ msgstr ""
 
 #: templates/js/translated/purchase_order.js:206
 msgid "Edit Purchase Order"
-msgstr ""
+msgstr "编辑采购订单"
 
 #: templates/js/translated/purchase_order.js:223
 msgid "Duplication Options"
@@ -12643,19 +12665,19 @@ msgstr ""
 
 #: templates/js/translated/purchase_order.js:646
 msgid "New supplier part"
-msgstr ""
+msgstr "新建供应商零件"
 
 #: templates/js/translated/purchase_order.js:664
 msgid "New purchase order"
-msgstr ""
+msgstr "新建采购订单"
 
 #: templates/js/translated/purchase_order.js:705
 msgid "Add to purchase order"
-msgstr ""
+msgstr "添加到采购订单中"
 
 #: templates/js/translated/purchase_order.js:755
 msgid "Merge"
-msgstr ""
+msgstr "合并"
 
 #: templates/js/translated/purchase_order.js:859
 msgid "No matching supplier parts"
@@ -12667,7 +12689,7 @@ msgstr ""
 
 #: templates/js/translated/purchase_order.js:1073
 msgid "Select Line Items"
-msgstr ""
+msgstr "选择行项目"
 
 #: templates/js/translated/purchase_order.js:1074
 #: templates/js/translated/return_order.js:492
@@ -12684,52 +12706,52 @@ msgstr ""
 
 #: templates/js/translated/purchase_order.js:1191
 msgid "Stock Status"
-msgstr ""
+msgstr "库存状态"
 
 #: templates/js/translated/purchase_order.js:1205
 msgid "Add barcode"
-msgstr ""
+msgstr "添加条形码"
 
 #: templates/js/translated/purchase_order.js:1206
 msgid "Remove barcode"
-msgstr ""
+msgstr "移除条形码"
 
 #: templates/js/translated/purchase_order.js:1209
 msgid "Specify location"
-msgstr ""
+msgstr "指定位置"
 
 #: templates/js/translated/purchase_order.js:1217
 msgid "Add batch code"
-msgstr "新增生產批號"
+msgstr "添加批号"
 
 #: templates/js/translated/purchase_order.js:1228
 msgid "Add serial numbers"
-msgstr ""
+msgstr "添加序列号"
 
 #: templates/js/translated/purchase_order.js:1280
 msgid "Serials"
-msgstr ""
+msgstr "序列号"
 
 #: templates/js/translated/purchase_order.js:1305
 msgid "Order Code"
-msgstr ""
+msgstr "订单编码"
 
 #: templates/js/translated/purchase_order.js:1307
 msgid "Quantity to Receive"
-msgstr ""
+msgstr "要接收的数量"
 
 #: templates/js/translated/purchase_order.js:1333
 #: templates/js/translated/return_order.js:561
 msgid "Confirm receipt of items"
-msgstr ""
+msgstr "确认接收项目"
 
 #: templates/js/translated/purchase_order.js:1334
 msgid "Receive Purchase Order Items"
-msgstr ""
+msgstr "接收采购订单项目"
 
 #: templates/js/translated/purchase_order.js:1402
 msgid "Scan Item Barcode"
-msgstr ""
+msgstr "扫描条形码"
 
 #: templates/js/translated/purchase_order.js:1403
 msgid "Scan barcode on incoming item (must not match any existing stock items)"
@@ -12751,50 +12773,50 @@ msgstr ""
 #: templates/js/translated/sales_order.js:851
 #: templates/js/translated/sales_order.js:1011
 msgid "Items"
-msgstr ""
+msgstr "项目"
 
 #: templates/js/translated/purchase_order.js:1844
 msgid "All selected Line items will be deleted"
-msgstr ""
+msgstr "所有选中的行项目将被删除"
 
 #: templates/js/translated/purchase_order.js:1862
 msgid "Delete selected Line items?"
-msgstr ""
+msgstr "删除选中的行项目吗?"
 
 #: templates/js/translated/purchase_order.js:1917
 #: templates/js/translated/sales_order.js:2070
 msgid "Duplicate Line Item"
-msgstr ""
+msgstr "复制行项目"
 
 #: templates/js/translated/purchase_order.js:1932
 #: templates/js/translated/return_order.js:476
 #: templates/js/translated/return_order.js:669
 #: templates/js/translated/sales_order.js:2083
 msgid "Edit Line Item"
-msgstr ""
+msgstr "编辑行项目"
 
 #: templates/js/translated/purchase_order.js:1943
 #: templates/js/translated/return_order.js:682
 #: templates/js/translated/sales_order.js:2094
 msgid "Delete Line Item"
-msgstr ""
+msgstr "删除行项目"
 
 #: templates/js/translated/purchase_order.js:2225
 #: templates/js/translated/sales_order.js:2024
 msgid "Duplicate line item"
-msgstr ""
+msgstr "复制行项目"
 
 #: templates/js/translated/purchase_order.js:2226
 #: templates/js/translated/return_order.js:801
 #: templates/js/translated/sales_order.js:2025
 msgid "Edit line item"
-msgstr ""
+msgstr "编辑行项目"
 
 #: templates/js/translated/purchase_order.js:2227
 #: templates/js/translated/return_order.js:805
 #: templates/js/translated/sales_order.js:2031
 msgid "Delete line item"
-msgstr ""
+msgstr "删除行项目"
 
 #: templates/js/translated/report.js:63
 msgid "items selected"
@@ -12819,7 +12841,7 @@ msgstr ""
 #: templates/js/translated/return_order.js:60
 #: templates/js/translated/sales_order.js:86
 msgid "Add Customer"
-msgstr ""
+msgstr "添加客户"
 
 #: templates/js/translated/return_order.js:134
 msgid "Create Return Order"
@@ -12827,45 +12849,45 @@ msgstr ""
 
 #: templates/js/translated/return_order.js:149
 msgid "Edit Return Order"
-msgstr ""
+msgstr "编辑退货订单"
 
 #: templates/js/translated/return_order.js:169
 msgid "Issue Return Order"
-msgstr ""
+msgstr "发布退货订单"
 
 #: templates/js/translated/return_order.js:186
 msgid "Are you sure you wish to cancel this Return Order?"
-msgstr ""
+msgstr "您确定要取消此退货订单吗?"
 
 #: templates/js/translated/return_order.js:193
 msgid "Cancel Return Order"
-msgstr ""
+msgstr "取消退货订单"
 
 #: templates/js/translated/return_order.js:218
 msgid "Complete Return Order"
-msgstr ""
+msgstr "完成退货订单"
 
 #: templates/js/translated/return_order.js:266
 msgid "No return orders found"
-msgstr ""
+msgstr "未找到退货订单"
 
 #: templates/js/translated/return_order.js:300
 #: templates/js/translated/sales_order.js:788
 msgid "Invalid Customer"
-msgstr ""
+msgstr "无效的客户"
 
 #: templates/js/translated/return_order.js:562
 msgid "Receive Return Order Items"
-msgstr ""
+msgstr "接收退货订单项目"
 
 #: templates/js/translated/return_order.js:693
 #: templates/js/translated/sales_order.js:2231
 msgid "No matching line items"
-msgstr ""
+msgstr "没有匹配的行项"
 
 #: templates/js/translated/return_order.js:798
 msgid "Mark item as received"
-msgstr ""
+msgstr "标记项目为已接收"
 
 #: templates/js/translated/sales_order.js:161
 msgid "Create Sales Order"
@@ -12881,7 +12903,7 @@ msgstr ""
 
 #: templates/js/translated/sales_order.js:296
 msgid "The following stock items will be shipped"
-msgstr ""
+msgstr "以下库存项将被配送"
 
 #: templates/js/translated/sales_order.js:336
 msgid "Complete Shipment"
@@ -13021,52 +13043,52 @@ msgstr ""
 
 #: templates/js/translated/sales_order.js:2012
 msgid "Purchase stock"
-msgstr ""
+msgstr "采购库存"
 
 #: templates/js/translated/sales_order.js:2021
 #: templates/js/translated/sales_order.js:2209
 msgid "Calculate price"
-msgstr ""
+msgstr "计算价格"
 
 #: templates/js/translated/sales_order.js:2035
 msgid "Cannot be deleted as items have been shipped"
-msgstr ""
+msgstr "由于项目已配送,无法删除"
 
 #: templates/js/translated/sales_order.js:2038
 msgid "Cannot be deleted as items have been allocated"
-msgstr ""
+msgstr "由于项目已被分配,无法删除"
 
 #: templates/js/translated/sales_order.js:2109
 msgid "Allocate Serial Numbers"
-msgstr ""
+msgstr "分配序列号"
 
 #: templates/js/translated/sales_order.js:2217
 msgid "Update Unit Price"
-msgstr ""
+msgstr "更新单价"
 
 #: templates/js/translated/search.js:270
 msgid "No results"
-msgstr ""
+msgstr "无结果"
 
 #: templates/js/translated/search.js:292 templates/search.html:25
 msgid "Enter search query"
-msgstr ""
+msgstr "输入搜索查询"
 
 #: templates/js/translated/search.js:342
 msgid "result"
-msgstr ""
+msgstr "结果"
 
 #: templates/js/translated/search.js:352
 msgid "Minimize results"
-msgstr ""
+msgstr "最小化结果"
 
 #: templates/js/translated/search.js:355
 msgid "Remove results"
-msgstr ""
+msgstr "删除结果"
 
 #: templates/js/translated/stock.js:98
 msgid "Serialize Stock Item"
-msgstr ""
+msgstr "序列化库存项"
 
 #: templates/js/translated/stock.js:129
 msgid "Confirm Stock Serialization"
@@ -13082,7 +13104,7 @@ msgstr ""
 
 #: templates/js/translated/stock.js:166
 msgid "Add Location type"
-msgstr ""
+msgstr "添加位置类型"
 
 #: templates/js/translated/stock.js:202
 msgid "Edit Stock Location"
@@ -13142,7 +13164,7 @@ msgstr ""
 
 #: templates/js/translated/stock.js:459
 msgid "Duplicate Stock Item"
-msgstr ""
+msgstr "复制库存项"
 
 #: templates/js/translated/stock.js:475
 msgid "Are you sure you want to delete this stock item?"
@@ -13150,59 +13172,59 @@ msgstr ""
 
 #: templates/js/translated/stock.js:480
 msgid "Delete Stock Item"
-msgstr ""
+msgstr "删除库存项"
 
 #: templates/js/translated/stock.js:501
 msgid "Edit Stock Item"
-msgstr ""
+msgstr "编辑库存项"
 
 #: templates/js/translated/stock.js:543
 msgid "Create another item after this one"
-msgstr ""
+msgstr "在此之后创建另一个项目"
 
 #: templates/js/translated/stock.js:555
 msgid "Created new stock item"
-msgstr ""
+msgstr "新建库存项"
 
 #: templates/js/translated/stock.js:568
 msgid "Created multiple stock items"
-msgstr ""
+msgstr "创建了多个库存项目"
 
 #: templates/js/translated/stock.js:593
 msgid "Find Serial Number"
-msgstr ""
+msgstr "查找序列号"
 
 #: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598
 msgid "Enter serial number"
-msgstr ""
+msgstr "输入序列号"
 
 #: templates/js/translated/stock.js:614
 msgid "Enter a serial number"
-msgstr ""
+msgstr "输入序列号"
 
 #: templates/js/translated/stock.js:634
 msgid "No matching serial number"
-msgstr ""
+msgstr "没有匹配的序列号"
 
 #: templates/js/translated/stock.js:643
 msgid "More than one matching result found"
-msgstr ""
+msgstr "找到多个匹配结果"
 
 #: templates/js/translated/stock.js:751
 msgid "Confirm stock assignment"
-msgstr ""
+msgstr "确认库存分配"
 
 #: templates/js/translated/stock.js:752
 msgid "Assign Stock to Customer"
-msgstr ""
+msgstr "分配库存给客户"
 
 #: templates/js/translated/stock.js:829
 msgid "Warning: Merge operation cannot be reversed"
-msgstr ""
+msgstr "警告:合并操作不能被撤销"
 
 #: templates/js/translated/stock.js:830
 msgid "Some information will be lost when merging stock items"
-msgstr ""
+msgstr "合并库存项目时将丢失一些信息"
 
 #: templates/js/translated/stock.js:832
 msgid "Stock transaction history will be deleted for merged items"
@@ -13218,11 +13240,11 @@ msgstr ""
 
 #: templates/js/translated/stock.js:929
 msgid "Merge Stock Items"
-msgstr ""
+msgstr "合并库存项目"
 
 #: templates/js/translated/stock.js:1024
 msgid "Transfer Stock"
-msgstr ""
+msgstr "转移库存"
 
 #: templates/js/translated/stock.js:1025
 msgid "Move"
@@ -13248,9 +13270,9 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
-msgstr ""
+msgstr "添加"
 
 #: templates/js/translated/stock.js:1046
 msgid "Delete Stock"
@@ -13346,27 +13368,27 @@ msgstr ""
 
 #: templates/js/translated/stock.js:1897
 msgid "Delete stock"
-msgstr ""
+msgstr "删除库存"
 
 #: templates/js/translated/stock.js:1952
 msgid "stock items"
-msgstr ""
+msgstr "库存项"
 
 #: templates/js/translated/stock.js:1957
 msgid "Scan to location"
-msgstr ""
+msgstr "已扫描至位置"
 
 #: templates/js/translated/stock.js:1968
 msgid "Stock Actions"
-msgstr ""
+msgstr "库存操作"
 
 #: templates/js/translated/stock.js:2012
 msgid "Load installed items"
-msgstr ""
+msgstr "加载已安装的项目"
 
 #: templates/js/translated/stock.js:2090
 msgid "Stock item is in production"
-msgstr ""
+msgstr "库存项正在生产"
 
 #: templates/js/translated/stock.js:2095
 msgid "Stock item assigned to sales order"
@@ -13398,11 +13420,11 @@ msgstr ""
 
 #: templates/js/translated/stock.js:2114
 msgid "Stock item has expired"
-msgstr ""
+msgstr "库存项已过期"
 
 #: templates/js/translated/stock.js:2116
 msgid "Stock item will expire soon"
-msgstr ""
+msgstr "库存项即将过期"
 
 #: templates/js/translated/stock.js:2121
 msgid "Stock item has been rejected"
@@ -13419,7 +13441,7 @@ msgstr ""
 #: templates/js/translated/stock.js:2129
 #: templates/js/translated/table_filters.js:350
 msgid "Depleted"
-msgstr ""
+msgstr "耗尽"
 
 #: templates/js/translated/stock.js:2294
 msgid "Supplier part not specified"
@@ -13427,11 +13449,11 @@ msgstr ""
 
 #: templates/js/translated/stock.js:2341
 msgid "Stock Value"
-msgstr ""
+msgstr "库存值"
 
 #: templates/js/translated/stock.js:2469
 msgid "No stock items matching query"
-msgstr ""
+msgstr "没有匹配查询的库存项"
 
 #: templates/js/translated/stock.js:2573
 msgid "stock locations"
@@ -13443,55 +13465,55 @@ msgstr ""
 
 #: templates/js/translated/stock.js:2846
 msgid "Details"
-msgstr ""
+msgstr "详情"
 
 #: templates/js/translated/stock.js:2850
 msgid "No changes"
-msgstr ""
+msgstr "无更改"
 
 #: templates/js/translated/stock.js:2862
 msgid "Part information unavailable"
-msgstr ""
+msgstr "零件信息不可用"
 
 #: templates/js/translated/stock.js:2884
 msgid "Location no longer exists"
-msgstr ""
+msgstr "位置不再存在"
 
 #: templates/js/translated/stock.js:2901
 msgid "Build order no longer exists"
-msgstr ""
+msgstr "生产订单不再存在"
 
 #: templates/js/translated/stock.js:2916
 msgid "Purchase order no longer exists"
-msgstr ""
+msgstr "采购订单不再存在"
 
 #: templates/js/translated/stock.js:2933
 msgid "Sales Order no longer exists"
-msgstr ""
+msgstr "销售订单不再存在"
 
 #: templates/js/translated/stock.js:2950
 msgid "Return Order no longer exists"
-msgstr ""
+msgstr "退货订单不再存在"
 
 #: templates/js/translated/stock.js:2969
 msgid "Customer no longer exists"
-msgstr ""
+msgstr "客户不再存在"
 
 #: templates/js/translated/stock.js:2987
 msgid "Stock item no longer exists"
-msgstr ""
+msgstr "库存项不再存在"
 
 #: templates/js/translated/stock.js:3005
 msgid "Added"
-msgstr ""
+msgstr "已添加"
 
 #: templates/js/translated/stock.js:3013
 msgid "Removed"
-msgstr ""
+msgstr "已删除"
 
 #: templates/js/translated/stock.js:3085
 msgid "No installed items"
-msgstr ""
+msgstr "没有已安装的项目"
 
 #: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175
 msgid "Uninstall Stock Item"
@@ -13511,7 +13533,7 @@ msgstr ""
 
 #: templates/js/translated/stock.js:3221
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
-msgstr ""
+msgstr "库存项链接到此库存项的物料清单零件"
 
 #: templates/js/translated/stock.js:3222
 msgid "The Stock Item is currently available in stock"
@@ -13523,7 +13545,7 @@ msgstr ""
 
 #: templates/js/translated/stock.js:3224
 msgid "The Stock Item is tracked by either a batch code or serial number"
-msgstr "本庫存品項可透過生產批號或序號追蹤"
+msgstr ""
 
 #: templates/js/translated/stock.js:3237
 msgid "Select part to install"
@@ -13557,7 +13579,7 @@ msgstr ""
 #: templates/js/translated/table_filters.js:648
 #: templates/js/translated/table_filters.js:663
 msgid "Outstanding"
-msgstr ""
+msgstr "未完成"
 
 #: templates/js/translated/table_filters.js:102
 #: templates/js/translated/table_filters.js:528
@@ -13572,7 +13594,7 @@ msgstr ""
 
 #: templates/js/translated/table_filters.js:162
 msgid "Assembled Part"
-msgstr ""
+msgstr "装配零件"
 
 #: templates/js/translated/table_filters.js:166
 msgid "Has Available Stock"
@@ -13580,7 +13602,7 @@ msgstr ""
 
 #: templates/js/translated/table_filters.js:182
 msgid "Allow Variant Stock"
-msgstr ""
+msgstr "允许变体库存"
 
 #: templates/js/translated/table_filters.js:194
 #: templates/js/translated/table_filters.js:779
@@ -13646,20 +13668,20 @@ msgstr ""
 #: templates/js/translated/table_filters.js:314
 #: templates/js/translated/table_filters.js:405
 msgid "Batch code"
-msgstr "生產批號"
+msgstr ""
 
 #: templates/js/translated/table_filters.js:325
 #: templates/js/translated/table_filters.js:700
 msgid "Active parts"
-msgstr ""
+msgstr "激活的零件"
 
 #: templates/js/translated/table_filters.js:326
 msgid "Show stock for active parts"
-msgstr ""
+msgstr "显示激活零件库存"
 
 #: templates/js/translated/table_filters.js:331
 msgid "Part is an assembly"
-msgstr ""
+msgstr "零件是一个装配体"
 
 #: templates/js/translated/table_filters.js:335
 msgid "Is allocated"
@@ -13712,11 +13734,11 @@ msgstr ""
 
 #: templates/js/translated/table_filters.js:400
 msgid "Has batch code"
-msgstr "有生產批號"
+msgstr ""
 
 #: templates/js/translated/table_filters.js:409
 msgid "Stock item is tracked by either batch code or serial number"
-msgstr "庫存品項可透過生產批號或序號追蹤"
+msgstr "库存项被批号或序列号追踪"
 
 #: templates/js/translated/table_filters.js:414
 msgid "Has purchase price"
@@ -13736,7 +13758,7 @@ msgstr ""
 
 #: templates/js/translated/table_filters.js:436
 msgid "Show stock items which have expired"
-msgstr ""
+msgstr "显示已过期的库存项"
 
 #: templates/js/translated/table_filters.js:442
 msgid "Show stock which is close to expiring"
@@ -13760,7 +13782,7 @@ msgstr ""
 
 #: templates/js/translated/table_filters.js:717
 msgid "Show active parts"
-msgstr ""
+msgstr "显示活动零件"
 
 #: templates/js/translated/table_filters.js:725
 msgid "Available stock"
@@ -13877,23 +13899,23 @@ msgstr ""
 
 #: templates/navbar.html:45
 msgid "Buy"
-msgstr "採購"
+msgstr "采购"
 
 #: templates/navbar.html:57
 msgid "Sell"
-msgstr "銷售"
+msgstr "销售"
 
 #: templates/navbar.html:121
 msgid "Show Notifications"
-msgstr ""
+msgstr "显示通知"
 
 #: templates/navbar.html:124
 msgid "New Notifications"
-msgstr ""
+msgstr "新通知"
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
-msgstr ""
+msgstr "管理员"
 
 #: templates/navbar.html:148
 msgid "Logout"
@@ -13901,15 +13923,15 @@ msgstr "登出"
 
 #: templates/notes_buttons.html:6 templates/notes_buttons.html:7
 msgid "Save"
-msgstr "儲存"
+msgstr "保存"
 
 #: templates/notifications.html:9
 msgid "Show all notifications and history"
-msgstr ""
+msgstr "显示所有通知和历史记录"
 
 #: templates/qr_code.html:11
 msgid "QR data not provided"
-msgstr ""
+msgstr "未提供二维码数据"
 
 #: templates/registration/logged_out.html:7
 msgid "You were logged out successfully."
@@ -13917,67 +13939,67 @@ msgstr "您已成功登出。"
 
 #: templates/registration/logged_out.html:9
 msgid "Log in again"
-msgstr ""
+msgstr "重新登录"
 
 #: templates/search.html:9
 msgid "Show full search results"
-msgstr ""
+msgstr "显示全部搜索结果"
 
 #: templates/search.html:12
 msgid "Clear search"
-msgstr ""
+msgstr "清除搜索"
 
 #: templates/search.html:15
 msgid "Close search menu"
-msgstr ""
+msgstr "关闭搜索菜单"
 
 #: templates/socialaccount/authentication_error.html:5
 msgid "Social Network Login Failure"
-msgstr ""
+msgstr "社交网络登录失败"
 
 #: templates/socialaccount/authentication_error.html:8
 msgid "Account Login Failure"
-msgstr ""
+msgstr "账户登录失败"
 
 #: templates/socialaccount/authentication_error.html:11
 msgid "An error occurred while attempting to login via your social network account."
-msgstr ""
+msgstr "试图通过您的社交网络账户登录时出错。"
 
 #: templates/socialaccount/authentication_error.html:13
 msgid "Contact your system administrator for further information."
-msgstr ""
+msgstr "联系您的系统管理员以获取更多信息."
 
 #: templates/socialaccount/login.html:13
 #, python-format
 msgid "Connect %(provider)s"
-msgstr ""
+msgstr "联系 %(provider)s"
 
 #: templates/socialaccount/login.html:15
 #, python-format
 msgid "You are about to connect a new third party account from %(provider)s."
-msgstr ""
+msgstr "您即将连接 %(provider)s 的新第三方帐户。"
 
 #: templates/socialaccount/login.html:17
 #, python-format
 msgid "Sign In Via %(provider)s"
-msgstr ""
+msgstr "通过%(provider)s登入"
 
 #: templates/socialaccount/login.html:19
 #, python-format
 msgid "You are about to sign in using a third party account from %(provider)s."
-msgstr ""
+msgstr "您将使用  %(provider)s 的第三方帐户登录。"
 
 #: templates/socialaccount/login.html:24
 msgid "Continue"
-msgstr ""
+msgstr "继续"
 
 #: templates/socialaccount/login.html:29
 msgid "Invalid SSO Provider"
-msgstr ""
+msgstr "无效的 SSO 提供商"
 
 #: templates/socialaccount/login.html:31
 msgid "The selected SSO provider is invalid, or has not been correctly configured"
-msgstr ""
+msgstr "选定的 SSO 提供程序无效,或者配置不正确"
 
 #: templates/socialaccount/signup.html:11
 #, python-format
@@ -13986,177 +14008,177 @@ msgstr ""
 
 #: templates/socialaccount/signup.html:13
 msgid "As a final step, please complete the following form"
-msgstr ""
+msgstr "作为最后一个步骤,请填写以下表单"
 
 #: templates/socialaccount/snippets/provider_list.html:26
 msgid "Provider has not been configured"
-msgstr ""
+msgstr "提供商尚未配置"
 
 #: templates/socialaccount/snippets/provider_list.html:35
 msgid "No SSO providers have been configured"
-msgstr ""
+msgstr "未配置 SSO 提供商"
 
 #: templates/stats.html:13
 msgid "Instance Name"
-msgstr ""
+msgstr "实例名称"
 
 #: templates/stats.html:18
 msgid "Database"
-msgstr ""
+msgstr "数据库"
 
 #: templates/stats.html:26
 msgid "Server is running in debug mode"
-msgstr ""
+msgstr "服务器运行在调试模式"
 
 #: templates/stats.html:33
 msgid "Docker Mode"
-msgstr ""
+msgstr "Docker 模式"
 
 #: templates/stats.html:34
 msgid "Server is deployed using docker"
-msgstr ""
+msgstr "服务器是使用docker部署的"
 
 #: templates/stats.html:39
 msgid "Plugin Support"
-msgstr ""
+msgstr "插件支持"
 
 #: templates/stats.html:43
 msgid "Plugin support enabled"
-msgstr ""
+msgstr "插件支持已启用"
 
 #: templates/stats.html:45
 msgid "Plugin support disabled"
-msgstr ""
+msgstr "插件支持已禁用"
 
 #: templates/stats.html:52
 msgid "Server status"
-msgstr ""
+msgstr "服务器状态"
 
 #: templates/stats.html:55
 msgid "Healthy"
-msgstr ""
+msgstr "健康"
 
 #: templates/stats.html:57
 msgid "Issues detected"
-msgstr ""
+msgstr "检测到问题"
 
 #: templates/stats.html:64
 msgid "Background Worker"
-msgstr ""
+msgstr "后台工作者"
 
 #: templates/stats.html:67
 msgid "Background worker not running"
-msgstr ""
+msgstr "后台worker未运行"
 
 #: templates/stats.html:75
 msgid "Email Settings"
-msgstr ""
+msgstr "电子邮件设置"
 
 #: templates/stats.html:78
 msgid "Email settings not configured"
-msgstr ""
+msgstr "电子邮件设置未配置"
 
 #: templates/yesnolabel.html:4
 msgid "Yes"
-msgstr ""
+msgstr "是"
 
 #: templates/yesnolabel.html:6
 msgid "No"
-msgstr ""
+msgstr "否"
 
 #: users/admin.py:104
 msgid "Users"
-msgstr ""
+msgstr "用户"
 
 #: users/admin.py:105
 msgid "Select which users are assigned to this group"
-msgstr ""
+msgstr "选择分配给该群组的用户"
 
 #: users/admin.py:249
 msgid "The following users are members of multiple groups"
-msgstr ""
+msgstr "以下用户是多个群组的成员"
 
 #: users/admin.py:283
 msgid "Personal info"
-msgstr ""
+msgstr "个人资料"
 
 #: users/admin.py:285
 msgid "Permissions"
-msgstr ""
+msgstr "权限"
 
 #: users/admin.py:288
 msgid "Important dates"
-msgstr ""
+msgstr "重要日期"
 
 #: users/authentication.py:29 users/models.py:127
 msgid "Token has been revoked"
-msgstr ""
+msgstr "Token已重置"
 
 #: users/authentication.py:32
 msgid "Token has expired"
-msgstr ""
+msgstr "Token 已经过期"
 
 #: users/models.py:70
 msgid "API Token"
-msgstr ""
+msgstr "API 令牌"
 
 #: users/models.py:71
 msgid "API Tokens"
-msgstr ""
+msgstr "API 令牌"
 
 #: users/models.py:107
 msgid "Token Name"
-msgstr ""
+msgstr "令牌名称"
 
 #: users/models.py:108
 msgid "Custom token name"
-msgstr ""
+msgstr "自定义令牌名称"
 
 #: users/models.py:114
 msgid "Token expiry date"
-msgstr ""
+msgstr "令牌过期日期"
 
 #: users/models.py:122
 msgid "Last Seen"
-msgstr ""
+msgstr "上一次查看时间"
 
 #: users/models.py:123
 msgid "Last time the token was used"
-msgstr ""
+msgstr "最近使用令牌的时间"
 
 #: users/models.py:127
 msgid "Revoked"
-msgstr ""
+msgstr "撤回"
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
-msgstr ""
+msgstr "权限设置"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
-msgstr ""
+msgstr "群组"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
-msgstr ""
+msgstr "视图"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
-msgstr ""
+msgstr "查看项目权限"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
-msgstr ""
+msgstr "添加项目权限"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
-msgstr ""
+msgstr "更改"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
-msgstr ""
+msgstr "编辑项目权限"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
-msgstr ""
+msgstr "删除项目权限"
 
diff --git a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po
index 228a99d9aee7..c40718d293ac 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: 2024-03-15 22:12+0000\n"
+"POT-Creation-Date: 2024-04-02 01:15+0000\n"
 "PO-Revision-Date: 2023-02-28 22:38\n"
 "Last-Translator: \n"
 "Language-Team: Chinese Simplified\n"
@@ -37,18 +37,18 @@ msgstr "提供的数量无效"
 msgid "No value provided"
 msgstr "未设置值"
 
-#: InvenTree/conversion.py:205
+#: InvenTree/conversion.py:204
 #, python-brace-format
 msgid "Could not convert {original} to {unit}"
 msgstr ""
 
-#: InvenTree/conversion.py:207
+#: InvenTree/conversion.py:206
 #, fuzzy
 #| msgid "Invalid quantity provided"
 msgid "Invalid quantity supplied"
 msgstr "提供的数量无效"
 
-#: InvenTree/conversion.py:221
+#: InvenTree/conversion.py:220
 #, fuzzy, python-brace-format
 #| msgid "Invalid quantity provided"
 msgid "Invalid quantity supplied ({exc})"
@@ -65,15 +65,15 @@ msgstr "输入日期"
 #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438
 #: build/serializers.py:516 build/templates/build/sidebar.html:21
 #: company/models.py:835 company/templates/company/sidebar.html:37
-#: order/models.py:1271 order/templates/order/po_sidebar.html:11
+#: order/models.py:1283 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:59
-#: part/models.py:3174 part/templates/part/part_sidebar.html:63
+#: part/models.py:3175 part/templates/part/part_sidebar.html:63
 #: report/templates/report/inventree_build_order_base.html:172
-#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451
-#: stock/serializers.py:487 stock/serializers.py:645 stock/serializers.py:741
-#: stock/serializers.py:791 stock/serializers.py:1100 stock/serializers.py:1189
-#: stock/serializers.py:1354 stock/templates/stock/stock_sidebar.html:25
+#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454
+#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755
+#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203
+#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347
 #: templates/js/translated/part.js:1080
@@ -81,7 +81,7 @@ msgstr "输入日期"
 #: templates/js/translated/return_order.js:776
 #: templates/js/translated/sales_order.js:1067
 #: templates/js/translated/sales_order.js:1982
-#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391
+#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427
 msgid "Notes"
 msgstr "备注"
 
@@ -138,47 +138,47 @@ msgstr "提供的电子邮件域未被核准。"
 msgid "Registration is disabled."
 msgstr ""
 
-#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731
+#: InvenTree/helpers.py:525 order/models.py:541 order/models.py:743
 msgid "Invalid quantity provided"
 msgstr "提供的数量无效"
 
-#: InvenTree/helpers.py:536
+#: InvenTree/helpers.py:533
 msgid "Empty serial number string"
 msgstr "空序列号字符串"
 
-#: InvenTree/helpers.py:565
+#: InvenTree/helpers.py:562
 msgid "Duplicate serial"
 msgstr "重复的序列号"
 
-#: InvenTree/helpers.py:597 InvenTree/helpers.py:640
+#: InvenTree/helpers.py:594 InvenTree/helpers.py:637
 #, fuzzy, python-brace-format
 #| msgid "Invalid group range: {g}"
 msgid "Invalid group range: {group}"
 msgstr "无效的组范围: {g}"
 
-#: InvenTree/helpers.py:628
+#: InvenTree/helpers.py:625
 #, fuzzy, python-brace-format
 #| msgid "Group range {g} exceeds allowed quantity ({q})"
 msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
 msgstr "组 {g} 超出了允许的数量 ({q})"
 
-#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684
+#: InvenTree/helpers.py:655 InvenTree/helpers.py:662 InvenTree/helpers.py:681
 #, fuzzy, python-brace-format
 #| msgid "Invalid group sequence: {g}"
 msgid "Invalid group sequence: {group}"
 msgstr "无效的组序列: {g}"
 
-#: InvenTree/helpers.py:694
+#: InvenTree/helpers.py:691
 msgid "No serial numbers found"
 msgstr "未找到序列号"
 
-#: InvenTree/helpers.py:699
+#: InvenTree/helpers.py:696
 #, fuzzy
 #| msgid "Number of unique serial numbers ({s}) must match quantity ({q})"
 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
 msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})"
 
-#: InvenTree/helpers.py:817
+#: InvenTree/helpers.py:814
 msgid "Remove HTML tags from this value"
 msgstr "从这个值中删除 HTML 标签"
 
@@ -214,137 +214,141 @@ msgstr "远程服务器返回了空响应"
 msgid "Supplied URL is not a valid image file"
 msgstr "提供的 URL 不是一个有效的图片文件"
 
-#: InvenTree/locales.py:16
+#: InvenTree/locales.py:18
 #, fuzzy
 #| msgid "Hungarian"
 msgid "Bulgarian"
 msgstr "匈牙利语"
 
-#: InvenTree/locales.py:17
+#: InvenTree/locales.py:19
 msgid "Czech"
 msgstr "捷克语"
 
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
 msgid "Danish"
 msgstr "丹麦语"
 
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
 msgid "German"
 msgstr "德语"
 
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
 msgid "Greek"
 msgstr "希腊语"
 
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
 msgid "English"
 msgstr "英语"
 
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
 msgid "Spanish"
 msgstr "西班牙语"
 
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
 msgid "Spanish (Mexican)"
 msgstr "西班牙语(墨西哥)"
 
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
 msgid "Farsi / Persian"
 msgstr "波斯语"
 
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
 #, fuzzy
 #| msgid "Danish"
 msgid "Finnish"
 msgstr "丹麦语"
 
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
 msgid "French"
 msgstr "法语"
 
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
 msgid "Hebrew"
 msgstr "希伯来语"
 
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
 msgid "Hindi"
 msgstr ""
 
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
 msgid "Hungarian"
 msgstr "匈牙利语"
 
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
 msgid "Italian"
 msgstr "意大利语"
 
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
 msgid "Japanese"
 msgstr "日语"
 
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
 msgid "Korean"
 msgstr "韩语"
 
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
+msgid "Latvian"
+msgstr ""
+
+#: InvenTree/locales.py:36
 msgid "Dutch"
 msgstr "荷兰语"
 
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:37
 msgid "Norwegian"
 msgstr "挪威语"
 
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:38
 msgid "Polish"
 msgstr "波兰语"
 
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:39
 msgid "Portuguese"
 msgstr "葡萄牙语"
 
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:40
 msgid "Portuguese (Brazilian)"
 msgstr "葡萄牙语 (巴西)"
 
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
 msgid "Russian"
 msgstr "俄语"
 
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
 #, fuzzy
 #| msgid "Slovenian"
 msgid "Slovak"
 msgstr "斯洛文尼亚"
 
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
 msgid "Slovenian"
 msgstr "斯洛文尼亚"
 
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
 msgid "Serbian"
 msgstr ""
 
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
 msgid "Swedish"
 msgstr "瑞典语"
 
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
 msgid "Thai"
 msgstr "泰语"
 
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
 msgid "Turkish"
 msgstr "土耳其语"
 
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
 msgid "Vietnamese"
 msgstr "越南语"
 
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
 msgid "Chinese (Simplified)"
 msgstr ""
 
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
 msgid "Chinese (Traditional)"
 msgstr ""
 
@@ -410,7 +414,7 @@ msgstr "缺少文件"
 msgid "Missing external link"
 msgstr "缺少外部链接"
 
-#: InvenTree/models.py:559 stock/models.py:2446
+#: InvenTree/models.py:559 stock/models.py:2449
 #: templates/js/translated/attachment.js:119
 #: templates/js/translated/attachment.js:326
 msgid "Attachment"
@@ -420,10 +424,10 @@ msgstr "附件"
 msgid "Select file to attach"
 msgstr "选择附件"
 
-#: InvenTree/models.py:568 common/models.py:2955 company/models.py:145
+#: InvenTree/models.py:568 common/models.py:3021 company/models.py:145
 #: company/models.py:452 company/models.py:509 company/models.py:818
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
-#: part/admin.py:55 part/models.py:918
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
+#: part/admin.py:55 part/models.py:919
 #: part/templates/part/part_scheduling.html:11
 #: report/templates/report/inventree_build_order_base.html:164
 #: stock/admin.py:225 templates/js/translated/company.js:1309
@@ -437,7 +441,7 @@ msgstr "选择附件"
 msgid "Link"
 msgstr "链接"
 
-#: InvenTree/models.py:569 build/models.py:309 part/models.py:919
+#: InvenTree/models.py:569 build/models.py:315 part/models.py:920
 #: stock/models.py:822
 msgid "Link to external URL"
 msgstr "链接到外部 URL"
@@ -451,13 +455,13 @@ msgstr "注释"
 msgid "File comment"
 msgstr "文件注释"
 
-#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2431
-#: common/models.py:2432 common/models.py:2656 common/models.py:2657
-#: common/models.py:2902 common/models.py:2903 part/models.py:3184
-#: part/models.py:3271 part/models.py:3364 part/models.py:3392
+#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2497
+#: common/models.py:2498 common/models.py:2722 common/models.py:2723
+#: common/models.py:2968 common/models.py:2969 part/models.py:3185
+#: part/models.py:3272 part/models.py:3365 part/models.py:3393
 #: plugin/models.py:251 plugin/models.py:252
 #: report/templates/report/inventree_test_report_base.html:105
-#: templates/js/translated/stock.js:3000 users/models.py:100
+#: templates/js/translated/stock.js:3036 users/models.py:100
 msgid "User"
 msgstr "用户"
 
@@ -498,10 +502,10 @@ msgstr ""
 msgid "Invalid choice"
 msgstr "选择无效"
 
-#: InvenTree/models.py:894 common/models.py:2643 common/models.py:3041
+#: InvenTree/models.py:894 common/models.py:2709 common/models.py:3107
 #: common/serializers.py:370 company/models.py:608 label/models.py:120
-#: machine/models.py:24 part/models.py:854 part/models.py:3615
-#: plugin/models.py:41 report/models.py:175 stock/models.py:76
+#: machine/models.py:24 part/models.py:855 part/models.py:3616
+#: plugin/models.py:41 report/models.py:176 stock/models.py:76
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/notifications.html:17
 #: templates/InvenTree/settings/plugin.html:81
@@ -514,21 +518,21 @@ msgstr "选择无效"
 #: templates/js/translated/company.js:1155
 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186
 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610
-#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680
+#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716
 msgid "Name"
 msgstr "名称"
 
-#: InvenTree/models.py:900 build/models.py:182
+#: InvenTree/models.py:900 build/models.py:188
 #: build/templates/build/detail.html:24 common/models.py:136
 #: company/models.py:517 company/models.py:826
 #: company/templates/company/company_base.html:71
 #: company/templates/company/manufacturer_part.html:75
 #: company/templates/company/supplier_part.html:107 label/models.py:127
-#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414
-#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82
+#: order/models.py:277 order/models.py:1316 part/admin.py:303 part/admin.py:414
+#: part/models.py:878 part/models.py:3631 part/templates/part/category.html:82
 #: part/templates/part/part_base.html:170
-#: part/templates/part/part_scheduling.html:12 report/models.py:188
-#: report/models.py:654 report/models.py:728
+#: part/templates/part/part_scheduling.html:12 report/models.py:189
+#: report/models.py:655 report/models.py:729
 #: report/templates/report/inventree_build_order_base.html:117
 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125
 #: templates/InvenTree/settings/notifications.html:19
@@ -550,8 +554,8 @@ msgstr "名称"
 #: templates/js/translated/return_order.js:314
 #: templates/js/translated/sales_order.js:802
 #: templates/js/translated/sales_order.js:1812
-#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021
-#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057
+#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831
 msgid "Description"
 msgstr "描述信息"
 
@@ -564,7 +568,7 @@ msgid "parent"
 msgstr "上级项"
 
 #: InvenTree/models.py:916 templates/js/translated/part.js:2794
-#: templates/js/translated/stock.js:2721
+#: templates/js/translated/stock.js:2757
 msgid "Path"
 msgstr "路径"
 
@@ -602,12 +606,12 @@ msgstr "服务器错误"
 msgid "An error has been logged by the server."
 msgstr "服务器记录了一个错误。"
 
-#: InvenTree/serializers.py:62 part/models.py:4143
+#: InvenTree/serializers.py:62 part/models.py:4166
 msgid "Must be a valid number"
 msgstr "必须是有效数字"
 
 #: InvenTree/serializers.py:99 company/models.py:178
-#: company/templates/company/company_base.html:106 part/models.py:2992
+#: company/templates/company/company_base.html:106 part/models.py:2993
 #: templates/InvenTree/settings/settings_staff_js.html:44
 #: templates/currency_data.html:5
 msgid "Currency"
@@ -617,89 +621,89 @@ msgstr "货币"
 msgid "Select currency from available options"
 msgstr ""
 
-#: InvenTree/serializers.py:436
+#: InvenTree/serializers.py:441
 msgid "You do not have permission to change this user role."
 msgstr ""
 
-#: InvenTree/serializers.py:448
+#: InvenTree/serializers.py:453
 msgid "Only superusers can create new users"
 msgstr ""
 
-#: InvenTree/serializers.py:467
+#: InvenTree/serializers.py:472
 msgid "Your account has been created."
 msgstr ""
 
-#: InvenTree/serializers.py:469
+#: InvenTree/serializers.py:474
 msgid "Please use the password reset function to login"
 msgstr ""
 
-#: InvenTree/serializers.py:476
+#: InvenTree/serializers.py:481
 #, fuzzy
 #| msgid "About InvenTree"
 msgid "Welcome to InvenTree"
 msgstr "关于 InventTree"
 
-#: InvenTree/serializers.py:537
+#: InvenTree/serializers.py:542
 msgid "Filename"
 msgstr "文件名"
 
-#: InvenTree/serializers.py:571
+#: InvenTree/serializers.py:576
 msgid "Invalid value"
 msgstr "无效值"
 
-#: InvenTree/serializers.py:591
+#: InvenTree/serializers.py:596
 msgid "Data File"
 msgstr "数据文件"
 
-#: InvenTree/serializers.py:592
+#: InvenTree/serializers.py:597
 msgid "Select data file for upload"
 msgstr "选择要上传的文件"
 
-#: InvenTree/serializers.py:609
+#: InvenTree/serializers.py:614
 msgid "Unsupported file type"
 msgstr "不支持的文件类型"
 
-#: InvenTree/serializers.py:615
+#: InvenTree/serializers.py:620
 msgid "File is too large"
 msgstr "文件过大"
 
-#: InvenTree/serializers.py:636
+#: InvenTree/serializers.py:641
 msgid "No columns found in file"
 msgstr "在文件中没有找到列"
 
-#: InvenTree/serializers.py:639
+#: InvenTree/serializers.py:644
 msgid "No data rows found in file"
 msgstr "在文件中没有找到数据行"
 
-#: InvenTree/serializers.py:752
+#: InvenTree/serializers.py:757
 msgid "No data rows provided"
 msgstr "没有提供数据行"
 
-#: InvenTree/serializers.py:755
+#: InvenTree/serializers.py:760
 msgid "No data columns supplied"
 msgstr "没有提供数据列"
 
-#: InvenTree/serializers.py:822
+#: InvenTree/serializers.py:827
 #, python-brace-format
 msgid "Missing required column: '{name}'"
 msgstr "缺少必需的列:'{name}'"
 
-#: InvenTree/serializers.py:831
+#: InvenTree/serializers.py:836
 #, python-brace-format
 msgid "Duplicate column: '{col}'"
 msgstr "复制列: '{col}'"
 
-#: InvenTree/serializers.py:854
+#: InvenTree/serializers.py:859
 #, fuzzy
 #| msgid "Part name"
 msgid "Remote Image"
 msgstr "商品名称"
 
-#: InvenTree/serializers.py:855
+#: InvenTree/serializers.py:860
 msgid "URL of remote image file"
 msgstr "远程图像文件的 URL"
 
-#: InvenTree/serializers.py:873
+#: InvenTree/serializers.py:878
 msgid "Downloading images from remote URL is not enabled"
 msgstr "未启用从远程 URL下载图像"
 
@@ -752,7 +756,7 @@ msgstr "已退回"
 msgid "In Progress"
 msgstr ""
 
-#: InvenTree/status_codes.py:43 order/models.py:1552
+#: InvenTree/status_codes.py:43 order/models.py:1564
 #: templates/js/translated/sales_order.js:1523
 #: templates/js/translated/sales_order.js:1644
 #: templates/js/translated/sales_order.js:1957
@@ -845,7 +849,7 @@ msgstr "从父项拆分"
 msgid "Split child item"
 msgstr "拆分子项"
 
-#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819
+#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855
 msgid "Merged stock items"
 msgstr "合并的库存项目"
 
@@ -867,7 +871,7 @@ msgstr "生产订单输出已完成"
 msgid "Build order output rejected"
 msgstr "已创建生产订单输出"
 
-#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725
+#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761
 msgid "Consumed by build order"
 msgstr "被生产订单消耗"
 
@@ -981,14 +985,14 @@ msgstr "关于 InventTree"
 msgid "Build must be cancelled before it can be deleted"
 msgstr "在删除前必须取消生产"
 
-#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997
+#: build/api.py:281 part/models.py:4044 templates/js/translated/bom.js:997
 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521
 #: templates/js/translated/table_filters.js:190
 #: templates/js/translated/table_filters.js:583
 msgid "Consumable"
 msgstr ""
 
-#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58
+#: build/api.py:282 part/models.py:4038 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028
 #: templates/js/translated/build.js:2530
 #: templates/js/translated/table_filters.js:186
@@ -1028,7 +1032,7 @@ msgstr "空闲"
 #: report/templates/report/inventree_build_order_base.html:105
 #: templates/email/build_order_completed.html:16
 #: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856
+#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892
 msgid "Build Order"
 msgstr "生产订单"
 
@@ -1039,7 +1043,7 @@ msgstr "生产订单"
 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
 #: templates/InvenTree/search.html:141
 #: templates/InvenTree/settings/sidebar.html:55
-#: templates/js/translated/search.js:186 users/models.py:194
+#: templates/js/translated/search.js:186 users/models.py:196
 msgid "Build Orders"
 msgstr "生产订单"
 
@@ -1047,19 +1051,23 @@ msgstr "生产订单"
 msgid "Invalid choice for parent build"
 msgstr "上级生产选项无效"
 
-#: build/models.py:127
+#: build/models.py:127 order/models.py:239
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:133
 #, fuzzy
 #| msgid "Order cannot be cancelled"
 msgid "Build order part cannot be changed"
 msgstr "无法取消订单"
 
-#: build/models.py:173
+#: build/models.py:179
 msgid "Build Order Reference"
 msgstr "相关生产订单"
 
-#: build/models.py:174 order/models.py:430 order/models.py:886
-#: order/models.py:1264 order/models.py:1981 part/admin.py:417
-#: part/models.py:4036 part/templates/part/upload_bom.html:54
+#: build/models.py:180 order/models.py:442 order/models.py:898
+#: order/models.py:1276 order/models.py:1996 part/admin.py:417
+#: part/models.py:4059 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
@@ -1073,29 +1081,29 @@ msgstr "相关生产订单"
 msgid "Reference"
 msgstr "引用"
 
-#: build/models.py:185
+#: build/models.py:191
 #, fuzzy
 #| msgid "Brief description of the build"
 msgid "Brief description of the build (optional)"
 msgstr "生产的简短描述."
 
-#: build/models.py:193 build/templates/build/build_base.html:183
+#: build/models.py:199 build/templates/build/build_base.html:183
 #: build/templates/build/detail.html:87
 msgid "Parent Build"
 msgstr "上级生产"
 
-#: build/models.py:194
+#: build/models.py:200
 msgid "BuildOrder to which this build is allocated"
 msgstr "此次生产匹配的订单"
 
-#: build/models.py:199 build/templates/build/build_base.html:97
+#: build/models.py:205 build/templates/build/build_base.html:97
 #: build/templates/build/detail.html:29 company/models.py:1044
-#: order/models.py:1389 order/models.py:1532 order/models.py:1533
-#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003
-#: part/models.py:3147 part/models.py:3291 part/models.py:3314
-#: part/models.py:3335 part/models.py:3357 part/models.py:3467
-#: part/models.py:3763 part/models.py:3894 part/models.py:3987
-#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677
+#: order/models.py:1401 order/models.py:1544 order/models.py:1545
+#: part/api.py:1535 part/api.py:1829 part/models.py:390 part/models.py:3004
+#: part/models.py:3148 part/models.py:3292 part/models.py:3315
+#: part/models.py:3336 part/models.py:3358 part/models.py:3468
+#: part/models.py:3764 part/models.py:3917 part/models.py:4010
+#: part/models.py:4371 part/serializers.py:1102 part/serializers.py:1677
 #: part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/upload_bom.html:52
@@ -1106,7 +1114,7 @@ msgstr "此次生产匹配的订单"
 #: report/templates/report/inventree_return_order_report_base.html:24
 #: report/templates/report/inventree_slr_report.html:102
 #: report/templates/report/inventree_so_report_base.html:27
-#: stock/serializers.py:253 stock/serializers.py:675
+#: stock/serializers.py:267 stock/serializers.py:689
 #: templates/InvenTree/search.html:82
 #: templates/email/build_order_completed.html:17
 #: templates/email/build_order_required_stock.html:17
@@ -1133,113 +1141,113 @@ msgstr "此次生产匹配的订单"
 #: templates/js/translated/sales_order.js:1598
 #: templates/js/translated/sales_order.js:1796
 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842
-#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960
-#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054
-#: templates/js/translated/stock.js:3200
+#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996
+#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090
+#: templates/js/translated/stock.js:3236
 msgid "Part"
 msgstr "商品"
 
-#: build/models.py:207
+#: build/models.py:213
 msgid "Select part to build"
 msgstr "选择要生产的商品"
 
-#: build/models.py:212
+#: build/models.py:218
 msgid "Sales Order Reference"
 msgstr "相关销售订单"
 
-#: build/models.py:216
+#: build/models.py:222
 msgid "SalesOrder to which this build is allocated"
 msgstr "此次生产匹配的销售订单"
 
-#: build/models.py:221 build/serializers.py:964
+#: build/models.py:227 build/serializers.py:964
 #: templates/js/translated/build.js:1728
 #: templates/js/translated/sales_order.js:1185
 msgid "Source Location"
 msgstr "来源地点"
 
-#: build/models.py:225
+#: build/models.py:231
 msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr "此次生产从哪个仓储位置获取库存(留空即可从任何仓储位置取出)"
 
-#: build/models.py:230
+#: build/models.py:236
 msgid "Destination Location"
 msgstr "目标地点"
 
-#: build/models.py:234
+#: build/models.py:240
 msgid "Select location where the completed items will be stored"
 msgstr "选择已完成项目仓储地点"
 
-#: build/models.py:238
+#: build/models.py:244
 msgid "Build Quantity"
 msgstr "生产数量"
 
-#: build/models.py:241
+#: build/models.py:247
 msgid "Number of stock items to build"
 msgstr "要生产的项目数量"
 
-#: build/models.py:245
+#: build/models.py:251
 msgid "Completed items"
 msgstr "已完成项目"
 
-#: build/models.py:247
+#: build/models.py:253
 msgid "Number of stock items which have been completed"
 msgstr "已完成的库存项目数量"
 
-#: build/models.py:251
+#: build/models.py:257
 msgid "Build Status"
 msgstr "生产状态"
 
-#: build/models.py:255
+#: build/models.py:261
 msgid "Build status code"
 msgstr "生产状态代码"
 
-#: build/models.py:264 build/serializers.py:280 order/serializers.py:571
-#: stock/models.py:826 stock/serializers.py:1319
+#: build/models.py:270 build/serializers.py:280 order/serializers.py:577
+#: stock/models.py:826 stock/serializers.py:1333
 #: templates/js/translated/purchase_order.js:1129
 msgid "Batch Code"
 msgstr "批量代码"
 
-#: build/models.py:268 build/serializers.py:281
+#: build/models.py:274 build/serializers.py:281
 msgid "Batch code for this build output"
 msgstr "此生产产出的批量代码"
 
-#: build/models.py:271 order/models.py:292 part/models.py:1078
+#: build/models.py:277 order/models.py:304 part/models.py:1079
 #: part/templates/part/part_base.html:310
 #: templates/js/translated/return_order.js:339
 #: templates/js/translated/sales_order.js:827
 msgid "Creation Date"
 msgstr "创建日期"
 
-#: build/models.py:275
+#: build/models.py:281
 msgid "Target completion date"
 msgstr "预计完成日期"
 
-#: build/models.py:276
+#: build/models.py:282
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "生产完成的目标日期。生产将在此日期之后逾期。"
 
-#: build/models.py:279 order/models.py:488 order/models.py:2026
+#: build/models.py:285 order/models.py:500 order/models.py:2041
 #: templates/js/translated/build.js:2245
 msgid "Completion Date"
 msgstr "完成日期:"
 
-#: build/models.py:285
+#: build/models.py:291
 msgid "completed by"
 msgstr "完成人"
 
-#: build/models.py:293 templates/js/translated/build.js:2205
+#: build/models.py:299 templates/js/translated/build.js:2205
 msgid "Issued by"
 msgstr "发布者"
 
-#: build/models.py:294
+#: build/models.py:300
 msgid "User who issued this build order"
 msgstr "发布此生产订单的用户"
 
-#: build/models.py:302 build/templates/build/build_base.html:204
+#: build/models.py:308 build/templates/build/build_base.html:204
 #: build/templates/build/detail.html:122 common/models.py:145
-#: order/models.py:310 order/templates/order/order_base.html:217
+#: order/models.py:322 order/templates/order/order_base.html:217
 #: order/templates/order/return_order_base.html:188
-#: order/templates/order/sales_order_base.html:228 part/models.py:1095
+#: order/templates/order/sales_order_base.html:228 part/models.py:1096
 #: part/templates/part/part_base.html:390
 #: report/templates/report/inventree_build_order_base.html:158
 #: templates/InvenTree/settings/settings_staff_js.html:150
@@ -1250,11 +1258,11 @@ msgstr "发布此生产订单的用户"
 msgid "Responsible"
 msgstr "责任人"
 
-#: build/models.py:303
+#: build/models.py:309
 msgid "User or group responsible for this build order"
 msgstr "构建此订单的用户或组"
 
-#: build/models.py:308 build/templates/build/detail.html:108
+#: build/models.py:314 build/templates/build/detail.html:108
 #: company/templates/company/manufacturer_part.html:107
 #: company/templates/company/supplier_part.html:194
 #: order/templates/order/order_base.html:167
@@ -1266,16 +1274,16 @@ msgstr "构建此订单的用户或组"
 msgid "External Link"
 msgstr "外部链接"
 
-#: build/models.py:313
+#: build/models.py:319
 msgid "Build Priority"
 msgstr "创建优先级"
 
-#: build/models.py:316
+#: build/models.py:322
 msgid "Priority of this build order"
 msgstr "此构建订单的优先级"
 
-#: build/models.py:323 common/models.py:129 order/admin.py:18
-#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146
+#: build/models.py:329 common/models.py:129 order/admin.py:18
+#: order/models.py:286 templates/InvenTree/settings/settings_staff_js.html:146
 #: templates/js/translated/build.js:2142
 #: templates/js/translated/purchase_order.js:1711
 #: templates/js/translated/return_order.js:318
@@ -1287,63 +1295,63 @@ msgstr "此构建订单的优先级"
 msgid "Project Code"
 msgstr "商品二维码"
 
-#: build/models.py:324
+#: build/models.py:330
 #, fuzzy
 #| msgid "Priority of this build order"
 msgid "Project code for this build order"
 msgstr "此构建订单的优先级"
 
-#: build/models.py:575
+#: build/models.py:581
 #, python-brace-format
 msgid "Build order {build} has been completed"
 msgstr "生产订单 {build} 已完成"
 
-#: build/models.py:581
+#: build/models.py:587
 msgid "A build order has been completed"
 msgstr "生产订单已完成"
 
-#: build/models.py:799 build/models.py:874
+#: build/models.py:805 build/models.py:880
 msgid "No build output specified"
 msgstr "未指定生产产出"
 
-#: build/models.py:802
+#: build/models.py:808
 msgid "Build output is already completed"
 msgstr "生产产出已完成"
 
-#: build/models.py:805
+#: build/models.py:811
 msgid "Build output does not match Build Order"
 msgstr "生产产出与订单不匹配"
 
-#: build/models.py:878 build/serializers.py:223 build/serializers.py:262
-#: build/serializers.py:831 order/models.py:526 order/serializers.py:423
-#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835
-#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:458
+#: build/models.py:884 build/serializers.py:223 build/serializers.py:262
+#: build/serializers.py:831 order/models.py:538 order/serializers.py:429
+#: order/serializers.py:572 part/serializers.py:1460 part/serializers.py:1835
+#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472
 msgid "Quantity must be greater than zero"
 msgstr "数量必须大于0"
 
-#: build/models.py:883 build/serializers.py:228
+#: build/models.py:889 build/serializers.py:228
 #, fuzzy
 #| msgid "Quantity must be greater than zero"
 msgid "Quantity cannot be greater than the output quantity"
 msgstr "数量必须大于0"
 
-#: build/models.py:940 build/serializers.py:533
+#: build/models.py:946 build/serializers.py:533
 #, python-brace-format
 msgid "Build output {serial} has not passed all required tests"
 msgstr ""
 
-#: build/models.py:1302
+#: build/models.py:1308
 #, fuzzy
 #| msgid "Build Notes"
 msgid "Build object"
 msgstr "生产备注"
 
-#: build/models.py:1316 build/models.py:1574 build/serializers.py:210
+#: build/models.py:1322 build/models.py:1580 build/serializers.py:210
 #: build/serializers.py:247 build/templates/build/build_base.html:102
-#: build/templates/build/detail.html:34 common/models.py:2453
-#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328
+#: build/templates/build/detail.html:34 common/models.py:2519
+#: order/models.py:1259 order/models.py:1916 order/serializers.py:1335
 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416
-#: part/forms.py:48 part/models.py:3161 part/models.py:4009
+#: part/forms.py:48 part/models.py:3162 part/models.py:4032
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_bill_of_materials_report.html:138
@@ -1353,7 +1361,7 @@ msgstr "生产备注"
 #: report/templates/report/inventree_so_report_base.html:29
 #: report/templates/report/inventree_test_report_base.html:90
 #: report/templates/report/inventree_test_report_base.html:170
-#: stock/admin.py:160 stock/serializers.py:449
+#: stock/admin.py:160 stock/serializers.py:463
 #: stock/templates/stock/item_base.html:287
 #: stock/templates/stock/item_base.html:295
 #: stock/templates/stock/item_base.html:342
@@ -1380,47 +1388,47 @@ msgstr "生产备注"
 #: templates/js/translated/sales_order.js:1698
 #: templates/js/translated/sales_order.js:1824
 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702
-#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985
-#: templates/js/translated/stock.js:3068
+#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021
+#: templates/js/translated/stock.js:3104
 msgid "Quantity"
 msgstr "数量"
 
-#: build/models.py:1317
+#: build/models.py:1323
 #, fuzzy
 #| msgid "Stock required for build order"
 msgid "Required quantity for build order"
 msgstr "生产订单所需的库存"
 
-#: build/models.py:1397
+#: build/models.py:1403
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "生产项必须指定生产产出,因为主部件已经被标记为可追踪的"
 
-#: build/models.py:1406
+#: build/models.py:1412
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})"
 
-#: build/models.py:1416 order/models.py:1853
+#: build/models.py:1422 order/models.py:1867
 msgid "Stock item is over-allocated"
 msgstr "库存物品分配过度!"
 
-#: build/models.py:1422 order/models.py:1856
+#: build/models.py:1428 order/models.py:1870
 msgid "Allocation quantity must be greater than zero"
 msgstr "分配数量必须大于0"
 
-#: build/models.py:1428
+#: build/models.py:1434
 msgid "Quantity must be 1 for serialized stock"
 msgstr "序列化库存的数量必须是 1"
 
-#: build/models.py:1489
+#: build/models.py:1495
 #, fuzzy
 #| msgid "Selected stock item not found in BOM"
 msgid "Selected stock item does not match BOM line"
 msgstr "在BOM中找不到选定的库存项"
 
-#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172
-#: order/serializers.py:1193 stock/serializers.py:552 stock/serializers.py:1038
-#: stock/serializers.py:1150 stock/templates/stock/item_base.html:10
+#: build/models.py:1567 build/serializers.py:811 order/serializers.py:1179
+#: order/serializers.py:1200 stock/serializers.py:566 stock/serializers.py:1052
+#: stock/serializers.py:1164 stock/templates/stock/item_base.html:10
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:194
 #: templates/js/translated/build.js:1742
@@ -1431,23 +1439,23 @@ msgstr "在BOM中找不到选定的库存项"
 #: templates/js/translated/sales_order.js:1605
 #: templates/js/translated/sales_order.js:1692
 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843
-#: templates/js/translated/stock.js:2941
+#: templates/js/translated/stock.js:2977
 msgid "Stock Item"
 msgstr "库存项"
 
-#: build/models.py:1562
+#: build/models.py:1568
 msgid "Source stock item"
 msgstr "源库存项"
 
-#: build/models.py:1575
+#: build/models.py:1581
 msgid "Stock quantity to allocate to build"
 msgstr "分配到生产的数量"
 
-#: build/models.py:1583
+#: build/models.py:1589
 msgid "Install into"
 msgstr "安装到"
 
-#: build/models.py:1584
+#: build/models.py:1590
 msgid "Destination stock item"
 msgstr "目标库存项"
 
@@ -1484,8 +1492,8 @@ msgstr "对于可追踪的部件,需要整数型数值"
 msgid "Integer quantity required, as the bill of materials contains trackable parts"
 msgstr "需要整数型数值,因为BOM包含可追踪的部件"
 
-#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332
-#: stock/serializers.py:469 templates/js/translated/purchase_order.js:1153
+#: build/serializers.py:287 order/serializers.py:585 order/serializers.py:1339
+#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153
 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565
 msgid "Serial Numbers"
 msgstr "序列号"
@@ -1502,7 +1510,7 @@ msgstr "自动分配序列号"
 msgid "Automatically allocate required items with matching serial numbers"
 msgstr "自动为所需项分配对应的序列号"
 
-#: build/serializers.py:337 stock/api.py:978
+#: build/serializers.py:337 stock/api.py:995
 msgid "The following serial numbers already exist or are invalid"
 msgstr "以下序列号已存在或无效"
 
@@ -1510,10 +1518,10 @@ msgstr "以下序列号已存在或无效"
 msgid "A list of build outputs must be provided"
 msgstr "必须提供生产产出列表"
 
-#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555
-#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122
-#: stock/serializers.py:480 stock/serializers.py:640 stock/serializers.py:736
-#: stock/serializers.py:1182 stock/serializers.py:1438
+#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:561
+#: order/serializers.py:669 order/serializers.py:1675 part/serializers.py:1122
+#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750
+#: stock/serializers.py:1196 stock/serializers.py:1452
 #: stock/templates/stock/item_base.html:394
 #: templates/js/translated/barcode.js:547
 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999
@@ -1525,8 +1533,8 @@ msgstr "必须提供生产产出列表"
 #: templates/js/translated/sales_order.js:1627
 #: templates/js/translated/sales_order.js:1706
 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844
-#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164
-#: templates/js/translated/stock.js:2835
+#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2871
 msgid "Location"
 msgstr "地点"
 
@@ -1557,17 +1565,17 @@ msgid "Location for completed build outputs"
 msgstr "已完成生产产出的仓储地点"
 
 #: build/serializers.py:505 build/templates/build/build_base.html:151
-#: build/templates/build/detail.html:62 order/models.py:910
-#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165
-#: stock/serializers.py:787 stock/serializers.py:1326
+#: build/templates/build/detail.html:62 order/models.py:922
+#: order/models.py:2020 order/serializers.py:593 stock/admin.py:165
+#: stock/serializers.py:801 stock/serializers.py:1340
 #: stock/templates/stock/item_base.html:427
 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189
 #: templates/js/translated/purchase_order.js:1308
 #: templates/js/translated/purchase_order.js:1723
 #: templates/js/translated/return_order.js:331
 #: templates/js/translated/sales_order.js:819
-#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959
-#: templates/js/translated/stock.js:3084
+#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995
+#: templates/js/translated/stock.js:3120
 msgid "Status"
 msgstr "状态"
 
@@ -1631,7 +1639,7 @@ msgstr "接受库存项未被完成分配至此生产订单"
 msgid "Required stock has not been fully allocated"
 msgstr "所需库存尚未完全分配"
 
-#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235
+#: build/serializers.py:684 order/serializers.py:297 order/serializers.py:1242
 msgid "Accept Incomplete"
 msgstr "接受未完成"
 
@@ -1671,11 +1679,11 @@ msgstr "删除参数"
 msgid "bom_item.part must point to the same part as the build order"
 msgstr "bom_item.part 必须与生产订单指向相同的部件"
 
-#: build/serializers.py:817 stock/serializers.py:1051
+#: build/serializers.py:817 stock/serializers.py:1065
 msgid "Item must be in stock"
 msgstr "项目必须在库存中"
 
-#: build/serializers.py:865 order/serializers.py:1226
+#: build/serializers.py:865 order/serializers.py:1233
 #, python-brace-format
 msgid "Available quantity ({q}) exceeded"
 msgstr "可用量 ({q}) 超出了限制"
@@ -1688,7 +1696,7 @@ msgstr "对于被追踪的部件的分配,必须指定生产产出"
 msgid "Build output cannot be specified for allocation of untracked parts"
 msgstr "对于未被追踪的部件,无法指定生产产出"
 
-#: build/serializers.py:902 order/serializers.py:1478
+#: build/serializers.py:902 order/serializers.py:1485
 msgid "Allocation items must be provided"
 msgstr "必须提供分配的项"
 
@@ -1728,8 +1736,8 @@ msgstr "可选项目"
 msgid "Allocate optional BOM items to build order"
 msgstr "分配可选的BOM项目来建立订单"
 
-#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340
-#: stock/api.py:745
+#: build/serializers.py:1097 part/models.py:3927 part/models.py:4363
+#: stock/api.py:758
 msgid "BOM Item"
 msgstr "BOM项"
 
@@ -1758,15 +1766,15 @@ msgstr "正在生产"
 msgid "Available Stock"
 msgstr "可用库存"
 
-#: build/tasks.py:171
+#: build/tasks.py:172
 msgid "Stock required for build order"
 msgstr "生产订单所需的库存"
 
-#: build/tasks.py:188
+#: build/tasks.py:189
 msgid "Overdue Build Order"
 msgstr "超时构建顺序"
 
-#: build/tasks.py:193
+#: build/tasks.py:194
 #, python-brace-format
 msgid "Build order {bo} is now overdue"
 msgstr "生成订单 {bo} 现在已过期"
@@ -1885,8 +1893,8 @@ msgid "Stock has not been fully allocated to this Build Order"
 msgstr "库存尚未被完全分配到此构建订单"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:138 order/models.py:285
-#: order/models.py:1282 order/templates/order/order_base.html:186
+#: build/templates/build/detail.html:138 order/models.py:297
+#: order/models.py:1294 order/templates/order/order_base.html:186
 #: order/templates/order/return_order_base.html:164
 #: order/templates/order/sales_order_base.html:192
 #: report/templates/report/inventree_build_order_base.html:125
@@ -1923,8 +1931,8 @@ msgid "Completed Outputs"
 msgstr "已完成输出"
 
 #: build/templates/build/build_base.html:190
-#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524
-#: order/models.py:1638 order/models.py:1790
+#: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1536
+#: order/models.py:1650 order/models.py:1804
 #: 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
@@ -1934,7 +1942,7 @@ msgstr "已完成输出"
 #: templates/js/translated/pricing.js:929
 #: templates/js/translated/sales_order.js:769
 #: templates/js/translated/sales_order.js:992
-#: templates/js/translated/stock.js:2888
+#: templates/js/translated/stock.js:2924
 msgid "Sales Order"
 msgstr "销售订单"
 
@@ -1978,7 +1986,7 @@ msgstr "库存来源"
 msgid "Stock can be taken from any available location."
 msgstr "库存可以从任何可用的地点获得。"
 
-#: build/templates/build/detail.html:49 order/models.py:1418
+#: build/templates/build/detail.html:49 order/models.py:1430
 #: templates/js/translated/purchase_order.js:2190
 msgid "Destination"
 msgstr "目的地"
@@ -1996,8 +2004,8 @@ msgstr "已分配的部件"
 #: templates/js/translated/build.js:1377
 #: templates/js/translated/model_renderers.js:235
 #: templates/js/translated/purchase_order.js:1274
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153
-#: templates/js/translated/stock.js:3091
+#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:3127
 #: templates/js/translated/table_filters.js:313
 #: templates/js/translated/table_filters.js:404
 msgid "Batch"
@@ -2207,1578 +2215,1610 @@ msgstr "商品描述"
 msgid "User or group responsible for this project"
 msgstr "负责此订单的用户或群组"
 
-#: common/models.py:744
+#: common/models.py:768
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "设置键值(必须是唯一的 - 大小写不敏感)"
 
-#: common/models.py:748
+#: common/models.py:772
 msgid "Settings value"
 msgstr "设定值"
 
-#: common/models.py:800
+#: common/models.py:824
 msgid "Chosen value is not a valid option"
 msgstr "选择的值不是一个有效的选项"
 
-#: common/models.py:816
+#: common/models.py:840
 msgid "Value must be a boolean value"
 msgstr "值必须是布尔量"
 
-#: common/models.py:824
+#: common/models.py:848
 msgid "Value must be an integer value"
 msgstr "值必须为整数"
 
-#: common/models.py:861
+#: common/models.py:885
 msgid "Key string must be unique"
 msgstr "关键字必须是唯一的"
 
-#: common/models.py:1093
+#: common/models.py:1117
 msgid "No group"
 msgstr "无群组"
 
-#: common/models.py:1136
+#: common/models.py:1160
 msgid "An empty domain is not allowed."
 msgstr "不允许空域。"
 
-#: common/models.py:1138
+#: common/models.py:1162
 #, python-brace-format
 msgid "Invalid domain name: {domain}"
 msgstr "无效的域名: {domain}"
 
-#: common/models.py:1150
+#: common/models.py:1174
 #, fuzzy
 #| msgid "Subcategories"
 msgid "No plugin"
 msgstr "子类别"
 
-#: common/models.py:1236
+#: common/models.py:1262
 msgid "Restart required"
 msgstr "需要重启"
 
-#: common/models.py:1238
+#: common/models.py:1264
 msgid "A setting has been changed which requires a server restart"
 msgstr "设置已更改,需要服务器重启"
 
-#: common/models.py:1245
+#: common/models.py:1271
 #, fuzzy
 #| msgid "Printing Actions"
 msgid "Pending migrations"
 msgstr "打印操作"
 
-#: common/models.py:1246
+#: common/models.py:1272
 msgid "Number of pending database migrations"
 msgstr ""
 
-#: common/models.py:1251
+#: common/models.py:1277
 msgid "Server Instance Name"
 msgstr "服务器实例名称"
 
-#: common/models.py:1253
+#: common/models.py:1279
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:1257
+#: common/models.py:1283
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:1258
+#: common/models.py:1284
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:1263
+#: common/models.py:1289
 msgid "Restrict showing `about`"
 msgstr ""
 
-#: common/models.py:1264
+#: common/models.py:1290
 msgid "Show the `about` modal only to superusers"
 msgstr ""
 
-#: common/models.py:1269 company/models.py:107 company/models.py:108
+#: common/models.py:1295 company/models.py:107 company/models.py:108
 msgid "Company name"
 msgstr "公司名称"
 
-#: common/models.py:1270
+#: common/models.py:1296
 msgid "Internal company name"
 msgstr "内部公司名称"
 
-#: common/models.py:1274
+#: common/models.py:1300
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:1275
+#: common/models.py:1301
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:1281
+#: common/models.py:1307
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:1282
+#: common/models.py:1308
 msgid "Select base currency for pricing calculations"
 msgstr ""
 
-#: common/models.py:1288
+#: common/models.py:1314
 msgid "Currency Update Interval"
 msgstr ""
 
-#: common/models.py:1290
+#: common/models.py:1316
 msgid "How often to update exchange rates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1293 common/models.py:1349 common/models.py:1362
-#: common/models.py:1370 common/models.py:1379 common/models.py:1388
-#: common/models.py:1590 common/models.py:1612 common/models.py:1727
-#: common/models.py:1998
+#: common/models.py:1319 common/models.py:1375 common/models.py:1388
+#: common/models.py:1396 common/models.py:1405 common/models.py:1414
+#: common/models.py:1616 common/models.py:1638 common/models.py:1753
+#: common/models.py:2056
 msgid "days"
 msgstr "天"
 
-#: common/models.py:1297
+#: common/models.py:1323
 msgid "Currency Update Plugin"
 msgstr ""
 
-#: common/models.py:1298
+#: common/models.py:1324
 msgid "Currency update plugin to use"
 msgstr ""
 
-#: common/models.py:1303
+#: common/models.py:1329
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:1305
+#: common/models.py:1331
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:1311
+#: common/models.py:1337
 msgid "Download Size Limit"
 msgstr ""
 
-#: common/models.py:1312
+#: common/models.py:1338
 msgid "Maximum allowable download size for remote image"
 msgstr ""
 
-#: common/models.py:1318
+#: common/models.py:1344
 msgid "User-agent used to download from URL"
 msgstr ""
 
-#: common/models.py:1320
+#: common/models.py:1346
 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
 msgstr ""
 
-#: common/models.py:1325
+#: common/models.py:1351
 msgid "Strict URL Validation"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1352
 msgid "Require schema specification when validating URLs"
 msgstr ""
 
-#: common/models.py:1331
+#: common/models.py:1357
 msgid "Require confirm"
 msgstr ""
 
-#: common/models.py:1332
+#: common/models.py:1358
 msgid "Require explicit user confirmation for certain action."
 msgstr ""
 
-#: common/models.py:1337
+#: common/models.py:1363
 msgid "Tree Depth"
 msgstr ""
 
-#: common/models.py:1339
+#: common/models.py:1365
 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
 msgstr ""
 
-#: common/models.py:1345
+#: common/models.py:1371
 msgid "Update Check Interval"
 msgstr ""
 
-#: common/models.py:1346
+#: common/models.py:1372
 msgid "How often to check for updates (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1352
+#: common/models.py:1378
 msgid "Automatic Backup"
 msgstr ""
 
-#: common/models.py:1353
+#: common/models.py:1379
 msgid "Enable automatic backup of database and media files"
 msgstr ""
 
-#: common/models.py:1358
+#: common/models.py:1384
 msgid "Auto Backup Interval"
 msgstr ""
 
-#: common/models.py:1359
+#: common/models.py:1385
 msgid "Specify number of days between automated backup events"
 msgstr ""
 
-#: common/models.py:1365
+#: common/models.py:1391
 msgid "Task Deletion Interval"
 msgstr ""
 
-#: common/models.py:1367
+#: common/models.py:1393
 msgid "Background task results will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1374
+#: common/models.py:1400
 msgid "Error Log Deletion Interval"
 msgstr ""
 
-#: common/models.py:1376
+#: common/models.py:1402
 msgid "Error logs will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1383
+#: common/models.py:1409
 msgid "Notification Deletion Interval"
 msgstr ""
 
-#: common/models.py:1385
+#: common/models.py:1411
 msgid "User notifications will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1418 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:1393
+#: common/models.py:1419
 #, fuzzy
 #| msgid "Enable barcode scanner support"
 msgid "Enable barcode scanner support in the web interface"
 msgstr "启用条形码扫描支持"
 
-#: common/models.py:1398
+#: common/models.py:1424
 msgid "Barcode Input Delay"
 msgstr ""
 
-#: common/models.py:1399
+#: common/models.py:1425
 msgid "Barcode input processing delay time"
 msgstr ""
 
-#: common/models.py:1405
+#: common/models.py:1431
 msgid "Barcode Webcam Support"
 msgstr ""
 
-#: common/models.py:1406
+#: common/models.py:1432
 msgid "Allow barcode scanning via webcam in browser"
 msgstr ""
 
-#: common/models.py:1411
+#: common/models.py:1437
 #, fuzzy
 #| msgid "Part description"
 msgid "Part Revisions"
 msgstr "商品描述"
 
-#: common/models.py:1412
+#: common/models.py:1438
 #, fuzzy
 #| msgid "Enable internal prices for parts"
 msgid "Enable revision field for Part"
 msgstr "启用内部商品价格"
 
-#: common/models.py:1417
+#: common/models.py:1443
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:1418
+#: common/models.py:1444
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:1421
+#: common/models.py:1447
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:1422
+#: common/models.py:1448
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:1427
+#: common/models.py:1453
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:1428
+#: common/models.py:1454
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:1433
+#: common/models.py:1459
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:1434
+#: common/models.py:1460
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1439
+#: common/models.py:1465
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:1440
+#: common/models.py:1466
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1445
+#: common/models.py:1471
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:1446
+#: common/models.py:1472
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:1451
+#: common/models.py:1477
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:1452
+#: common/models.py:1478
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:1457 part/admin.py:108 part/models.py:3771
-#: report/models.py:181 stock/serializers.py:96
+#: common/models.py:1483 part/admin.py:108 part/models.py:3772
+#: report/models.py:182 stock/serializers.py:99
 #: templates/js/translated/table_filters.js:139
 #: templates/js/translated/table_filters.js:767
 msgid "Template"
 msgstr "模板"
 
-#: common/models.py:1458
+#: common/models.py:1484
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015
+#: common/models.py:1489 part/admin.py:91 part/admin.py:431 part/models.py:1016
 #: templates/js/translated/bom.js:1639
 #: templates/js/translated/table_filters.js:330
 #: templates/js/translated/table_filters.js:721
 msgid "Assembly"
 msgstr "组装"
 
-#: common/models.py:1464
+#: common/models.py:1490
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:1469 part/admin.py:95 part/models.py:1021
+#: common/models.py:1495 part/admin.py:95 part/models.py:1022
 #: templates/js/translated/table_filters.js:729
 msgid "Component"
 msgstr "组件"
 
-#: common/models.py:1470
+#: common/models.py:1496
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:1475 part/admin.py:100 part/models.py:1033
+#: common/models.py:1501 part/admin.py:100 part/models.py:1034
 msgid "Purchaseable"
 msgstr "可购买"
 
-#: common/models.py:1476
+#: common/models.py:1502
 msgid "Parts are purchaseable by default"
 msgstr "商品默认可购买"
 
-#: common/models.py:1481 part/admin.py:104 part/models.py:1039
+#: common/models.py:1507 part/admin.py:104 part/models.py:1040
 #: templates/js/translated/table_filters.js:755
 msgid "Salable"
 msgstr "可销售"
 
-#: common/models.py:1482
+#: common/models.py:1508
 msgid "Parts are salable by default"
 msgstr "商品默认可销售"
 
-#: common/models.py:1487 part/admin.py:113 part/models.py:1027
+#: common/models.py:1513 part/admin.py:113 part/models.py:1028
 #: templates/js/translated/table_filters.js:147
 #: templates/js/translated/table_filters.js:223
 #: templates/js/translated/table_filters.js:771
 msgid "Trackable"
 msgstr "可追踪"
 
-#: common/models.py:1488
+#: common/models.py:1514
 msgid "Parts are trackable by default"
 msgstr "商品默认可跟踪"
 
-#: common/models.py:1493 part/admin.py:117 part/models.py:1049
+#: common/models.py:1519 part/admin.py:117 part/models.py:1050
 #: part/templates/part/part_base.html:154
 #: templates/js/translated/table_filters.js:143
 #: templates/js/translated/table_filters.js:775
 msgid "Virtual"
 msgstr "虚拟"
 
-#: common/models.py:1494
+#: common/models.py:1520
 msgid "Parts are virtual by default"
 msgstr "商品默认是虚拟的"
 
-#: common/models.py:1499
+#: common/models.py:1525
 msgid "Show Import in Views"
 msgstr "视图中显示导入"
 
-#: common/models.py:1500
+#: common/models.py:1526
 msgid "Display the import wizard in some part views"
 msgstr "在一些商品视图中显示导入向导"
 
-#: common/models.py:1505
+#: common/models.py:1531
 msgid "Show related parts"
 msgstr "显示相关商品"
 
-#: common/models.py:1506
+#: common/models.py:1532
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:1511
+#: common/models.py:1537
 msgid "Initial Stock Data"
 msgstr ""
 
-#: common/models.py:1512
+#: common/models.py:1538
 msgid "Allow creation of initial stock when adding a new part"
 msgstr ""
 
-#: common/models.py:1517 templates/js/translated/part.js:107
+#: common/models.py:1543 templates/js/translated/part.js:107
 msgid "Initial Supplier Data"
 msgstr ""
 
-#: common/models.py:1519
+#: common/models.py:1545
 msgid "Allow creation of initial supplier data when adding a new part"
 msgstr ""
 
-#: common/models.py:1525
+#: common/models.py:1551
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:1526
+#: common/models.py:1552
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:1532
+#: common/models.py:1558
 msgid "Part Category Default Icon"
 msgstr ""
 
-#: common/models.py:1533
+#: common/models.py:1559
 msgid "Part category default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1537
+#: common/models.py:1563
 #, fuzzy
 #| msgid "Parameter units"
 msgid "Enforce Parameter Units"
 msgstr "参数单位"
 
-#: common/models.py:1539
+#: common/models.py:1565
 msgid "If units are provided, parameter values must match the specified units"
 msgstr ""
 
-#: common/models.py:1545
+#: common/models.py:1571
 msgid "Minimum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1547
+#: common/models.py:1573
 msgid "Minimum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1553
+#: common/models.py:1579
 msgid "Maximum Pricing Decimal Places"
 msgstr ""
 
-#: common/models.py:1555
+#: common/models.py:1581
 msgid "Maximum number of decimal places to display when rendering pricing data"
 msgstr ""
 
-#: common/models.py:1561
+#: common/models.py:1587
 msgid "Use Supplier Pricing"
 msgstr ""
 
-#: common/models.py:1563
+#: common/models.py:1589
 msgid "Include supplier price breaks in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1569
+#: common/models.py:1595
 msgid "Purchase History Override"
 msgstr ""
 
-#: common/models.py:1571
+#: common/models.py:1597
 msgid "Historical purchase order pricing overrides supplier price breaks"
 msgstr ""
 
-#: common/models.py:1577
+#: common/models.py:1603
 msgid "Use Stock Item Pricing"
 msgstr ""
 
-#: common/models.py:1579
+#: common/models.py:1605
 msgid "Use pricing from manually entered stock data for pricing calculations"
 msgstr ""
 
-#: common/models.py:1585
+#: common/models.py:1611
 msgid "Stock Item Pricing Age"
 msgstr ""
 
-#: common/models.py:1587
+#: common/models.py:1613
 msgid "Exclude stock items older than this number of days from pricing calculations"
 msgstr ""
 
-#: common/models.py:1594
+#: common/models.py:1620
 msgid "Use Variant Pricing"
 msgstr ""
 
-#: common/models.py:1595
+#: common/models.py:1621
 msgid "Include variant pricing in overall pricing calculations"
 msgstr ""
 
-#: common/models.py:1600
+#: common/models.py:1626
 msgid "Active Variants Only"
 msgstr ""
 
-#: common/models.py:1602
+#: common/models.py:1628
 msgid "Only use active variant parts for calculating variant pricing"
 msgstr ""
 
-#: common/models.py:1608
+#: common/models.py:1634
 msgid "Pricing Rebuild Interval"
 msgstr ""
 
-#: common/models.py:1610
+#: common/models.py:1636
 msgid "Number of days before part pricing is automatically updated"
 msgstr ""
 
-#: common/models.py:1617
+#: common/models.py:1643
 msgid "Internal Prices"
 msgstr "内部价格"
 
-#: common/models.py:1618
+#: common/models.py:1644
 msgid "Enable internal prices for parts"
 msgstr "启用内部商品价格"
 
-#: common/models.py:1623
+#: common/models.py:1649
 msgid "Internal Price Override"
 msgstr ""
 
-#: common/models.py:1625
+#: common/models.py:1651
 msgid "If available, internal prices override price range calculations"
 msgstr ""
 
-#: common/models.py:1631
+#: common/models.py:1657
 msgid "Enable label printing"
 msgstr ""
 
-#: common/models.py:1632
+#: common/models.py:1658
 msgid "Enable label printing from the web interface"
 msgstr ""
 
-#: common/models.py:1637
+#: common/models.py:1663
 msgid "Label Image DPI"
 msgstr ""
 
-#: common/models.py:1639
+#: common/models.py:1665
 msgid "DPI resolution when generating image files to supply to label printing plugins"
 msgstr ""
 
-#: common/models.py:1645
+#: common/models.py:1671
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:1646
+#: common/models.py:1672
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:1651 templates/stats.html:25
+#: common/models.py:1677 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "调试模式"
 
-#: common/models.py:1652
+#: common/models.py:1678
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "在调试模式生成报告(HTML输出)"
 
-#: common/models.py:1657
+#: common/models.py:1683
 #, fuzzy
 #| msgid "No Reports Found"
 msgid "Log Report Errors"
 msgstr "没有找到报表"
 
-#: common/models.py:1658
+#: common/models.py:1684
 msgid "Log errors which occur when generating reports"
 msgstr ""
 
-#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:202
+#: common/models.py:1689 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:203
 msgid "Page Size"
 msgstr "页面大小"
 
-#: common/models.py:1664
+#: common/models.py:1690
 msgid "Default page size for PDF reports"
 msgstr "PDF 报表默认页面大小"
 
-#: common/models.py:1669
+#: common/models.py:1695
 msgid "Enable Test Reports"
 msgstr ""
 
-#: common/models.py:1670
+#: common/models.py:1696
 msgid "Enable generation of test reports"
 msgstr "启用生成测试报表"
 
-#: common/models.py:1675
+#: common/models.py:1701
 msgid "Attach Test Reports"
 msgstr ""
 
-#: common/models.py:1677
+#: common/models.py:1703
 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
 msgstr ""
 
-#: common/models.py:1683
+#: common/models.py:1709
 msgid "Globally Unique Serials"
 msgstr ""
 
-#: common/models.py:1684
+#: common/models.py:1710
 msgid "Serial numbers for stock items must be globally unique"
 msgstr ""
 
-#: common/models.py:1689
+#: common/models.py:1715
 msgid "Autofill Serial Numbers"
 msgstr ""
 
-#: common/models.py:1690
+#: common/models.py:1716
 msgid "Autofill serial numbers in forms"
 msgstr ""
 
-#: common/models.py:1695
+#: common/models.py:1721
 msgid "Delete Depleted Stock"
 msgstr ""
 
-#: common/models.py:1697
-msgid "Determines default behaviour when a stock item is depleted"
+#: common/models.py:1723
+msgid "Determines default behavior when a stock item is depleted"
 msgstr ""
 
-#: common/models.py:1703
+#: common/models.py:1729
 msgid "Batch Code Template"
 msgstr ""
 
-#: common/models.py:1705
+#: common/models.py:1731
 msgid "Template for generating default batch codes for stock items"
 msgstr ""
 
-#: common/models.py:1710
+#: common/models.py:1736
 msgid "Stock Expiry"
 msgstr "库存到期"
 
-#: common/models.py:1711
+#: common/models.py:1737
 msgid "Enable stock expiry functionality"
 msgstr "启用库存到期功能"
 
-#: common/models.py:1716
+#: common/models.py:1742
 msgid "Sell Expired Stock"
 msgstr "销售过期库存"
 
-#: common/models.py:1717
+#: common/models.py:1743
 msgid "Allow sale of expired stock"
 msgstr "允许销售过期库存"
 
-#: common/models.py:1722
+#: common/models.py:1748
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:1724
+#: common/models.py:1750
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:1731
+#: common/models.py:1757
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:1732
+#: common/models.py:1758
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:1737
+#: common/models.py:1763
 msgid "Stock Ownership Control"
 msgstr "库存所有权控制"
 
-#: common/models.py:1738
+#: common/models.py:1764
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:1743
+#: common/models.py:1769
 msgid "Stock Location Default Icon"
 msgstr ""
 
-#: common/models.py:1744
+#: common/models.py:1770
 msgid "Stock location default icon (empty means no icon)"
 msgstr ""
 
-#: common/models.py:1748
+#: common/models.py:1774
 #, fuzzy
 #| msgid "Select Stock Items"
 msgid "Show Installed Stock Items"
 msgstr "选择库存项"
 
-#: common/models.py:1749
+#: common/models.py:1775
 msgid "Display installed stock items in stock tables"
 msgstr ""
 
-#: common/models.py:1754
+#: common/models.py:1780
 msgid "Check BOM when installing items"
 msgstr ""
 
-#: common/models.py:1756
+#: common/models.py:1782
 msgid "Installed stock items must exist in the BOM for the parent part"
 msgstr ""
 
-#: common/models.py:1762
+#: common/models.py:1788
 msgid "Build Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1764
+#: common/models.py:1790
 msgid "Required pattern for generating Build Order reference field"
 msgstr ""
 
-#: common/models.py:1770
+#: common/models.py:1796 common/models.py:1824 common/models.py:1846
+#: common/models.py:1874
+#, fuzzy
+#| msgid "Responsible"
+msgid "Require Responsible Owner"
+msgstr "责任人"
+
+#: common/models.py:1797 common/models.py:1825 common/models.py:1847
+#: common/models.py:1875
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1804
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1810
 #, fuzzy
 #| msgid "Sales Orders"
 msgid "Enable Return Orders"
 msgstr "销售订单"
 
-#: common/models.py:1771
+#: common/models.py:1811
 msgid "Enable return order functionality in the user interface"
 msgstr ""
 
-#: common/models.py:1776
+#: common/models.py:1816
 #, fuzzy
 #| msgid "Build Order Reference"
 msgid "Return Order Reference Pattern"
 msgstr "相关生产订单"
 
-#: common/models.py:1778
+#: common/models.py:1818
 msgid "Required pattern for generating Return Order reference field"
 msgstr ""
 
-#: common/models.py:1784
+#: common/models.py:1830
 #, fuzzy
 #| msgid "Complete Build Order"
 msgid "Edit Completed Return Orders"
 msgstr "生产订单完成"
 
-#: common/models.py:1786
+#: common/models.py:1832
 msgid "Allow editing of return orders after they have been completed"
 msgstr ""
 
-#: common/models.py:1792
+#: common/models.py:1838
 msgid "Sales Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1794
+#: common/models.py:1840
 msgid "Required pattern for generating Sales Order reference field"
 msgstr ""
 
-#: common/models.py:1800
+#: common/models.py:1852
 msgid "Sales Order Default Shipment"
 msgstr ""
 
-#: common/models.py:1801
+#: common/models.py:1853
 msgid "Enable creation of default shipment with sales orders"
 msgstr ""
 
-#: common/models.py:1806
+#: common/models.py:1858
 msgid "Edit Completed Sales Orders"
 msgstr ""
 
-#: common/models.py:1808
+#: common/models.py:1860
 msgid "Allow editing of sales orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1814
+#: common/models.py:1866
 msgid "Purchase Order Reference Pattern"
 msgstr ""
 
-#: common/models.py:1816
+#: common/models.py:1868
 msgid "Required pattern for generating Purchase Order reference field"
 msgstr ""
 
-#: common/models.py:1822
+#: common/models.py:1880
 msgid "Edit Completed Purchase Orders"
 msgstr ""
 
-#: common/models.py:1824
+#: common/models.py:1882
 msgid "Allow editing of purchase orders after they have been shipped or completed"
 msgstr ""
 
-#: common/models.py:1830
+#: common/models.py:1888
 #, fuzzy
 #| msgid "Create Purchase Order"
 msgid "Auto Complete Purchase Orders"
 msgstr "创建采购订单"
 
-#: common/models.py:1832
+#: common/models.py:1890
 msgid "Automatically mark purchase orders as complete when all line items are received"
 msgstr ""
 
-#: common/models.py:1839
+#: common/models.py:1897
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:1840
+#: common/models.py:1898
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:1845
+#: common/models.py:1903
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:1846
+#: common/models.py:1904
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:1851
+#: common/models.py:1909
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:1852
+#: common/models.py:1910
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:1857
+#: common/models.py:1915
 msgid "Enable SSO registration"
 msgstr ""
 
-#: common/models.py:1859
+#: common/models.py:1917
 msgid "Enable self-registration via SSO for users on the login pages"
 msgstr ""
 
-#: common/models.py:1865
+#: common/models.py:1923
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:1866
+#: common/models.py:1924
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:1871
+#: common/models.py:1929
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:1873
+#: common/models.py:1931
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:1879
+#: common/models.py:1937
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:1880
+#: common/models.py:1938
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:1885
+#: common/models.py:1943
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:1886
+#: common/models.py:1944
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:1891
+#: common/models.py:1949
 msgid "Allowed domains"
 msgstr ""
 
-#: common/models.py:1893
+#: common/models.py:1951
 msgid "Restrict signup to certain domains (comma-separated, starting with @)"
 msgstr ""
 
-#: common/models.py:1899
+#: common/models.py:1957
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:1900
+#: common/models.py:1958
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:1905
+#: common/models.py:1963
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:1906
+#: common/models.py:1964
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1911
+#: common/models.py:1969
 msgid "Check plugins on startup"
 msgstr ""
 
-#: common/models.py:1913
+#: common/models.py:1971
 msgid "Check that all plugins are installed on startup - enable in container environments"
 msgstr ""
 
-#: common/models.py:1921
+#: common/models.py:1979
 msgid "Check for plugin updates"
 msgstr ""
 
-#: common/models.py:1922
+#: common/models.py:1980
 msgid "Enable periodic checks for updates to installed plugins"
 msgstr ""
 
-#: common/models.py:1928
+#: common/models.py:1986
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1929
+#: common/models.py:1987
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1935
+#: common/models.py:1993
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1936
+#: common/models.py:1994
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1942
+#: common/models.py:2000
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1943
+#: common/models.py:2001
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1949
+#: common/models.py:2007
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1950
+#: common/models.py:2008
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1956
+#: common/models.py:2014
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1957
+#: common/models.py:2015
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1963
+#: common/models.py:2021
 #, fuzzy
 #| msgid "Sales Orders"
 msgid "Enable project codes"
 msgstr "销售订单"
 
-#: common/models.py:1964
+#: common/models.py:2022
 msgid "Enable project codes for tracking projects"
 msgstr ""
 
-#: common/models.py:1969
+#: common/models.py:2027
 msgid "Stocktake Functionality"
 msgstr ""
 
-#: common/models.py:1971
+#: common/models.py:2029
 msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
 msgstr ""
 
-#: common/models.py:1977
+#: common/models.py:2035
 #, fuzzy
 #| msgid "Exclude Location"
 msgid "Exclude External Locations"
 msgstr "排除地点"
 
-#: common/models.py:1979
+#: common/models.py:2037
 #, fuzzy
 #| msgid "Exclude stock items from this selected location"
 msgid "Exclude stock items in external locations from stocktake calculations"
 msgstr "从该选定的仓储地点排除库存项"
 
-#: common/models.py:1985
+#: common/models.py:2043
 msgid "Automatic Stocktake Period"
 msgstr ""
 
-#: common/models.py:1987
+#: common/models.py:2045
 msgid "Number of days between automatic stocktake recording (set to zero to disable)"
 msgstr ""
 
-#: common/models.py:1993
+#: common/models.py:2051
 msgid "Report Deletion Interval"
 msgstr ""
 
-#: common/models.py:1995
+#: common/models.py:2053
 msgid "Stocktake reports will be deleted after specified number of days"
 msgstr ""
 
-#: common/models.py:2002
+#: common/models.py:2060
 msgid "Display Users full names"
 msgstr ""
 
-#: common/models.py:2003
+#: common/models.py:2061
 msgid "Display Users full names instead of usernames"
 msgstr ""
 
-#: common/models.py:2008
-msgid "Block Until Tests Pass"
+#: common/models.py:2066
+msgid "Enable Test Station Data"
 msgstr ""
 
-#: common/models.py:2010
-msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
+#: common/models.py:2067
+#, fuzzy
+#| msgid "Enable generation of test reports"
+msgid "Enable test station data collection for test results"
+msgstr "启用生成测试报表"
 
-#: common/models.py:2023 common/models.py:2423
+#: common/models.py:2079 common/models.py:2489
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:2064
+#: common/models.py:2122
 #, fuzzy
 #| msgid "Build to allocate parts"
 msgid "Hide inactive parts"
 msgstr "生产以分配部件"
 
-#: common/models.py:2066
+#: common/models.py:2124
 msgid "Hide inactive parts in results displayed on the homepage"
 msgstr ""
 
-#: common/models.py:2072
+#: common/models.py:2130
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:2073
+#: common/models.py:2131
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:2078
+#: common/models.py:2136
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:2079
+#: common/models.py:2137
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:2084
+#: common/models.py:2142
 msgid "Show latest parts"
 msgstr "显示最近商品"
 
-#: common/models.py:2085
+#: common/models.py:2143
 msgid "Show latest parts on the homepage"
 msgstr "在主页上显示最近商品"
 
-#: common/models.py:2090
-msgid "Show unvalidated BOMs"
+#: common/models.py:2148
+msgid "Show invalid BOMs"
 msgstr ""
 
-#: common/models.py:2091
+#: common/models.py:2149
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:2096
+#: common/models.py:2154
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:2097
+#: common/models.py:2155
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2102
+#: common/models.py:2160
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:2103
+#: common/models.py:2161
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2108
+#: common/models.py:2166
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:2109
+#: common/models.py:2167
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2114
+#: common/models.py:2172
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:2115
+#: common/models.py:2173
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:2120
+#: common/models.py:2178
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:2121
+#: common/models.py:2179
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2126
+#: common/models.py:2184
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:2127
+#: common/models.py:2185
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:2132
+#: common/models.py:2190
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:2133
+#: common/models.py:2191
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:2138
+#: common/models.py:2196
 msgid "Show overdue builds"
 msgstr "显示逾期生产"
 
-#: common/models.py:2139
+#: common/models.py:2197
 msgid "Show overdue builds on the homepage"
 msgstr "在主页上显示逾期的生产"
 
-#: common/models.py:2144
+#: common/models.py:2202
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:2145
+#: common/models.py:2203
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:2150
+#: common/models.py:2208
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:2151
+#: common/models.py:2209
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:2156
+#: common/models.py:2214
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:2157
+#: common/models.py:2215
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2162
+#: common/models.py:2220
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:2163
+#: common/models.py:2221
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:2168
+#: common/models.py:2226
 msgid "Show pending SO shipments"
 msgstr ""
 
-#: common/models.py:2169
+#: common/models.py:2227
 #, fuzzy
 #| msgid "Show latest parts on the homepage"
 msgid "Show pending SO shipments on the homepage"
 msgstr "在主页上显示最近商品"
 
-#: common/models.py:2174
+#: common/models.py:2232
 msgid "Show News"
 msgstr ""
 
-#: common/models.py:2175
+#: common/models.py:2233
 msgid "Show news on the homepage"
 msgstr ""
 
-#: common/models.py:2180
+#: common/models.py:2238
 msgid "Inline label display"
 msgstr "内嵌标签显示"
 
-#: common/models.py:2182
+#: common/models.py:2240
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载"
 
-#: common/models.py:2188
+#: common/models.py:2246
 msgid "Default label printer"
 msgstr ""
 
-#: common/models.py:2190
+#: common/models.py:2248
 msgid "Configure which label printer should be selected by default"
 msgstr ""
 
-#: common/models.py:2196
+#: common/models.py:2254
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:2198
+#: common/models.py:2256
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载"
 
-#: common/models.py:2204
+#: common/models.py:2262
 msgid "Search Parts"
 msgstr ""
 
-#: common/models.py:2205
+#: common/models.py:2263
 msgid "Display parts in search preview window"
 msgstr ""
 
-#: common/models.py:2210
+#: common/models.py:2268
 msgid "Search Supplier Parts"
 msgstr ""
 
-#: common/models.py:2211
+#: common/models.py:2269
 msgid "Display supplier parts in search preview window"
 msgstr ""
 
-#: common/models.py:2216
+#: common/models.py:2274
 msgid "Search Manufacturer Parts"
 msgstr ""
 
-#: common/models.py:2217
+#: common/models.py:2275
 msgid "Display manufacturer parts in search preview window"
 msgstr ""
 
-#: common/models.py:2222
+#: common/models.py:2280
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:2223
+#: common/models.py:2281
 msgid "Excluded inactive parts from search preview window"
 msgstr ""
 
-#: common/models.py:2228
+#: common/models.py:2286
 msgid "Search Categories"
 msgstr ""
 
-#: common/models.py:2229
+#: common/models.py:2287
 msgid "Display part categories in search preview window"
 msgstr ""
 
-#: common/models.py:2234
+#: common/models.py:2292
 msgid "Search Stock"
 msgstr ""
 
-#: common/models.py:2235
+#: common/models.py:2293
 msgid "Display stock items in search preview window"
 msgstr ""
 
-#: common/models.py:2240
+#: common/models.py:2298
 msgid "Hide Unavailable Stock Items"
 msgstr ""
 
-#: common/models.py:2242
+#: common/models.py:2300
 msgid "Exclude stock items which are not available from the search preview window"
 msgstr ""
 
-#: common/models.py:2248
+#: common/models.py:2306
 msgid "Search Locations"
 msgstr ""
 
-#: common/models.py:2249
+#: common/models.py:2307
 msgid "Display stock locations in search preview window"
 msgstr ""
 
-#: common/models.py:2254
+#: common/models.py:2312
 msgid "Search Companies"
 msgstr ""
 
-#: common/models.py:2255
+#: common/models.py:2313
 msgid "Display companies in search preview window"
 msgstr ""
 
-#: common/models.py:2260
+#: common/models.py:2318
 msgid "Search Build Orders"
 msgstr ""
 
-#: common/models.py:2261
+#: common/models.py:2319
 msgid "Display build orders in search preview window"
 msgstr ""
 
-#: common/models.py:2266
+#: common/models.py:2324
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: common/models.py:2267
+#: common/models.py:2325
 msgid "Display purchase orders in search preview window"
 msgstr ""
 
-#: common/models.py:2272
+#: common/models.py:2330
 msgid "Exclude Inactive Purchase Orders"
 msgstr ""
 
-#: common/models.py:2274
+#: common/models.py:2332
 msgid "Exclude inactive purchase orders from search preview window"
 msgstr ""
 
-#: common/models.py:2280
+#: common/models.py:2338
 msgid "Search Sales Orders"
 msgstr ""
 
-#: common/models.py:2281
+#: common/models.py:2339
 msgid "Display sales orders in search preview window"
 msgstr ""
 
-#: common/models.py:2286
+#: common/models.py:2344
 msgid "Exclude Inactive Sales Orders"
 msgstr ""
 
-#: common/models.py:2288
+#: common/models.py:2346
 msgid "Exclude inactive sales orders from search preview window"
 msgstr ""
 
-#: common/models.py:2294
+#: common/models.py:2352
 #, fuzzy
 #| msgid "Purchase Orders"
 msgid "Search Return Orders"
 msgstr "采购订单"
 
-#: common/models.py:2295
+#: common/models.py:2353
 msgid "Display return orders in search preview window"
 msgstr ""
 
-#: common/models.py:2300
+#: common/models.py:2358
 msgid "Exclude Inactive Return Orders"
 msgstr ""
 
-#: common/models.py:2302
+#: common/models.py:2360
 msgid "Exclude inactive return orders from search preview window"
 msgstr ""
 
-#: common/models.py:2308
+#: common/models.py:2366
 msgid "Search Preview Results"
 msgstr "搜索预览结果"
 
-#: common/models.py:2310
+#: common/models.py:2368
 msgid "Number of results to show in each section of the search preview window"
 msgstr ""
 
-#: common/models.py:2316
+#: common/models.py:2374
 #, fuzzy
 #| msgid "Search"
 msgid "Regex Search"
 msgstr "搜索"
 
-#: common/models.py:2317
+#: common/models.py:2375
 msgid "Enable regular expressions in search queries"
 msgstr ""
 
-#: common/models.py:2322
+#: common/models.py:2380
 msgid "Whole Word Search"
 msgstr ""
 
-#: common/models.py:2323
+#: common/models.py:2381
 msgid "Search queries return results for whole word matches"
 msgstr ""
 
-#: common/models.py:2328
+#: common/models.py:2386
 msgid "Show Quantity in Forms"
 msgstr "在表格中显示数量"
 
-#: common/models.py:2329
+#: common/models.py:2387
 msgid "Display available part quantity in some forms"
 msgstr "在某些表格中显示可用的商品数量"
 
-#: common/models.py:2334
+#: common/models.py:2392
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:2335
+#: common/models.py:2393
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:2340
+#: common/models.py:2398
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:2341
+#: common/models.py:2399
 msgid "The navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:2346
+#: common/models.py:2404
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:2347
+#: common/models.py:2405
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:2360 part/templates/part/detail.html:41
+#: common/models.py:2418 part/templates/part/detail.html:41
 msgid "Part Scheduling"
 msgstr ""
 
-#: common/models.py:2361
+#: common/models.py:2419
 msgid "Display part scheduling information"
 msgstr ""
 
-#: common/models.py:2366 part/templates/part/detail.html:62
+#: common/models.py:2424 part/templates/part/detail.html:62
 msgid "Part Stocktake"
 msgstr ""
 
-#: common/models.py:2368
+#: common/models.py:2426
 msgid "Display part stocktake information (if stocktake functionality is enabled)"
 msgstr ""
 
-#: common/models.py:2374
+#: common/models.py:2432
 msgid "Table String Length"
 msgstr ""
 
-#: common/models.py:2376
+#: common/models.py:2434
 msgid "Maximum length limit for strings displayed in table views"
 msgstr ""
 
-#: common/models.py:2382
+#: common/models.py:2440
 #, fuzzy
 #| msgid "Select Label Template"
 msgid "Default part label template"
 msgstr "选择标签模板"
 
-#: common/models.py:2383
+#: common/models.py:2441
 msgid "The part label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2388
+#: common/models.py:2446
 #, fuzzy
 #| msgid "stock items selected"
 msgid "Default stock item template"
 msgstr "已选择库存项"
 
-#: common/models.py:2390
+#: common/models.py:2448
 msgid "The stock item label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2396
+#: common/models.py:2454
 #, fuzzy
 #| msgid "No stock location set"
 msgid "Default stock location label template"
 msgstr "未设置仓储地点"
 
-#: common/models.py:2398
+#: common/models.py:2456
 msgid "The stock location label template to be automatically selected"
 msgstr ""
 
-#: common/models.py:2404
+#: common/models.py:2462
+#, fuzzy
+#| msgid "No stock location set"
+msgid "Default build line label template"
+msgstr "未设置仓储地点"
+
+#: common/models.py:2464
+msgid "The build line label template to be automatically selected"
+msgstr ""
+
+#: common/models.py:2470
 msgid "Receive error reports"
 msgstr ""
 
-#: common/models.py:2405
+#: common/models.py:2471
 msgid "Receive notifications for system errors"
 msgstr ""
 
-#: common/models.py:2410
+#: common/models.py:2476
 msgid "Last used printing machines"
 msgstr ""
 
-#: common/models.py:2411
+#: common/models.py:2477
 msgid "Save the last used printing machines for a user"
 msgstr ""
 
-#: common/models.py:2454
+#: common/models.py:2520
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:2461 company/serializers.py:486 order/admin.py:42
-#: order/models.py:1321 order/models.py:2226
+#: common/models.py:2527 company/serializers.py:486 order/admin.py:42
+#: order/models.py:1333 order/models.py:2241
 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885
 #: templates/js/translated/pricing.js:621
 #: templates/js/translated/return_order.js:741
 msgid "Price"
 msgstr "价格"
 
-#: common/models.py:2462
+#: common/models.py:2528
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:2633 common/models.py:2818
+#: common/models.py:2699 common/models.py:2884
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:2634
+#: common/models.py:2700
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:2644
+#: common/models.py:2710
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:2648 machine/models.py:39 part/admin.py:88
-#: part/models.py:1044 plugin/models.py:56
+#: common/models.py:2714 machine/models.py:39 part/admin.py:88
+#: part/models.py:1045 plugin/models.py:56
 #: templates/js/translated/table_filters.js:135
 #: templates/js/translated/table_filters.js:219
 #: templates/js/translated/table_filters.js:492
 #: templates/js/translated/table_filters.js:520
-#: templates/js/translated/table_filters.js:716 users/models.py:169
+#: templates/js/translated/table_filters.js:716 users/models.py:171
 msgid "Active"
 msgstr ""
 
-#: common/models.py:2648
+#: common/models.py:2714
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:2664 users/models.py:148
+#: common/models.py:2730 users/models.py:148
 msgid "Token"
 msgstr "令牌"
 
-#: common/models.py:2665
+#: common/models.py:2731
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:2673
+#: common/models.py:2739
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:2674
+#: common/models.py:2740
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:2782
+#: common/models.py:2848
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:2783
+#: common/models.py:2849
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:2791
+#: common/models.py:2857
 msgid "Host"
 msgstr ""
 
-#: common/models.py:2792
+#: common/models.py:2858
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:2800
+#: common/models.py:2866
 msgid "Header"
 msgstr ""
 
-#: common/models.py:2801
+#: common/models.py:2867
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:2808
+#: common/models.py:2874
 msgid "Body"
 msgstr ""
 
-#: common/models.py:2809
+#: common/models.py:2875
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:2819
+#: common/models.py:2885
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:2824
+#: common/models.py:2890
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:2825
+#: common/models.py:2891
 msgid "Was the work on this message finished?"
 msgstr ""
 
-#: common/models.py:2951
+#: common/models.py:3017
 msgid "Id"
 msgstr ""
 
-#: common/models.py:2953 templates/js/translated/company.js:955
+#: common/models.py:3019 templates/js/translated/company.js:955
 #: templates/js/translated/news.js:44
 msgid "Title"
 msgstr ""
 
-#: common/models.py:2957 templates/js/translated/news.js:60
+#: common/models.py:3023 templates/js/translated/news.js:60
 msgid "Published"
 msgstr ""
 
-#: common/models.py:2959 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3025 templates/InvenTree/settings/plugin_settings.html:32
 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
 msgid "Author"
 msgstr ""
 
-#: common/models.py:2961 templates/js/translated/news.js:52
+#: common/models.py:3027 templates/js/translated/news.js:52
 msgid "Summary"
 msgstr ""
 
-#: common/models.py:2964
+#: common/models.py:3030
 msgid "Read"
 msgstr ""
 
-#: common/models.py:2964
+#: common/models.py:3030
 msgid "Was this news item read?"
 msgstr ""
 
-#: common/models.py:2981 company/models.py:155 part/models.py:928
+#: common/models.py:3047 company/models.py:155 part/models.py:929
 #: report/templates/report/inventree_bill_of_materials_report.html:126
 #: report/templates/report/inventree_bill_of_materials_report.html:148
 #: report/templates/report/inventree_return_order_report_base.html:35
@@ -3788,41 +3828,41 @@ msgstr ""
 msgid "Image"
 msgstr "图片"
 
-#: common/models.py:2981
+#: common/models.py:3047
 #, fuzzy
 #| msgid "Image"
 msgid "Image file"
 msgstr "图片"
 
-#: common/models.py:3023
+#: common/models.py:3089
 #, fuzzy
 #| msgid "Must be a valid number"
 msgid "Unit name must be a valid identifier"
 msgstr "必须是有效数字"
 
-#: common/models.py:3042
+#: common/models.py:3108
 #, fuzzy
 #| msgid "Part name"
 msgid "Unit name"
 msgstr "商品名称"
 
-#: common/models.py:3049 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3115 templates/InvenTree/settings/settings_staff_js.html:75
 msgid "Symbol"
 msgstr ""
 
-#: common/models.py:3050
+#: common/models.py:3116
 #, fuzzy
 #| msgid "Optional Items"
 msgid "Optional unit symbol"
 msgstr "可选项目"
 
-#: common/models.py:3057 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3123 templates/InvenTree/settings/settings_staff_js.html:71
 #, fuzzy
 #| msgid "Destination"
 msgid "Definition"
 msgstr "目的地"
 
-#: common/models.py:3058
+#: common/models.py:3124
 msgid "Unit definition"
 msgstr ""
 
@@ -4005,7 +4045,7 @@ msgid "Contact email address"
 msgstr "联系人电子邮件"
 
 #: company/models.py:138 company/templates/company/company_base.html:139
-#: order/models.py:319 order/templates/order/order_base.html:203
+#: order/models.py:331 order/templates/order/order_base.html:203
 #: order/templates/order/return_order_base.html:174
 #: order/templates/order/sales_order_base.html:214
 msgid "Contact"
@@ -4049,7 +4089,7 @@ msgstr "该公司使用的默认货币"
 
 #: company/models.py:268 company/models.py:377
 #: company/templates/company/company_base.html:8
-#: company/templates/company/company_base.html:12 stock/api.py:761
+#: company/templates/company/company_base.html:12 stock/api.py:776
 #: templates/InvenTree/search.html:178 templates/js/translated/company.js:495
 msgid "Company"
 msgstr "公司"
@@ -4160,7 +4200,7 @@ msgid "Link to address information (external)"
 msgstr "描述 (可选)"
 
 #: company/models.py:484 company/models.py:785 stock/models.py:754
-#: stock/serializers.py:252 stock/templates/stock/item_base.html:142
+#: stock/serializers.py:266 stock/templates/stock/item_base.html:142
 #: templates/js/translated/bom.js:622
 msgid "Base Part"
 msgstr ""
@@ -4221,9 +4261,9 @@ msgstr "参数名称"
 
 #: company/models.py:615
 #: report/templates/report/inventree_test_report_base.html:104
-#: stock/models.py:2438 templates/js/translated/company.js:1156
+#: stock/models.py:2441 templates/js/translated/company.js:1156
 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492
-#: templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:1519
 msgid "Value"
 msgstr "数值"
 
@@ -4232,7 +4272,7 @@ msgid "Parameter value"
 msgstr "参数值"
 
 #: company/models.py:623 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1008 part/models.py:3622
+#: part/admin.py:57 part/models.py:1009 part/models.py:3623
 #: part/templates/part/part_base.html:284
 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511
 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370
@@ -4258,7 +4298,7 @@ msgid "Linked manufacturer part must reference the same base part"
 msgstr ""
 
 #: company/models.py:795 company/templates/company/company_base.html:81
-#: company/templates/company/supplier_part.html:129 order/models.py:453
+#: company/templates/company/supplier_part.html:129 order/models.py:465
 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310
 #: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25
 #: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
@@ -4294,29 +4334,29 @@ msgid "Supplier part description"
 msgstr "供应商商品描述"
 
 #: company/models.py:834 company/templates/company/supplier_part.html:187
-#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59
+#: part/admin.py:418 part/models.py:4067 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
 #: report/templates/report/inventree_return_order_report_base.html:27
 #: report/templates/report/inventree_slr_report.html:105
 #: report/templates/report/inventree_so_report_base.html:32
-#: stock/serializers.py:565
+#: stock/serializers.py:579
 msgid "Note"
 msgstr "备注"
 
-#: company/models.py:843 part/models.py:1966
+#: company/models.py:843 part/models.py:1967
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:844 part/models.py:1967
+#: company/models.py:844 part/models.py:1968
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "最低收费(例如库存费)"
 
 #: company/models.py:851 company/templates/company/supplier_part.html:160
-#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1336
+#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350
 #: stock/templates/stock/item_base.html:240
 #: templates/js/translated/company.js:1636
-#: templates/js/translated/stock.js:2387
+#: templates/js/translated/stock.js:2423
 msgid "Packaging"
 msgstr "打包"
 
@@ -4338,7 +4378,7 @@ msgstr ""
 msgid "Total quantity supplied in a single pack. Leave empty for single items."
 msgstr ""
 
-#: company/models.py:878 part/models.py:1973
+#: company/models.py:878 part/models.py:1974
 msgid "multiple"
 msgstr ""
 
@@ -4418,16 +4458,16 @@ msgstr "从 URL 下载图片"
 msgid "Delete image"
 msgstr ""
 
-#: company/templates/company/company_base.html:86 order/models.py:898
-#: order/models.py:1993 order/templates/order/return_order_base.html:131
+#: company/templates/company/company_base.html:86 order/models.py:910
+#: order/models.py:2008 order/templates/order/return_order_base.html:131
 #: order/templates/order/sales_order_base.html:144 stock/models.py:807
-#: stock/models.py:808 stock/serializers.py:1086
+#: stock/models.py:808 stock/serializers.py:1100
 #: stock/templates/stock/item_base.html:405
 #: templates/email/overdue_sales_order.html:16
 #: templates/js/translated/company.js:502
 #: templates/js/translated/return_order.js:296
 #: templates/js/translated/sales_order.js:784
-#: templates/js/translated/stock.js:2923
+#: templates/js/translated/stock.js:2959
 #: templates/js/translated/table_filters.js:804
 msgid "Customer"
 msgstr "客户"
@@ -4436,7 +4476,7 @@ msgstr "客户"
 msgid "Uses default currency"
 msgstr "使用默认货币"
 
-#: company/templates/company/company_base.html:118 order/models.py:329
+#: company/templates/company/company_base.html:118 order/models.py:341
 #: order/templates/order/order_base.html:210
 #: order/templates/order/return_order_base.html:181
 #: order/templates/order/sales_order_base.html:221
@@ -4516,7 +4556,7 @@ msgstr "供货商库存"
 #: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
 #: templates/InvenTree/settings/sidebar.html:57
 #: templates/js/translated/search.js:205 templates/navbar.html:50
-#: users/models.py:195
+#: users/models.py:197
 msgid "Purchase Orders"
 msgstr "采购订单"
 
@@ -4539,7 +4579,7 @@ msgstr "新建采购订单"
 #: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
 #: templates/InvenTree/settings/sidebar.html:59
 #: templates/js/translated/search.js:219 templates/navbar.html:62
-#: users/models.py:196
+#: users/models.py:198
 msgid "Sales Orders"
 msgstr "销售订单"
 
@@ -4564,7 +4604,7 @@ msgstr ""
 #: order/templates/order/return_orders.html:15
 #: templates/InvenTree/settings/sidebar.html:61
 #: templates/js/translated/search.js:232 templates/navbar.html:65
-#: users/models.py:197
+#: users/models.py:199
 #, fuzzy
 #| msgid "Returned"
 msgid "Return Orders"
@@ -4704,7 +4744,7 @@ msgstr "地址"
 #: stock/templates/stock/item_base.html:233
 #: templates/js/translated/company.js:1590
 #: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2243
+#: templates/js/translated/stock.js:2279
 msgid "Supplier Part"
 msgstr "供应商商品"
 
@@ -4803,14 +4843,14 @@ msgstr ""
 #: part/serializers.py:818 part/stocktake.py:223
 #: part/templates/part/category.html:183
 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69
-#: stock/serializers.py:773 stock/serializers.py:937
+#: stock/serializers.py:787 stock/serializers.py:951
 #: stock/templates/stock/location.html:170
 #: stock/templates/stock/location.html:184
 #: stock/templates/stock/location.html:196
 #: stock/templates/stock/location_sidebar.html:7
 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730
-#: users/models.py:193
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766
+#: users/models.py:195
 msgid "Stock Items"
 msgstr "库存项"
 
@@ -4865,7 +4905,7 @@ msgstr "标签"
 msgid "Label template file"
 msgstr "标签模板文件"
 
-#: label/models.py:143 part/models.py:3493 report/models.py:323
+#: label/models.py:143 part/models.py:3494 report/models.py:324
 #: templates/js/translated/part.js:2900
 #: templates/js/translated/table_filters.js:481
 msgid "Enabled"
@@ -4891,7 +4931,7 @@ msgstr "高度 [mm]"
 msgid "Label height, specified in mm"
 msgstr "标注高度,以毫米为单位。"
 
-#: label/models.py:163 report/models.py:316
+#: label/models.py:163 report/models.py:317
 msgid "Filename Pattern"
 msgstr "文件名样式"
 
@@ -4907,8 +4947,8 @@ msgid "Query filters (comma-separated list of key=value pairs)"
 msgstr "查询筛选器 (逗号分隔的键值对列表)"
 
 #: label/models.py:314 label/models.py:353 label/models.py:378
-#: label/models.py:413 report/models.py:344 report/models.py:495
-#: report/models.py:531 report/models.py:567 report/models.py:749
+#: label/models.py:413 report/models.py:345 report/models.py:496
+#: report/models.py:532 report/models.py:568 report/models.py:750
 msgid "Filters"
 msgstr "筛选器"
 
@@ -5059,7 +5099,7 @@ msgstr ""
 msgid "No matching purchase order found"
 msgstr ""
 
-#: order/api.py:1455 order/models.py:1371 order/models.py:1478
+#: order/api.py:1455 order/models.py:1383 order/models.py:1490
 #: order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report_base.html:14
@@ -5069,16 +5109,16 @@ msgstr ""
 #: templates/js/translated/purchase_order.js:168
 #: templates/js/translated/purchase_order.js:753
 #: templates/js/translated/purchase_order.js:1674
-#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871
+#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907
 msgid "Purchase Order"
 msgstr ""
 
-#: order/api.py:1459 order/models.py:2193 order/models.py:2244
+#: order/api.py:1459 order/models.py:2208 order/models.py:2259
 #: 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
 #: templates/js/translated/return_order.js:281
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/stock.js:2941
 #, fuzzy
 #| msgid "Returned"
 msgid "Return Order"
@@ -5090,200 +5130,200 @@ msgstr "已退回"
 msgid "Total price for this order"
 msgstr "负责此订单的用户或群组"
 
-#: order/models.py:95 order/serializers.py:65
+#: order/models.py:95 order/serializers.py:71
 #, fuzzy
 #| msgid "Currency"
 msgid "Order Currency"
 msgstr "货币"
 
-#: order/models.py:98 order/serializers.py:66
+#: order/models.py:98 order/serializers.py:72
 msgid "Currency for this order (leave blank to use company default)"
 msgstr ""
 
-#: order/models.py:234
+#: order/models.py:246
 #, fuzzy
 #| msgid "Build output does not match the parent build"
 msgid "Contact does not match selected company"
 msgstr "生产产出与对应生产不匹配"
 
-#: order/models.py:266
+#: order/models.py:278
 #, fuzzy
 #| msgid "Description (optional)"
 msgid "Order description (optional)"
 msgstr "描述 (可选)"
 
-#: order/models.py:275
+#: order/models.py:287
 #, fuzzy
 #| msgid "User or group responsible for this order"
 msgid "Select project code for this order"
 msgstr "负责此订单的用户或群组"
 
-#: order/models.py:279 order/models.py:1276 order/models.py:1690
+#: order/models.py:291 order/models.py:1288 order/models.py:1702
 msgid "Link to external page"
 msgstr ""
 
-#: order/models.py:287
+#: order/models.py:299
 msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
-#: order/models.py:301
+#: order/models.py:313
 msgid "Created By"
 msgstr ""
 
-#: order/models.py:309
+#: order/models.py:321
 msgid "User or group responsible for this order"
 msgstr "负责此订单的用户或群组"
 
-#: order/models.py:320
+#: order/models.py:332
 #, fuzzy
 #| msgid "Priority of this build order"
 msgid "Point of contact for this order"
 msgstr "此构建订单的优先级"
 
-#: order/models.py:330
+#: order/models.py:342
 #, fuzzy
 #| msgid "User or group responsible for this order"
 msgid "Company address for this order"
 msgstr "负责此订单的用户或群组"
 
-#: order/models.py:431 order/models.py:887
+#: order/models.py:443 order/models.py:899
 msgid "Order reference"
 msgstr ""
 
-#: order/models.py:439 order/models.py:911
+#: order/models.py:451 order/models.py:923
 msgid "Purchase order status"
 msgstr ""
 
-#: order/models.py:454
+#: order/models.py:466
 msgid "Company from which the items are being ordered"
 msgstr "订购该商品的公司"
 
-#: order/models.py:465 order/templates/order/order_base.html:148
+#: order/models.py:477 order/templates/order/order_base.html:148
 #: templates/js/translated/purchase_order.js:1703
 msgid "Supplier Reference"
 msgstr ""
 
-#: order/models.py:466
+#: order/models.py:478
 msgid "Supplier order reference code"
 msgstr ""
 
-#: order/models.py:475
+#: order/models.py:487
 msgid "received by"
 msgstr ""
 
-#: order/models.py:481 order/models.py:2019
+#: order/models.py:493 order/models.py:2034
 msgid "Issue Date"
 msgstr ""
 
-#: order/models.py:482 order/models.py:2020
+#: order/models.py:494 order/models.py:2035
 msgid "Date order was issued"
 msgstr ""
 
-#: order/models.py:489 order/models.py:2027
+#: order/models.py:501 order/models.py:2042
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:533
+#: order/models.py:545
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:727
+#: order/models.py:739
 msgid "Quantity must be a positive number"
 msgstr "数量必须大于0"
 
-#: order/models.py:899
+#: order/models.py:911
 msgid "Company to which the items are being sold"
 msgstr "向其出售该商品的公司"
 
-#: order/models.py:922 order/models.py:2012
+#: order/models.py:934 order/models.py:2027
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:923 order/models.py:2013
+#: order/models.py:935 order/models.py:2028
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:927 order/models.py:1644
+#: order/models.py:939 order/models.py:1656
 #: templates/js/translated/sales_order.js:843
 #: templates/js/translated/sales_order.js:1024
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:936
+#: order/models.py:948
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:987
+#: order/models.py:999
 msgid "Order cannot be completed as no parts have been assigned"
 msgstr ""
 
-#: order/models.py:992
+#: order/models.py:1004
 #, fuzzy
 #| msgid "Build Order is ready to mark as completed"
 msgid "Only an open order can be marked as complete"
 msgstr "构建订单已准备好标记为已完成"
 
-#: order/models.py:996 templates/js/translated/sales_order.js:506
+#: order/models.py:1008 templates/js/translated/sales_order.js:506
 msgid "Order cannot be completed as there are incomplete shipments"
 msgstr ""
 
-#: order/models.py:1001
+#: order/models.py:1013
 msgid "Order cannot be completed as there are incomplete line items"
 msgstr ""
 
-#: order/models.py:1248
+#: order/models.py:1260
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:1265
+#: order/models.py:1277
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:1272
+#: order/models.py:1284
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:1284
+#: order/models.py:1296
 msgid "Target date for this line item (leave blank to use the target date from the order)"
 msgstr ""
 
-#: order/models.py:1305
+#: order/models.py:1317
 #, fuzzy
 #| msgid "Description (optional)"
 msgid "Line item description (optional)"
 msgstr "描述 (可选)"
 
-#: order/models.py:1311
+#: order/models.py:1323
 msgid "Context"
 msgstr ""
 
-#: order/models.py:1312
+#: order/models.py:1324
 msgid "Additional context for this line"
 msgstr ""
 
-#: order/models.py:1322
+#: order/models.py:1334
 msgid "Unit price"
 msgstr ""
 
-#: order/models.py:1355
+#: order/models.py:1367
 msgid "Supplier part must match supplier"
 msgstr ""
 
-#: order/models.py:1362
+#: order/models.py:1374
 msgid "deleted"
 msgstr ""
 
-#: order/models.py:1370 order/models.py:1477 order/models.py:1523
-#: order/models.py:1637 order/models.py:1789 order/models.py:2192
-#: order/models.py:2243 templates/js/translated/sales_order.js:1488
+#: order/models.py:1382 order/models.py:1489 order/models.py:1535
+#: order/models.py:1649 order/models.py:1803 order/models.py:2207
+#: order/models.py:2258 templates/js/translated/sales_order.js:1488
 msgid "Order"
 msgstr ""
 
-#: order/models.py:1390
+#: order/models.py:1402
 msgid "Supplier part"
 msgstr "供应商商品"
 
-#: order/models.py:1397 order/templates/order/order_base.html:196
+#: order/models.py:1409 order/templates/order/order_base.html:196
 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901
 #: templates/js/translated/purchase_order.js:1306
 #: templates/js/translated/purchase_order.js:2170
@@ -5293,357 +5333,357 @@ msgstr "供应商商品"
 msgid "Received"
 msgstr ""
 
-#: order/models.py:1398
+#: order/models.py:1410
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:1406 stock/models.py:926 stock/serializers.py:386
+#: order/models.py:1418 stock/models.py:926 stock/serializers.py:400
 #: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2274
+#: templates/js/translated/stock.js:2310
 msgid "Purchase Price"
 msgstr "采购价格"
 
-#: order/models.py:1407
+#: order/models.py:1419
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:1422
+#: order/models.py:1434
 msgid "Where does the Purchaser want this item to be stored?"
 msgstr ""
 
-#: order/models.py:1511
+#: order/models.py:1523
 msgid "Virtual part cannot be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1516
+#: order/models.py:1528
 msgid "Only salable parts can be assigned to a sales order"
 msgstr ""
 
-#: order/models.py:1542 part/templates/part/part_pricing.html:107
+#: order/models.py:1554 part/templates/part/part_pricing.html:107
 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
 msgid "Sale Price"
 msgstr "销售价格"
 
-#: order/models.py:1543
+#: order/models.py:1555
 msgid "Unit sale price"
 msgstr ""
 
-#: order/models.py:1553
+#: order/models.py:1565
 msgid "Shipped quantity"
 msgstr ""
 
-#: order/models.py:1645
+#: order/models.py:1657
 msgid "Date of shipment"
 msgstr ""
 
-#: order/models.py:1651 templates/js/translated/sales_order.js:1036
+#: order/models.py:1663 templates/js/translated/sales_order.js:1036
 msgid "Delivery Date"
 msgstr ""
 
-#: order/models.py:1652
+#: order/models.py:1664
 msgid "Date of delivery of shipment"
 msgstr ""
 
-#: order/models.py:1660
+#: order/models.py:1672
 msgid "Checked By"
 msgstr ""
 
-#: order/models.py:1661
+#: order/models.py:1673
 msgid "User who checked this shipment"
 msgstr ""
 
-#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343
-#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448
+#: order/models.py:1680 order/models.py:1893 order/serializers.py:1350
+#: order/serializers.py:1460 templates/js/translated/model_renderers.js:448
 msgid "Shipment"
 msgstr ""
 
-#: order/models.py:1669
+#: order/models.py:1681
 msgid "Shipment number"
 msgstr ""
 
-#: order/models.py:1677
+#: order/models.py:1689
 msgid "Tracking Number"
 msgstr ""
 
-#: order/models.py:1678
+#: order/models.py:1690
 msgid "Shipment tracking information"
 msgstr ""
 
-#: order/models.py:1685
+#: order/models.py:1697
 msgid "Invoice Number"
 msgstr ""
 
-#: order/models.py:1686
+#: order/models.py:1698
 msgid "Reference number for associated invoice"
 msgstr ""
 
-#: order/models.py:1706
+#: order/models.py:1718
 msgid "Shipment has already been sent"
 msgstr ""
 
-#: order/models.py:1709
+#: order/models.py:1721
 msgid "Shipment has no allocated stock items"
 msgstr ""
 
-#: order/models.py:1825 order/models.py:1827
+#: order/models.py:1839 order/models.py:1841
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:1834
+#: order/models.py:1848
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:1837
+#: order/models.py:1851
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:1840
+#: order/models.py:1854
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:1859 order/serializers.py:1220
+#: order/models.py:1873 order/serializers.py:1227
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:1862
+#: order/models.py:1876
 msgid "Sales order does not match shipment"
 msgstr ""
 
-#: order/models.py:1863 plugin/base/barcodes/api.py:481
+#: order/models.py:1877 plugin/base/barcodes/api.py:481
 msgid "Shipment does not match sales order"
 msgstr ""
 
-#: order/models.py:1871
+#: order/models.py:1885
 msgid "Line"
 msgstr ""
 
-#: order/models.py:1880
+#: order/models.py:1894
 msgid "Sales order shipment reference"
 msgstr ""
 
-#: order/models.py:1893 order/models.py:2200
+#: order/models.py:1907 order/models.py:2215
 #: templates/js/translated/return_order.js:722
 msgid "Item"
 msgstr ""
 
-#: order/models.py:1894
+#: order/models.py:1908
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:1903
+#: order/models.py:1917
 msgid "Enter stock allocation quantity"
 msgstr ""
 
-#: order/models.py:1982
+#: order/models.py:1997
 #, fuzzy
 #| msgid "Build Order Reference"
 msgid "Return Order reference"
 msgstr "相关生产订单"
 
-#: order/models.py:1994
+#: order/models.py:2009
 #, fuzzy
 #| msgid "Company from which the items are being ordered"
 msgid "Company from which items are being returned"
 msgstr "订购该商品的公司"
 
-#: order/models.py:2006
+#: order/models.py:2021
 msgid "Return order status"
 msgstr ""
 
-#: order/models.py:2185
+#: order/models.py:2200
 msgid "Only serialized items can be assigned to a Return Order"
 msgstr ""
 
-#: order/models.py:2201
+#: order/models.py:2216
 #, fuzzy
 #| msgid "Returned from customer"
 msgid "Select item to return from customer"
 msgstr "从客户退货"
 
-#: order/models.py:2207
+#: order/models.py:2222
 msgid "Received Date"
 msgstr ""
 
-#: order/models.py:2208
+#: order/models.py:2223
 msgid "The date this this return item was received"
 msgstr ""
 
-#: order/models.py:2219 templates/js/translated/return_order.js:733
+#: order/models.py:2234 templates/js/translated/return_order.js:733
 #: templates/js/translated/table_filters.js:123
 msgid "Outcome"
 msgstr ""
 
-#: order/models.py:2220
+#: order/models.py:2235
 msgid "Outcome for this line item"
 msgstr ""
 
-#: order/models.py:2227
+#: order/models.py:2242
 msgid "Cost associated with return or repair for this line item"
 msgstr ""
 
-#: order/serializers.py:277
+#: order/serializers.py:283
 msgid "Order cannot be cancelled"
 msgstr "无法取消订单"
 
-#: order/serializers.py:292 order/serializers.py:1236
+#: order/serializers.py:298 order/serializers.py:1243
 msgid "Allow order to be closed with incomplete line items"
 msgstr ""
 
-#: order/serializers.py:302 order/serializers.py:1246
+#: order/serializers.py:308 order/serializers.py:1253
 msgid "Order has incomplete line items"
 msgstr ""
 
-#: order/serializers.py:430
+#: order/serializers.py:436
 msgid "Order is not open"
 msgstr ""
 
-#: order/serializers.py:451
+#: order/serializers.py:457
 #, fuzzy
 #| msgid "Part Pricing"
 msgid "Auto Pricing"
 msgstr "商品价格"
 
-#: order/serializers.py:453
+#: order/serializers.py:459
 msgid "Automatically calculate purchase price based on supplier part data"
 msgstr ""
 
-#: order/serializers.py:463
+#: order/serializers.py:469
 msgid "Purchase price currency"
 msgstr ""
 
-#: order/serializers.py:469
+#: order/serializers.py:475
 #, fuzzy
 #| msgid "Select Stock Items"
 msgid "Merge Items"
 msgstr "选择库存项"
 
-#: order/serializers.py:471
+#: order/serializers.py:477
 msgid "Merge items with the same part, destination and target date into one line item"
 msgstr ""
 
-#: order/serializers.py:489
+#: order/serializers.py:495
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/serializers.py:492
+#: order/serializers.py:498
 msgid "Purchase order must be specified"
 msgstr ""
 
-#: order/serializers.py:500
+#: order/serializers.py:506
 msgid "Supplier must match purchase order"
 msgstr ""
 
-#: order/serializers.py:501
+#: order/serializers.py:507
 msgid "Purchase order must match supplier"
 msgstr ""
 
-#: order/serializers.py:540 order/serializers.py:1314
+#: order/serializers.py:546 order/serializers.py:1321
 msgid "Line Item"
 msgstr ""
 
-#: order/serializers.py:546
+#: order/serializers.py:552
 msgid "Line item does not match purchase order"
 msgstr ""
 
-#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669
+#: order/serializers.py:562 order/serializers.py:670 order/serializers.py:1676
 msgid "Select destination location for received items"
 msgstr ""
 
-#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:578 templates/js/translated/purchase_order.js:1130
 msgid "Enter batch code for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154
+#: order/serializers.py:586 templates/js/translated/purchase_order.js:1154
 msgid "Enter serial numbers for incoming stock items"
 msgstr ""
 
-#: order/serializers.py:591 templates/js/translated/barcode.js:52
+#: order/serializers.py:597 templates/js/translated/barcode.js:52
 msgid "Barcode"
 msgstr "条形码"
 
-#: order/serializers.py:592
+#: order/serializers.py:598
 #, fuzzy
 #| msgid "Scan Barcode"
 msgid "Scanned barcode"
 msgstr "扫描条形码"
 
-#: order/serializers.py:608
+#: order/serializers.py:614
 msgid "Barcode is already in use"
 msgstr ""
 
-#: order/serializers.py:632
+#: order/serializers.py:638
 msgid "An integer quantity must be provided for trackable parts"
 msgstr ""
 
-#: order/serializers.py:680 order/serializers.py:1685
+#: order/serializers.py:686 order/serializers.py:1692
 msgid "Line items must be provided"
 msgstr ""
 
-#: order/serializers.py:696
+#: order/serializers.py:702
 msgid "Destination location must be specified"
 msgstr ""
 
-#: order/serializers.py:707
+#: order/serializers.py:713
 msgid "Supplied barcode values must be unique"
 msgstr ""
 
-#: order/serializers.py:1064
+#: order/serializers.py:1070
 msgid "Sale price currency"
 msgstr ""
 
-#: order/serializers.py:1124
+#: order/serializers.py:1130
 msgid "No shipment details provided"
 msgstr ""
 
-#: order/serializers.py:1184 order/serializers.py:1323
+#: order/serializers.py:1191 order/serializers.py:1330
 msgid "Line item is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1203
+#: order/serializers.py:1210
 msgid "Quantity must be positive"
 msgstr ""
 
-#: order/serializers.py:1333
+#: order/serializers.py:1340
 msgid "Enter serial numbers to allocate"
 msgstr ""
 
-#: order/serializers.py:1355 order/serializers.py:1461
+#: order/serializers.py:1362 order/serializers.py:1468
 msgid "Shipment has already been shipped"
 msgstr ""
 
-#: order/serializers.py:1358 order/serializers.py:1464
+#: order/serializers.py:1365 order/serializers.py:1471
 msgid "Shipment is not associated with this order"
 msgstr ""
 
-#: order/serializers.py:1405
+#: order/serializers.py:1412
 msgid "No match found for the following serial numbers"
 msgstr ""
 
-#: order/serializers.py:1412
+#: order/serializers.py:1419
 msgid "The following serial numbers are already allocated"
 msgstr ""
 
-#: order/serializers.py:1639
+#: order/serializers.py:1646
 msgid "Return order line item"
 msgstr ""
 
-#: order/serializers.py:1645
+#: order/serializers.py:1652
 #, fuzzy
 #| msgid "Build output does not match Build Order"
 msgid "Line item does not match return order"
 msgstr "生产产出与订单不匹配"
 
-#: order/serializers.py:1648
+#: order/serializers.py:1655
 #, fuzzy
 #| msgid "This build output has already been completed"
 msgid "Line item has already been received"
 msgstr "此生产产出已经完成"
 
-#: order/serializers.py:1677
+#: order/serializers.py:1684
 msgid "Items can only be received against orders which are in progress"
 msgstr ""
 
-#: order/serializers.py:1755
+#: order/serializers.py:1762
 #, fuzzy
 #| msgid "Uses default currency"
 msgid "Line price currency"
@@ -6071,12 +6111,12 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218
+#: part/admin.py:39 part/admin.py:404 part/models.py:3918 part/stocktake.py:218
 #: stock/admin.py:153
 msgid "Part ID"
 msgstr "商品ID"
 
-#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219
+#: part/admin.py:41 part/admin.py:411 part/models.py:3919 part/stocktake.py:219
 #: stock/admin.py:157
 msgid "Part Name"
 msgstr ""
@@ -6085,20 +6125,20 @@ msgstr ""
 msgid "Part Description"
 msgstr ""
 
-#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:904 part/templates/part/part_base.html:269
 #: report/templates/report/inventree_slr_report.html:103
 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341
-#: templates/js/translated/stock.js:1999
+#: templates/js/translated/stock.js:2035
 msgid "IPN"
 msgstr ""
 
-#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277
-#: report/models.py:194 templates/js/translated/part.js:1231
+#: part/admin.py:50 part/models.py:913 part/templates/part/part_base.html:277
+#: report/models.py:195 templates/js/translated/part.js:1231
 #: templates/js/translated/part.js:2347
 msgid "Revision"
 msgstr ""
 
-#: part/admin.py:53 part/admin.py:317 part/models.py:885
+#: part/admin.py:53 part/admin.py:317 part/models.py:886
 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298
 msgid "Keywords"
 msgstr "关键词"
@@ -6125,11 +6165,11 @@ msgstr ""
 msgid "Default Supplier ID"
 msgstr ""
 
-#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:872 part/templates/part/part_base.html:177
 msgid "Variant Of"
 msgstr ""
 
-#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1000 part/templates/part/part_base.html:203
 msgid "Minimum Stock"
 msgstr "最低库存"
 
@@ -6148,12 +6188,12 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: part/admin.py:155 part/models.py:3079 part/models.py:3093
+#: part/admin.py:155 part/models.py:3080 part/models.py:3094
 #: templates/js/translated/part.js:969
 msgid "Minimum Cost"
 msgstr ""
 
-#: part/admin.py:158 part/models.py:3086 part/models.py:3100
+#: part/admin.py:158 part/models.py:3087 part/models.py:3101
 #: templates/js/translated/part.js:979
 msgid "Maximum Cost"
 msgstr ""
@@ -6171,7 +6211,7 @@ msgstr ""
 msgid "Category Path"
 msgstr "类别路径"
 
-#: part/admin.py:323 part/models.py:390 part/serializers.py:117
+#: part/admin.py:323 part/models.py:391 part/serializers.py:117
 #: part/serializers.py:272 part/serializers.py:391
 #: part/templates/part/cat_link.html:3 part/templates/part/category.html:23
 #: part/templates/part/category.html:141 part/templates/part/category.html:161
@@ -6179,7 +6219,7 @@ msgstr "类别路径"
 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84
 #: templates/InvenTree/settings/sidebar.html:47
 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130
-#: templates/navbar.html:24 users/models.py:190
+#: templates/navbar.html:24 users/models.py:192
 msgid "Parts"
 msgstr "商品"
 
@@ -6195,7 +6235,7 @@ msgstr ""
 msgid "Parent IPN"
 msgstr ""
 
-#: part/admin.py:408 part/models.py:3897
+#: part/admin.py:408 part/models.py:3920
 msgid "Part IPN"
 msgstr ""
 
@@ -6211,100 +6251,100 @@ msgstr ""
 msgid "Maximum Price"
 msgstr ""
 
-#: part/api.py:118
+#: part/api.py:120
 msgid "Starred"
 msgstr ""
 
-#: part/api.py:120
+#: part/api.py:122
 msgid "Filter by starred categories"
 msgstr ""
 
-#: part/api.py:137 stock/api.py:281
+#: part/api.py:139 stock/api.py:284
 msgid "Depth"
 msgstr ""
 
-#: part/api.py:137
+#: part/api.py:139
 msgid "Filter by category depth"
 msgstr ""
 
-#: part/api.py:155 stock/api.py:299
+#: part/api.py:157 stock/api.py:302
 msgid "Cascade"
 msgstr ""
 
-#: part/api.py:157
+#: part/api.py:159
 msgid "Include sub-categories in filtered results"
 msgstr ""
 
-#: part/api.py:177
+#: part/api.py:179
 #, fuzzy
 #| msgid "parent"
 msgid "Parent"
 msgstr "上级项"
 
-#: part/api.py:179
+#: part/api.py:181
 #, fuzzy
 #| msgid "Create new part category"
 msgid "Filter by parent category"
 msgstr "新建商品类别"
 
-#: part/api.py:212
+#: part/api.py:214
 msgid "Exclude Tree"
 msgstr ""
 
-#: part/api.py:214
+#: part/api.py:216
 #, fuzzy
 #| msgid "Exclude stock items from this selected location"
 msgid "Exclude sub-categories under the specified category"
 msgstr "从该选定的仓储地点排除库存项"
 
-#: part/api.py:455
+#: part/api.py:458
 #, fuzzy
 #| msgid "Units"
 msgid "Has Results"
 msgstr "单位"
 
-#: part/api.py:622
+#: part/api.py:625
 msgid "Incoming Purchase Order"
 msgstr ""
 
-#: part/api.py:640
+#: part/api.py:643
 msgid "Outgoing Sales Order"
 msgstr ""
 
-#: part/api.py:656
+#: part/api.py:659
 msgid "Stock produced by Build Order"
 msgstr ""
 
-#: part/api.py:740
+#: part/api.py:743
 msgid "Stock required for Build Order"
 msgstr ""
 
-#: part/api.py:887
+#: part/api.py:890
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:888
+#: part/api.py:891
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:894
+#: part/api.py:897
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840
+#: part/api.py:1549 part/models.py:896 part/models.py:3386 part/models.py:3863
 #: part/serializers.py:406 part/serializers.py:1112
-#: part/templates/part/part_base.html:260 stock/api.py:733
+#: part/templates/part/part_base.html:260 stock/api.py:745
 #: templates/InvenTree/settings/settings_staff_js.html:300
 #: templates/js/translated/notification.js:60
 #: templates/js/translated/part.js:2377
 msgid "Category"
 msgstr "类别"
 
-#: part/api.py:1828
+#: part/api.py:1837
 msgid "Uses"
 msgstr ""
 
-#: part/bom.py:170 part/models.py:100 part/models.py:938
+#: part/bom.py:170 part/models.py:101 part/models.py:939
 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367
 msgid "Default Location"
 msgstr "默认仓储地点"
@@ -6318,368 +6358,368 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16
+#: part/models.py:82 part/models.py:3864 part/templates/part/category.html:16
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "商品类别"
 
-#: part/models.py:82 part/templates/part/category.html:136
+#: part/models.py:83 part/templates/part/category.html:136
 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
-#: users/models.py:189
+#: users/models.py:191
 msgid "Part Categories"
 msgstr "商品类别"
 
-#: part/models.py:101
+#: part/models.py:102
 msgid "Default location for parts in this category"
 msgstr "此类别商品的默认仓储地点"
 
-#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810
-#: templates/js/translated/stock.js:2736
+#: part/models.py:107 stock/models.py:165 templates/js/translated/part.js:2810
+#: templates/js/translated/stock.js:2772
 #: templates/js/translated/table_filters.js:239
 #: templates/js/translated/table_filters.js:283
 msgid "Structural"
 msgstr ""
 
-#: part/models.py:108
+#: part/models.py:109
 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
 msgstr ""
 
-#: part/models.py:117
+#: part/models.py:118
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:118
+#: part/models.py:119
 msgid "Default keywords for parts in this category"
 msgstr "此类别商品的默认关键字"
 
-#: part/models.py:124 stock/models.py:89 stock/models.py:148
+#: part/models.py:125 stock/models.py:89 stock/models.py:148
 #: templates/InvenTree/settings/settings_staff_js.html:456
 msgid "Icon"
 msgstr ""
 
-#: part/models.py:125 stock/models.py:149
+#: part/models.py:126 stock/models.py:149
 msgid "Icon (optional)"
 msgstr ""
 
-#: part/models.py:147
+#: part/models.py:148
 msgid "You cannot make this part category structural because some parts are already assigned to it!"
 msgstr ""
 
-#: part/models.py:483
+#: part/models.py:484
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:531 part/models.py:538
+#: part/models.py:532 part/models.py:539
 #, python-brace-format
 msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
 msgstr ""
 
-#: part/models.py:550
+#: part/models.py:551
 #, python-brace-format
 msgid "Part '{parent}' is  used in BOM for '{self}' (recursive)"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:616
 #, fuzzy, python-brace-format
 #| msgid "IPN must match regex pattern {pat}"
 msgid "IPN must match regex pattern {pattern}"
 msgstr "IPN 必须匹配正则表达式 {pat}"
 
-#: part/models.py:695
+#: part/models.py:696
 msgid "Stock item with this serial number already exists"
 msgstr ""
 
-#: part/models.py:800
+#: part/models.py:801
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "在商品设置中不允许重复的IPN"
 
-#: part/models.py:810
+#: part/models.py:811
 msgid "Part with this Name, IPN and Revision already exists."
 msgstr ""
 
-#: part/models.py:825
+#: part/models.py:826
 msgid "Parts cannot be assigned to structural part categories!"
 msgstr ""
 
-#: part/models.py:854 part/models.py:3896
+#: part/models.py:855 part/models.py:3919
 msgid "Part name"
 msgstr "商品名称"
 
-#: part/models.py:859
+#: part/models.py:860
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:860
+#: part/models.py:861
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:870
+#: part/models.py:871
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:878
+#: part/models.py:879
 #, fuzzy
 #| msgid "Description (optional)"
 msgid "Part description (optional)"
 msgstr "描述 (可选)"
 
-#: part/models.py:886
+#: part/models.py:887
 msgid "Part keywords to improve visibility in search results"
 msgstr "提高搜索结果可见性的关键字"
 
-#: part/models.py:896
+#: part/models.py:897
 msgid "Part category"
 msgstr "商品类别"
 
-#: part/models.py:904
+#: part/models.py:905
 msgid "Internal Part Number"
 msgstr "内部商品编号"
 
-#: part/models.py:911
+#: part/models.py:912
 msgid "Part revision or version number"
 msgstr "商品版本号"
 
-#: part/models.py:936
+#: part/models.py:937
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:982 part/templates/part/part_base.html:376
+#: part/models.py:983 part/templates/part/part_base.html:376
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:983
+#: part/models.py:984
 msgid "Default supplier part"
 msgstr "默认供应商商品"
 
-#: part/models.py:990
+#: part/models.py:991
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:991
+#: part/models.py:992
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:1000
+#: part/models.py:1001
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:1009
+#: part/models.py:1010
 msgid "Units of measure for this part"
 msgstr ""
 
-#: part/models.py:1016
+#: part/models.py:1017
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:1022
+#: part/models.py:1023
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:1028
+#: part/models.py:1029
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:1034
+#: part/models.py:1035
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:1040
+#: part/models.py:1041
 msgid "Can this part be sold to customers?"
 msgstr "此商品可以销售给客户吗?"
 
-#: part/models.py:1044
+#: part/models.py:1045
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:1050
+#: part/models.py:1051
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "这是一个虚拟商品,如软件产品或许可证吗?"
 
-#: part/models.py:1056
+#: part/models.py:1057
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:1057
+#: part/models.py:1058
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1065
+#: part/models.py:1066
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:1070
+#: part/models.py:1071
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1086
+#: part/models.py:1087
 msgid "Creation User"
 msgstr "新建用户"
 
-#: part/models.py:1096
+#: part/models.py:1097
 #, fuzzy
 #| msgid "User or group responsible for this order"
 msgid "Owner responsible for this part"
 msgstr "负责此订单的用户或群组"
 
-#: part/models.py:1101 part/templates/part/part_base.html:339
+#: part/models.py:1102 part/templates/part/part_base.html:339
 #: stock/templates/stock/item_base.html:451
 #: templates/js/translated/part.js:2471
 msgid "Last Stocktake"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1975
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2993
+#: part/models.py:2994
 msgid "Currency used to cache pricing calculations"
 msgstr ""
 
-#: part/models.py:3009
+#: part/models.py:3010
 msgid "Minimum BOM Cost"
 msgstr ""
 
-#: part/models.py:3010
+#: part/models.py:3011
 msgid "Minimum cost of component parts"
 msgstr ""
 
-#: part/models.py:3016
+#: part/models.py:3017
 msgid "Maximum BOM Cost"
 msgstr ""
 
-#: part/models.py:3017
+#: part/models.py:3018
 msgid "Maximum cost of component parts"
 msgstr ""
 
-#: part/models.py:3023
+#: part/models.py:3024
 msgid "Minimum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3024
+#: part/models.py:3025
 msgid "Minimum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3030
+#: part/models.py:3031
 msgid "Maximum Purchase Cost"
 msgstr ""
 
-#: part/models.py:3031
+#: part/models.py:3032
 msgid "Maximum historical purchase cost"
 msgstr ""
 
-#: part/models.py:3037
+#: part/models.py:3038
 msgid "Minimum Internal Price"
 msgstr ""
 
-#: part/models.py:3038
+#: part/models.py:3039
 msgid "Minimum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3044
+#: part/models.py:3045
 msgid "Maximum Internal Price"
 msgstr ""
 
-#: part/models.py:3045
+#: part/models.py:3046
 msgid "Maximum cost based on internal price breaks"
 msgstr ""
 
-#: part/models.py:3051
+#: part/models.py:3052
 msgid "Minimum Supplier Price"
 msgstr ""
 
-#: part/models.py:3052
+#: part/models.py:3053
 msgid "Minimum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3058
+#: part/models.py:3059
 msgid "Maximum Supplier Price"
 msgstr ""
 
-#: part/models.py:3059
+#: part/models.py:3060
 msgid "Maximum price of part from external suppliers"
 msgstr ""
 
-#: part/models.py:3065
+#: part/models.py:3066
 msgid "Minimum Variant Cost"
 msgstr ""
 
-#: part/models.py:3066
+#: part/models.py:3067
 msgid "Calculated minimum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3072
+#: part/models.py:3073
 msgid "Maximum Variant Cost"
 msgstr ""
 
-#: part/models.py:3073
+#: part/models.py:3074
 msgid "Calculated maximum cost of variant parts"
 msgstr ""
 
-#: part/models.py:3080
+#: part/models.py:3081
 msgid "Override minimum cost"
 msgstr ""
 
-#: part/models.py:3087
+#: part/models.py:3088
 msgid "Override maximum cost"
 msgstr ""
 
-#: part/models.py:3094
+#: part/models.py:3095
 msgid "Calculated overall minimum cost"
 msgstr ""
 
-#: part/models.py:3101
+#: part/models.py:3102
 msgid "Calculated overall maximum cost"
 msgstr ""
 
-#: part/models.py:3107
+#: part/models.py:3108
 msgid "Minimum Sale Price"
 msgstr ""
 
-#: part/models.py:3108
+#: part/models.py:3109
 msgid "Minimum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3114
+#: part/models.py:3115
 msgid "Maximum Sale Price"
 msgstr ""
 
-#: part/models.py:3115
+#: part/models.py:3116
 msgid "Maximum sale price based on price breaks"
 msgstr ""
 
-#: part/models.py:3121
+#: part/models.py:3122
 msgid "Minimum Sale Cost"
 msgstr ""
 
-#: part/models.py:3122
+#: part/models.py:3123
 msgid "Minimum historical sale price"
 msgstr ""
 
-#: part/models.py:3128
+#: part/models.py:3129
 msgid "Maximum Sale Cost"
 msgstr ""
 
-#: part/models.py:3129
+#: part/models.py:3130
 msgid "Maximum historical sale price"
 msgstr ""
 
-#: part/models.py:3148
+#: part/models.py:3149
 msgid "Part for stocktake"
 msgstr ""
 
-#: part/models.py:3153
+#: part/models.py:3154
 msgid "Item Count"
 msgstr ""
 
-#: part/models.py:3154
+#: part/models.py:3155
 msgid "Number of individual stock entries at time of stocktake"
 msgstr ""
 
-#: part/models.py:3162
+#: part/models.py:3163
 msgid "Total available stock at time of stocktake"
 msgstr ""
 
-#: part/models.py:3166 part/models.py:3249
+#: part/models.py:3167 part/models.py:3250
 #: part/templates/part/part_scheduling.html:13
 #: report/templates/report/inventree_test_report_base.html:106
 #: templates/InvenTree/settings/plugin_settings.html:37
@@ -6687,342 +6727,342 @@ msgstr ""
 #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826
 #: templates/js/translated/pricing.js:950
 #: templates/js/translated/purchase_order.js:1732
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:2821
 msgid "Date"
 msgstr ""
 
-#: part/models.py:3167
+#: part/models.py:3168
 msgid "Date stocktake was performed"
 msgstr ""
 
-#: part/models.py:3175
+#: part/models.py:3176
 msgid "Additional notes"
 msgstr ""
 
-#: part/models.py:3185
+#: part/models.py:3186
 msgid "User who performed this stocktake"
 msgstr ""
 
-#: part/models.py:3191
+#: part/models.py:3192
 msgid "Minimum Stock Cost"
 msgstr ""
 
-#: part/models.py:3192
+#: part/models.py:3193
 msgid "Estimated minimum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3198
+#: part/models.py:3199
 msgid "Maximum Stock Cost"
 msgstr ""
 
-#: part/models.py:3199
+#: part/models.py:3200
 msgid "Estimated maximum cost of stock on hand"
 msgstr ""
 
-#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529
+#: part/models.py:3256 templates/InvenTree/settings/settings_staff_js.html:529
 msgid "Report"
 msgstr ""
 
-#: part/models.py:3256
+#: part/models.py:3257
 msgid "Stocktake report file (generated internally)"
 msgstr ""
 
-#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536
+#: part/models.py:3262 templates/InvenTree/settings/settings_staff_js.html:536
 msgid "Part Count"
 msgstr ""
 
-#: part/models.py:3262
+#: part/models.py:3263
 msgid "Number of parts covered by stocktake"
 msgstr ""
 
-#: part/models.py:3272
+#: part/models.py:3273
 msgid "User who requested this stocktake report"
 msgstr ""
 
-#: part/models.py:3434
+#: part/models.py:3435
 msgid "Invalid template name - must include at least one alphanumeric character"
 msgstr ""
 
-#: part/models.py:3445
+#: part/models.py:3446
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:3456
+#: part/models.py:3457
 #, fuzzy
 #| msgid "Attachment with this filename already exists"
 msgid "Test template with the same key already exists for part"
 msgstr "使用此文件名的附件已存在"
 
-#: part/models.py:3473 templates/js/translated/part.js:2879
+#: part/models.py:3474 templates/js/translated/part.js:2879
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:3474
+#: part/models.py:3475
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:3480
+#: part/models.py:3481
 msgid "Test Key"
 msgstr ""
 
-#: part/models.py:3481
+#: part/models.py:3482
 msgid "Simplified key for the test"
 msgstr ""
 
-#: part/models.py:3488
+#: part/models.py:3489
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:3489
+#: part/models.py:3490
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:3493
+#: part/models.py:3494
 msgid "Is this test enabled?"
 msgstr ""
 
-#: part/models.py:3498 templates/js/translated/part.js:2908
+#: part/models.py:3499 templates/js/translated/part.js:2908
 #: templates/js/translated/table_filters.js:477
 msgid "Required"
 msgstr ""
 
-#: part/models.py:3499
+#: part/models.py:3500
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:3504 templates/js/translated/part.js:2916
+#: part/models.py:3505 templates/js/translated/part.js:2916
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:3505
+#: part/models.py:3506
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:3510 templates/js/translated/part.js:2923
+#: part/models.py:3511 templates/js/translated/part.js:2923
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:3512
+#: part/models.py:3513
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:3559
+#: part/models.py:3560
 msgid "Checkbox parameters cannot have units"
 msgstr ""
 
-#: part/models.py:3564
+#: part/models.py:3565
 msgid "Checkbox parameters cannot have choices"
 msgstr ""
 
-#: part/models.py:3584
+#: part/models.py:3585
 #, fuzzy
 #| msgid "Key string must be unique"
 msgid "Choices must be unique"
 msgstr "关键字必须是唯一的"
 
-#: part/models.py:3601
+#: part/models.py:3602
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:3616
+#: part/models.py:3617
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:3623
+#: part/models.py:3624
 msgid "Physical units for this parameter"
 msgstr ""
 
-#: part/models.py:3631
+#: part/models.py:3632
 msgid "Parameter description"
 msgstr ""
 
-#: part/models.py:3637 templates/js/translated/part.js:1627
+#: part/models.py:3638 templates/js/translated/part.js:1627
 #: templates/js/translated/table_filters.js:821
 msgid "Checkbox"
 msgstr ""
 
-#: part/models.py:3638
+#: part/models.py:3639
 msgid "Is this parameter a checkbox?"
 msgstr ""
 
-#: part/models.py:3643 templates/js/translated/part.js:1636
+#: part/models.py:3644 templates/js/translated/part.js:1636
 msgid "Choices"
 msgstr ""
 
-#: part/models.py:3644
+#: part/models.py:3645
 msgid "Valid choices for this parameter (comma-separated)"
 msgstr ""
 
-#: part/models.py:3721
+#: part/models.py:3722
 #, fuzzy
 #| msgid "Invalid choice for parent build"
 msgid "Invalid choice for parameter value"
 msgstr "上级生产选项无效"
 
-#: part/models.py:3764
+#: part/models.py:3765
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:3772 part/models.py:3848 part/models.py:3849
+#: part/models.py:3773 part/models.py:3871 part/models.py:3872
 #: templates/InvenTree/settings/settings_staff_js.html:295
 msgid "Parameter Template"
 msgstr "参数模板"
 
-#: part/models.py:3777
+#: part/models.py:3778
 msgid "Data"
 msgstr ""
 
-#: part/models.py:3778
+#: part/models.py:3779
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:3878 templates/InvenTree/settings/settings_staff_js.html:304
 msgid "Default Value"
 msgstr "默认值"
 
-#: part/models.py:3856
+#: part/models.py:3879
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:3894
+#: part/models.py:3917
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:3895
+#: part/models.py:3918
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:3897
+#: part/models.py:3920
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "Level"
 msgstr ""
 
-#: part/models.py:3898
+#: part/models.py:3921
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:3988
+#: part/models.py:4011
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:3998
+#: part/models.py:4021
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:3999
+#: part/models.py:4022
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:4010
+#: part/models.py:4033
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:4016
+#: part/models.py:4039
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:4022
+#: part/models.py:4045
 msgid "This BOM item is consumable (it is not tracked in build orders)"
 msgstr ""
 
-#: part/models.py:4029 part/templates/part/upload_bom.html:55
+#: part/models.py:4052 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:4030
+#: part/models.py:4053
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:4037
+#: part/models.py:4060
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:4045
+#: part/models.py:4068
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:4051
+#: part/models.py:4074
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:4052
+#: part/models.py:4075
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:4057 templates/js/translated/table_filters.js:174
+#: part/models.py:4080 templates/js/translated/table_filters.js:174
 msgid "Validated"
 msgstr ""
 
-#: part/models.py:4058
+#: part/models.py:4081
 #, fuzzy
 #| msgid "Some stock items have been overallocated"
 msgid "This BOM item has been validated"
 msgstr "一些库存项已被过度分配"
 
-#: part/models.py:4063 part/templates/part/upload_bom.html:57
+#: part/models.py:4086 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:1054
 #: templates/js/translated/table_filters.js:178
 #: templates/js/translated/table_filters.js:211
 msgid "Gets inherited"
 msgstr ""
 
-#: part/models.py:4064
+#: part/models.py:4087
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:4069 part/templates/part/upload_bom.html:56
+#: part/models.py:4092 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:1046
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:4070
+#: part/models.py:4093
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:4155 stock/models.py:649
+#: part/models.py:4178 stock/models.py:649
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:4165 part/models.py:4167
+#: part/models.py:4188 part/models.py:4190
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:4307
+#: part/models.py:4330
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:4328
+#: part/models.py:4351
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:4341
+#: part/models.py:4364
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:4349
+#: part/models.py:4372
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:4365
+#: part/models.py:4388
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:4373
+#: part/models.py:4396
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:4374
+#: part/models.py:4397
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:4393
+#: part/models.py:4416
 msgid "Part relationship cannot be created between a part and itself"
 msgstr ""
 
-#: part/models.py:4398
+#: part/models.py:4421
 msgid "Duplicate relationship already exists"
 msgstr ""
 
@@ -7040,7 +7080,7 @@ msgstr ""
 msgid "Number of results recorded against this template"
 msgstr ""
 
-#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:392
+#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406
 msgid "Purchase currency of this stock item"
 msgstr ""
 
@@ -7526,7 +7566,7 @@ msgstr ""
 #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30
 #: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2179 users/models.py:191
+#: templates/js/translated/stock.js:2215 users/models.py:193
 msgid "Stocktake"
 msgstr ""
 
@@ -7890,7 +7930,7 @@ msgstr ""
 #: templates/InvenTree/settings/sidebar.html:51
 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145
 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059
-#: templates/js/translated/stock.js:2033 templates/navbar.html:31
+#: templates/js/translated/stock.js:2069 templates/navbar.html:31
 msgid "Stock"
 msgstr "库存"
 
@@ -7938,7 +7978,7 @@ msgstr "编辑"
 #: stock/templates/stock/item_base.html:446
 #: templates/js/translated/company.js:1693
 #: templates/js/translated/company.js:1703
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2245
 msgid "Last Updated"
 msgstr ""
 
@@ -8454,7 +8494,7 @@ msgstr ""
 msgid "Print a border around each label"
 msgstr ""
 
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:209
 msgid "Landscape"
 msgstr ""
 
@@ -8648,7 +8688,7 @@ msgstr ""
 msgid "Method"
 msgstr ""
 
-#: plugin/plugin.py:264
+#: plugin/plugin.py:270
 msgid "No author found"
 msgstr ""
 
@@ -8820,117 +8860,117 @@ msgstr ""
 msgid "Letter"
 msgstr ""
 
-#: report/models.py:176
+#: report/models.py:177
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:182
+#: report/models.py:183
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:189
+#: report/models.py:190
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:195
+#: report/models.py:196
 msgid "Report revision number (auto-increments)"
 msgstr ""
 
-#: report/models.py:203
+#: report/models.py:204
 #, fuzzy
 #| msgid "Default page size for PDF reports"
 msgid "Page size for PDF reports"
 msgstr "PDF 报表默认页面大小"
 
-#: report/models.py:209
+#: report/models.py:210
 msgid "Render report in landscape orientation"
 msgstr ""
 
-#: report/models.py:317
+#: report/models.py:318
 msgid "Pattern for generating report filenames"
 msgstr ""
 
-#: report/models.py:324
+#: report/models.py:325
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:346
+#: report/models.py:347
 msgid "StockItem query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:353
+#: report/models.py:354
 msgid "Include Installed Tests"
 msgstr ""
 
-#: report/models.py:355
+#: report/models.py:356
 msgid "Include test results for stock items installed inside assembled item"
 msgstr ""
 
-#: report/models.py:423
+#: report/models.py:424
 msgid "Build Filters"
 msgstr ""
 
-#: report/models.py:424
+#: report/models.py:425
 msgid "Build query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:463
+#: report/models.py:464
 msgid "Part Filters"
 msgstr "商品过滤器"
 
-#: report/models.py:464
+#: report/models.py:465
 msgid "Part query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: report/models.py:496
+#: report/models.py:497
 msgid "Purchase order query filters"
 msgstr ""
 
-#: report/models.py:532
+#: report/models.py:533
 msgid "Sales order query filters"
 msgstr ""
 
-#: report/models.py:568
+#: report/models.py:569
 msgid "Return order query filters"
 msgstr ""
 
-#: report/models.py:640
+#: report/models.py:641
 #, fuzzy
 #| msgid "Attachment with this filename already exists"
 msgid "Snippet file with this name already exists"
 msgstr "使用此文件名的附件已存在"
 
-#: report/models.py:647
+#: report/models.py:648
 msgid "Snippet"
 msgstr ""
 
-#: report/models.py:648
+#: report/models.py:649
 msgid "Report snippet file"
 msgstr ""
 
-#: report/models.py:655
+#: report/models.py:656
 msgid "Snippet file description"
 msgstr ""
 
-#: report/models.py:713
+#: report/models.py:714
 #, fuzzy
 #| msgid "Attachment with this filename already exists"
 msgid "Asset file with this name already exists"
 msgstr "使用此文件名的附件已存在"
 
-#: report/models.py:721
+#: report/models.py:722
 msgid "Asset"
 msgstr ""
 
-#: report/models.py:722
+#: report/models.py:723
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:729
+#: report/models.py:730
 msgid "Asset file description"
 msgstr ""
 
-#: report/models.py:751
+#: report/models.py:752
 #, fuzzy
 #| msgid "Query filters (comma-separated list of key=value pairs),"
 msgid "stock location query filters (comma-separated list of key=value pairs)"
@@ -9003,12 +9043,12 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:102
-#: templates/js/translated/stock.js:1485
+#: templates/js/translated/stock.js:1492
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:103
-#: stock/models.py:2432
+#: stock/models.py:2435
 msgid "Result"
 msgstr ""
 
@@ -9037,7 +9077,7 @@ msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:168
 #: stock/admin.py:162 templates/js/translated/stock.js:700
-#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074
+#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110
 msgid "Serial"
 msgstr ""
 
@@ -9127,72 +9167,72 @@ msgstr "删除模板"
 
 #: stock/admin.py:256 stock/models.py:886
 #: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2193 users/models.py:113
+#: templates/js/translated/stock.js:2229 users/models.py:113
 msgid "Expiry Date"
 msgstr ""
 
-#: stock/api.py:281
+#: stock/api.py:284
 #, fuzzy
 #| msgid "Print Order Reports"
 msgid "Filter by location depth"
 msgstr "打印订单报表"
 
-#: stock/api.py:301
+#: stock/api.py:304
 msgid "Include sub-locations in filtered results"
 msgstr ""
 
-#: stock/api.py:322
+#: stock/api.py:325
 #, fuzzy
 #| msgid "Print actions"
 msgid "Parent Location"
 msgstr "打印操作"
 
-#: stock/api.py:323
+#: stock/api.py:326
 #, fuzzy
 #| msgid "Delete location"
 msgid "Filter by parent location"
 msgstr "删除仓储地"
 
-#: stock/api.py:568 templates/js/translated/table_filters.js:427
+#: stock/api.py:579 templates/js/translated/table_filters.js:427
 msgid "External Location"
 msgstr ""
 
-#: stock/api.py:753
+#: stock/api.py:767
 #, fuzzy
 #| msgid "Part name"
 msgid "Part Tree"
 msgstr "商品名称"
 
-#: stock/api.py:781
+#: stock/api.py:797
 msgid "Expiry date before"
 msgstr ""
 
-#: stock/api.py:785
+#: stock/api.py:801
 msgid "Expiry date after"
 msgstr ""
 
-#: stock/api.py:788 stock/templates/stock/item_base.html:439
+#: stock/api.py:804 stock/templates/stock/item_base.html:439
 #: templates/js/translated/table_filters.js:441
 msgid "Stale"
 msgstr ""
 
-#: stock/api.py:874
+#: stock/api.py:891
 msgid "Quantity is required"
 msgstr ""
 
-#: stock/api.py:880
+#: stock/api.py:897
 msgid "Valid part must be supplied"
 msgstr ""
 
-#: stock/api.py:911
+#: stock/api.py:928
 msgid "The given supplier part does not exist"
 msgstr ""
 
-#: stock/api.py:921
+#: stock/api.py:938
 msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
 msgstr ""
 
-#: stock/api.py:952
+#: stock/api.py:969
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
@@ -9220,7 +9260,7 @@ msgstr "仓储地点"
 
 #: stock/models.py:126 stock/templates/stock/location.html:179
 #: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
-#: users/models.py:192
+#: users/models.py:194
 msgid "Stock Locations"
 msgstr "仓储地点"
 
@@ -9237,7 +9277,7 @@ msgstr ""
 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
 msgstr ""
 
-#: stock/models.py:174 templates/js/translated/stock.js:2745
+#: stock/models.py:174 templates/js/translated/stock.js:2781
 #: templates/js/translated/table_filters.js:243
 msgid "External"
 msgstr ""
@@ -9246,7 +9286,7 @@ msgstr ""
 msgid "This is an external stock location"
 msgstr ""
 
-#: stock/models.py:181 templates/js/translated/stock.js:2754
+#: stock/models.py:181 templates/js/translated/stock.js:2790
 #: templates/js/translated/table_filters.js:246
 #, fuzzy
 #| msgid "Location"
@@ -9267,7 +9307,7 @@ msgstr ""
 msgid "Stock items cannot be located into structural stock locations!"
 msgstr ""
 
-#: stock/models.py:656 stock/serializers.py:276
+#: stock/models.py:656 stock/serializers.py:290
 msgid "Stock item cannot be created for virtual parts"
 msgstr ""
 
@@ -9313,7 +9353,7 @@ msgstr ""
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:786 stock/serializers.py:1337
+#: stock/models.py:786 stock/serializers.py:1351
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
@@ -9325,7 +9365,7 @@ msgstr ""
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:830 stock/serializers.py:1320
+#: stock/models.py:830 stock/serializers.py:1334
 msgid "Batch code for this stock item"
 msgstr ""
 
@@ -9407,7 +9447,7 @@ msgstr ""
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1501 stock/serializers.py:515
+#: stock/models.py:1501 stock/serializers.py:529
 msgid "Serial numbers already exist"
 msgstr "序列号已存在"
 
@@ -9441,7 +9481,7 @@ msgstr ""
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1639 stock/serializers.py:1226
+#: stock/models.py:1639 stock/serializers.py:1240
 msgid "Duplicate stock items"
 msgstr ""
 
@@ -9465,226 +9505,262 @@ msgstr ""
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2399
+#: stock/models.py:2402
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2405
+#: stock/models.py:2408
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2432
+#: stock/models.py:2435
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2439
+#: stock/models.py:2442
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2447
+#: stock/models.py:2450
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2451
+#: stock/models.py:2454
 msgid "Test notes"
 msgstr ""
 
-#: stock/serializers.py:97
+#: stock/models.py:2462 templates/js/translated/stock.js:1545
+#, fuzzy
+#| msgid "Destination"
+msgid "Test station"
+msgstr "目的地"
+
+#: stock/models.py:2463
+msgid "The identifier of the test station where the test was performed"
+msgstr ""
+
+#: stock/models.py:2469
+msgid "Started"
+msgstr ""
+
+#: stock/models.py:2470
+#, fuzzy
+#| msgid "Timestamp of last update"
+msgid "The timestamp of the test start"
+msgstr "最后一次更新时间"
+
+#: stock/models.py:2476
+#, fuzzy
+#| msgid "Danish"
+msgid "Finished"
+msgstr "丹麦语"
+
+#: stock/models.py:2477
+#, fuzzy
+#| msgid "Timestamp of last update"
+msgid "The timestamp of the test finish"
+msgstr "最后一次更新时间"
+
+#: stock/serializers.py:100
 #, fuzzy
 #| msgid "User or group responsible for this order"
 msgid "Test template for this result"
 msgstr "负责此订单的用户或群组"
 
-#: stock/serializers.py:116
+#: stock/serializers.py:119
 #, fuzzy
 #| msgid "Allocation items must be provided"
 msgid "Template ID or test name must be provided"
 msgstr "必须提供分配的项"
 
-#: stock/serializers.py:170
+#: stock/serializers.py:151
+msgid "The test finished time cannot be earlier than the test started time"
+msgstr ""
+
+#: stock/serializers.py:184
 msgid "Serial number is too large"
 msgstr ""
 
-#: stock/serializers.py:268
+#: stock/serializers.py:282
 msgid "Use pack size when adding: the quantity defined is the number of packs"
 msgstr ""
 
-#: stock/serializers.py:388
+#: stock/serializers.py:402
 msgid "Purchase price of this stock item, per unit or pack"
 msgstr ""
 
-#: stock/serializers.py:450
+#: stock/serializers.py:464
 msgid "Enter number of stock items to serialize"
 msgstr ""
 
-#: stock/serializers.py:463
+#: stock/serializers.py:477
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({q})"
 msgstr ""
 
-#: stock/serializers.py:470
+#: stock/serializers.py:484
 msgid "Enter serial numbers for new items"
 msgstr "输入新项目的序列号"
 
-#: stock/serializers.py:481 stock/serializers.py:1183 stock/serializers.py:1439
+#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453
 msgid "Destination stock location"
 msgstr "目标库存位置"
 
-#: stock/serializers.py:488
+#: stock/serializers.py:502
 msgid "Optional note field"
 msgstr ""
 
-#: stock/serializers.py:498
+#: stock/serializers.py:512
 msgid "Serial numbers cannot be assigned to this part"
 msgstr ""
 
-#: stock/serializers.py:553
+#: stock/serializers.py:567
 msgid "Select stock item to install"
 msgstr ""
 
-#: stock/serializers.py:560
+#: stock/serializers.py:574
 msgid "Quantity to Install"
 msgstr ""
 
-#: stock/serializers.py:561
+#: stock/serializers.py:575
 #, fuzzy
 #| msgid "Enter quantity for build output"
 msgid "Enter the quantity of items to install"
 msgstr "输入生产产出数量"
 
-#: stock/serializers.py:566 stock/serializers.py:646 stock/serializers.py:742
-#: stock/serializers.py:792
+#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756
+#: stock/serializers.py:806
 msgid "Add transaction note (optional)"
 msgstr "添加交易备注 (可选)"
 
-#: stock/serializers.py:574
+#: stock/serializers.py:588
 #, fuzzy
 #| msgid "Quantity must be a positive number"
 msgid "Quantity to install must be at least 1"
 msgstr "数量必须大于0"
 
-#: stock/serializers.py:582
+#: stock/serializers.py:596
 msgid "Stock item is unavailable"
 msgstr ""
 
-#: stock/serializers.py:593
+#: stock/serializers.py:607
 msgid "Selected part is not in the Bill of Materials"
 msgstr ""
 
-#: stock/serializers.py:606
+#: stock/serializers.py:620
 #, fuzzy
 #| msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
 msgid "Quantity to install must not exceed available quantity"
 msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})"
 
-#: stock/serializers.py:641
+#: stock/serializers.py:655
 msgid "Destination location for uninstalled item"
 msgstr ""
 
-#: stock/serializers.py:676
+#: stock/serializers.py:690
 msgid "Select part to convert stock item into"
 msgstr ""
 
-#: stock/serializers.py:689
+#: stock/serializers.py:703
 msgid "Selected part is not a valid option for conversion"
 msgstr ""
 
-#: stock/serializers.py:706
+#: stock/serializers.py:720
 msgid "Cannot convert stock item with assigned SupplierPart"
 msgstr ""
 
-#: stock/serializers.py:737
+#: stock/serializers.py:751
 msgid "Destination location for returned item"
 msgstr ""
 
-#: stock/serializers.py:774
+#: stock/serializers.py:788
 #, fuzzy
 #| msgid "Selected stock item not found in BOM"
 msgid "Select stock items to change status"
 msgstr "在BOM中找不到选定的库存项"
 
-#: stock/serializers.py:780
+#: stock/serializers.py:794
 #, fuzzy
 #| msgid "Stock item created"
 msgid "No stock items selected"
 msgstr "库存项已创建"
 
-#: stock/serializers.py:876 stock/serializers.py:939
+#: stock/serializers.py:890 stock/serializers.py:953
 #: stock/templates/stock/location.html:165
 #: stock/templates/stock/location.html:213
 #: stock/templates/stock/location_sidebar.html:5
 msgid "Sublocations"
 msgstr ""
 
-#: stock/serializers.py:1055
+#: stock/serializers.py:1069
 msgid "Part must be salable"
 msgstr ""
 
-#: stock/serializers.py:1059
+#: stock/serializers.py:1073
 msgid "Item is allocated to a sales order"
 msgstr ""
 
-#: stock/serializers.py:1063
+#: stock/serializers.py:1077
 msgid "Item is allocated to a build order"
 msgstr ""
 
-#: stock/serializers.py:1087
+#: stock/serializers.py:1101
 msgid "Customer to assign stock items"
 msgstr ""
 
-#: stock/serializers.py:1093
+#: stock/serializers.py:1107
 msgid "Selected company is not a customer"
 msgstr ""
 
-#: stock/serializers.py:1101
+#: stock/serializers.py:1115
 msgid "Stock assignment notes"
 msgstr ""
 
-#: stock/serializers.py:1111 stock/serializers.py:1365
+#: stock/serializers.py:1125 stock/serializers.py:1379
 msgid "A list of stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1190
+#: stock/serializers.py:1204
 msgid "Stock merging notes"
 msgstr ""
 
-#: stock/serializers.py:1195
+#: stock/serializers.py:1209
 msgid "Allow mismatched suppliers"
 msgstr ""
 
-#: stock/serializers.py:1196
+#: stock/serializers.py:1210
 msgid "Allow stock items with different supplier parts to be merged"
 msgstr ""
 
-#: stock/serializers.py:1201
+#: stock/serializers.py:1215
 msgid "Allow mismatched status"
 msgstr ""
 
-#: stock/serializers.py:1202
+#: stock/serializers.py:1216
 msgid "Allow stock items with different status codes to be merged"
 msgstr ""
 
-#: stock/serializers.py:1212
+#: stock/serializers.py:1226
 msgid "At least two stock items must be provided"
 msgstr ""
 
-#: stock/serializers.py:1279
+#: stock/serializers.py:1293
 #, fuzzy
 #| msgid "Change"
 msgid "No Change"
 msgstr "更改"
 
-#: stock/serializers.py:1308
+#: stock/serializers.py:1322
 msgid "StockItem primary key value"
 msgstr ""
 
-#: stock/serializers.py:1327
+#: stock/serializers.py:1341
 #, fuzzy
 #| msgid "Stock item created"
 msgid "Stock item status code"
 msgstr "库存项已创建"
 
-#: stock/serializers.py:1355
+#: stock/serializers.py:1369
 msgid "Stock transaction notes"
 msgstr ""
 
@@ -9709,7 +9785,7 @@ msgstr ""
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:283
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286
 msgid "Delete Test Data"
 msgstr ""
 
@@ -9725,15 +9801,15 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:271
+#: stock/templates/stock/item.html:274
 msgid "Delete all test results for this stock item"
 msgstr ""
 
-#: stock/templates/stock/item.html:301 templates/js/translated/stock.js:1662
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698
 msgid "Add Test Result"
 msgstr ""
 
@@ -9756,17 +9832,17 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785
+#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821
 msgid "Count stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:81
-#: templates/js/translated/stock.js:1767
+#: templates/js/translated/stock.js:1803
 msgid "Add stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:82
-#: templates/js/translated/stock.js:1776
+#: templates/js/translated/stock.js:1812
 msgid "Remove stock"
 msgstr ""
 
@@ -9775,12 +9851,12 @@ msgid "Serialize stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794
+#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830
 msgid "Transfer stock"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1848
+#: templates/js/translated/stock.js:1884
 msgid "Assign to customer"
 msgstr ""
 
@@ -9921,7 +9997,7 @@ msgid "No stocktake performed"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:507
-#: templates/js/translated/stock.js:1915
+#: templates/js/translated/stock.js:1951
 #, fuzzy
 #| msgid "Stock Item"
 msgid "stock item"
@@ -10030,7 +10106,7 @@ msgid "New Location"
 msgstr "新建仓储地点"
 
 #: stock/templates/stock/location.html:287
-#: templates/js/translated/stock.js:2536
+#: templates/js/translated/stock.js:2572
 #, fuzzy
 #| msgid "Stock Location"
 msgid "stock location"
@@ -10553,7 +10629,7 @@ msgstr ""
 #: templates/InvenTree/settings/settings_staff_js.html:81
 #: templates/js/translated/forms.js:547 templates/js/translated/helpers.js:105
 #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:245 users/models.py:411
+#: templates/js/translated/stock.js:245 users/models.py:413
 msgid "Delete"
 msgstr "删除"
 
@@ -10664,7 +10740,7 @@ msgid "Delete Location Type"
 msgstr "删除仓储地"
 
 #: templates/InvenTree/settings/settings_staff_js.html:500
-#: templates/InvenTree/settings/stock.html:36
+#: templates/InvenTree/settings/stock.html:37
 #, fuzzy
 #| msgid "New Location"
 msgid "New Location Type"
@@ -10727,7 +10803,7 @@ msgstr "销售订单设置"
 msgid "Stock Settings"
 msgstr "库存设置"
 
-#: templates/InvenTree/settings/stock.html:32
+#: templates/InvenTree/settings/stock.html:33
 #, fuzzy
 #| msgid "Stock Locations"
 msgid "Stock Location Types"
@@ -12052,7 +12128,7 @@ msgstr ""
 #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480
 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171
 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742
-#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674
+#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710
 msgid "Select"
 msgstr ""
 
@@ -12064,7 +12140,7 @@ msgstr ""
 msgid "Progress"
 msgstr ""
 
-#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006
+#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042
 msgid "No user information"
 msgstr "没有用户信息"
 
@@ -12137,7 +12213,7 @@ msgstr "库存项"
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1829
+#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865
 msgid "Order stock"
 msgstr ""
 
@@ -12521,15 +12597,15 @@ msgstr ""
 msgid "Clear input"
 msgstr ""
 
-#: templates/js/translated/forms.js:3075
+#: templates/js/translated/forms.js:3091
 msgid "File Column"
 msgstr ""
 
-#: templates/js/translated/forms.js:3075
+#: templates/js/translated/forms.js:3091
 msgid "Field Name"
 msgstr ""
 
-#: templates/js/translated/forms.js:3087
+#: templates/js/translated/forms.js:3103
 msgid "Select Columns"
 msgstr ""
 
@@ -13034,7 +13110,7 @@ msgid "No category"
 msgstr "没有分类"
 
 #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661
-#: templates/js/translated/stock.js:2633
+#: templates/js/translated/stock.js:2669
 msgid "Display as list"
 msgstr ""
 
@@ -13048,7 +13124,7 @@ msgstr ""
 msgid "No subcategories found"
 msgstr "子类别"
 
-#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653
+#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689
 msgid "Display as tree"
 msgstr ""
 
@@ -13068,12 +13144,12 @@ msgstr ""
 msgid "results"
 msgstr ""
 
-#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1446
+#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1447
-#: templates/js/translated/stock.js:1692
+#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454
+#: templates/js/translated/stock.js:1728
 msgid "Delete test result"
 msgstr ""
 
@@ -13702,7 +13778,7 @@ msgstr ""
 
 #: templates/js/translated/sales_order.js:1623
 #: templates/js/translated/sales_order.js:1710
-#: templates/js/translated/stock.js:1737
+#: templates/js/translated/stock.js:1773
 msgid "Shipped to customer"
 msgstr ""
 
@@ -13948,7 +14024,7 @@ msgstr ""
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1042 users/models.py:401
+#: templates/js/translated/stock.js:1042 users/models.py:403
 msgid "Add"
 msgstr "添加"
 
@@ -13964,7 +14040,7 @@ msgstr ""
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263
+#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299
 msgid "Select Stock Items"
 msgstr "选择库存项"
 
@@ -13988,274 +14064,282 @@ msgstr ""
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1447
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1443
+#: templates/js/translated/stock.js:1450
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1466
+#: templates/js/translated/stock.js:1473
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1530
+#: templates/js/translated/stock.js:1537
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1677
+#: templates/js/translated/stock.js:1550
+msgid "Test started"
+msgstr ""
+
+#: templates/js/translated/stock.js:1559
+msgid "Test finished"
+msgstr ""
+
+#: templates/js/translated/stock.js:1713
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1733
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1729
+#: templates/js/translated/stock.js:1765
 msgid "In production"
 msgstr "正在生产"
 
-#: templates/js/translated/stock.js:1733
+#: templates/js/translated/stock.js:1769
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1741
+#: templates/js/translated/stock.js:1777
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1747
+#: templates/js/translated/stock.js:1783
 msgid "No stock location set"
 msgstr "未设置仓储地点"
 
-#: templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1839
 msgid "Change stock status"
 msgstr ""
 
-#: templates/js/translated/stock.js:1812
+#: templates/js/translated/stock.js:1848
 msgid "Merge stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1861
+#: templates/js/translated/stock.js:1897
 msgid "Delete stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:1916
+#: templates/js/translated/stock.js:1952
 #, fuzzy
 #| msgid "Stock Items"
 msgid "stock items"
 msgstr "库存项"
 
-#: templates/js/translated/stock.js:1921
+#: templates/js/translated/stock.js:1957
 #, fuzzy
 #| msgid "Stock Location"
 msgid "Scan to location"
 msgstr "仓储地点"
 
-#: templates/js/translated/stock.js:1932
+#: templates/js/translated/stock.js:1968
 #, fuzzy
 #| msgid "Stock Locations"
 msgid "Stock Actions"
 msgstr "仓储地点"
 
-#: templates/js/translated/stock.js:1976
+#: templates/js/translated/stock.js:2012
 #, fuzzy
 #| msgid "Installed into assembly"
 msgid "Load installed items"
 msgstr "安装到组装中"
 
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2090
 msgid "Stock item is in production"
 msgstr "库存品正在生产"
 
-#: templates/js/translated/stock.js:2059
+#: templates/js/translated/stock.js:2095
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:2062
+#: templates/js/translated/stock.js:2098
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:2065
+#: templates/js/translated/stock.js:2101
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:2067
+#: templates/js/translated/stock.js:2103
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:2069
+#: templates/js/translated/stock.js:2105
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:2072
+#: templates/js/translated/stock.js:2108
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2074
+#: templates/js/translated/stock.js:2110
 #, fuzzy
 #| msgid "Accept as consumed by this build order"
 msgid "Stock item has been consumed by a build order"
 msgstr "接受此构建订单所消耗的内容"
 
-#: templates/js/translated/stock.js:2078
+#: templates/js/translated/stock.js:2114
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:2080
+#: templates/js/translated/stock.js:2116
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:2085
+#: templates/js/translated/stock.js:2121
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2087
+#: templates/js/translated/stock.js:2123
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/stock.js:2125
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2093
+#: templates/js/translated/stock.js:2129
 #: templates/js/translated/table_filters.js:350
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:2258
+#: templates/js/translated/stock.js:2294
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:2305
+#: templates/js/translated/stock.js:2341
 #, fuzzy
 #| msgid "Stock Source"
 msgid "Stock Value"
 msgstr "库存来源"
 
-#: templates/js/translated/stock.js:2433
+#: templates/js/translated/stock.js:2469
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:2537
+#: templates/js/translated/stock.js:2573
 #, fuzzy
 #| msgid "Stock Locations"
 msgid "stock locations"
 msgstr "仓储地点"
 
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2728
 #, fuzzy
 #| msgid "Stock Locations"
 msgid "Load Sublocations"
 msgstr "仓储地点"
 
-#: templates/js/translated/stock.js:2810
+#: templates/js/translated/stock.js:2846
 msgid "Details"
 msgstr "详情"
 
-#: templates/js/translated/stock.js:2814
+#: templates/js/translated/stock.js:2850
 #, fuzzy
 #| msgid "Change"
 msgid "No changes"
 msgstr "更改"
 
-#: templates/js/translated/stock.js:2826
+#: templates/js/translated/stock.js:2862
 msgid "Part information unavailable"
 msgstr ""
 
-#: templates/js/translated/stock.js:2848
+#: templates/js/translated/stock.js:2884
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2865
+#: templates/js/translated/stock.js:2901
 #, fuzzy
 #| msgid "Sales Order Settings"
 msgid "Build order no longer exists"
 msgstr "销售订单设置"
 
-#: templates/js/translated/stock.js:2880
+#: templates/js/translated/stock.js:2916
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2897
+#: templates/js/translated/stock.js:2933
 #, fuzzy
 #| msgid "Sales Order Settings"
 msgid "Sales Order no longer exists"
 msgstr "销售订单设置"
 
-#: templates/js/translated/stock.js:2914
+#: templates/js/translated/stock.js:2950
 msgid "Return Order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2969
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2951
+#: templates/js/translated/stock.js:2987
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2969
+#: templates/js/translated/stock.js:3005
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2977
+#: templates/js/translated/stock.js:3013
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:3049
+#: templates/js/translated/stock.js:3085
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139
+#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3161
+#: templates/js/translated/stock.js:3197
 msgid "Select stock item to uninstall"
 msgstr ""
 
-#: templates/js/translated/stock.js:3182
+#: templates/js/translated/stock.js:3218
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3183
+#: templates/js/translated/stock.js:3219
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:3185
+#: templates/js/translated/stock.js:3221
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3186
+#: templates/js/translated/stock.js:3222
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:3187
+#: templates/js/translated/stock.js:3223
 msgid "The Stock Item is not already installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:3224
 msgid "The Stock Item is tracked by either a batch code or serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:3201
+#: templates/js/translated/stock.js:3237
 msgid "Select part to install"
 msgstr ""
 
-#: templates/js/translated/stock.js:3264
+#: templates/js/translated/stock.js:3300
 #, fuzzy
 #| msgid "Select Stock Items"
 msgid "Select one or more stock items"
 msgstr "选择库存项"
 
-#: templates/js/translated/stock.js:3277
+#: templates/js/translated/stock.js:3313
 #, fuzzy
 #| msgid "Select Stock Items"
 msgid "Selected stock items"
 msgstr "选择库存项"
 
-#: templates/js/translated/stock.js:3281
+#: templates/js/translated/stock.js:3317
 #, fuzzy
 #| msgid "Stock Settings"
 msgid "Change Stock Status"
@@ -14619,7 +14703,7 @@ msgstr ""
 msgid "New Notifications"
 msgstr ""
 
-#: templates/navbar.html:144 users/models.py:188
+#: templates/navbar.html:144 users/models.py:190
 msgid "Admin"
 msgstr "管理员"
 
@@ -14872,35 +14956,35 @@ msgstr ""
 msgid "Revoked"
 msgstr ""
 
-#: users/models.py:384
+#: users/models.py:386
 msgid "Permission set"
 msgstr "权限设置"
 
-#: users/models.py:393
+#: users/models.py:395
 msgid "Group"
 msgstr "群组"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "View"
 msgstr "视图"
 
-#: users/models.py:397
+#: users/models.py:399
 msgid "Permission to view items"
 msgstr "查看项目权限"
 
-#: users/models.py:401
+#: users/models.py:403
 msgid "Permission to add items"
 msgstr "添加项目权限"
 
-#: users/models.py:405
+#: users/models.py:407
 msgid "Change"
 msgstr "更改"
 
-#: users/models.py:407
+#: users/models.py:409
 msgid "Permissions to edit items"
 msgstr "编辑项目权限"
 
-#: users/models.py:413
+#: users/models.py:415
 msgid "Permission to delete items"
 msgstr "删除项目权限"
 
diff --git a/src/frontend/src/locales/bg/messages.po b/src/frontend/src/locales/bg/messages.po
index a456bc3de549..da4a0f5bcb1a 100644
--- a/src/frontend/src/locales/bg/messages.po
+++ b/src/frontend/src/locales/bg/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: bg\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 01:59\n"
 "Last-Translator: \n"
 "Language-Team: Bulgarian\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/cs/messages.po b/src/frontend/src/locales/cs/messages.po
index b3c341f3c634..15f762658427 100644
--- a/src/frontend/src/locales/cs/messages.po
+++ b/src/frontend/src/locales/cs/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: cs\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 01:59\n"
 "Last-Translator: \n"
 "Language-Team: Czech\n"
 "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/da/messages.po b/src/frontend/src/locales/da/messages.po
index 5b5353d2cadc..f4df4b4aa02d 100644
--- a/src/frontend/src/locales/da/messages.po
+++ b/src/frontend/src/locales/da/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: da\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 01:59\n"
 "Last-Translator: \n"
 "Language-Team: Danish\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/de/messages.po b/src/frontend/src/locales/de/messages.po
index 42199dd9b8e9..8e9ac0413a92 100644
--- a/src/frontend/src/locales/de/messages.po
+++ b/src/frontend/src/locales/de/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: de\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 01:59\n"
 "Last-Translator: \n"
 "Language-Team: German\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Titel"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr "Kopiert"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr "Kopieren"
 
@@ -42,16 +42,16 @@ msgstr "Verknüpftes Bild von diesem Teil entfernen?"
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr "Entfernen"
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr "Leeren"
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr "Vorschau nicht verfügbar, klicke \"Vorschau neu laden\"."
 msgid "PDF Preview"
 msgstr "PDF Vorschau"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr "Fehler beim Laden der Vorlage"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr "Fehler beim Speichern der Vorlage"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr "Vorschau speichern & neu laden?"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr "Bist du sicher, dass du die Vorschau speichern & neu Laden möchtest?"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr "Um die Vorschau zu erstellen, muss die Vorlage auf dem Server mit deiner geänderten Version ersetzt werden. Das kann zu Fehlern bei Etiketten führen, wenn sie aktiv genutzt werden. Möchtest du fortfahren?"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr "Speichern & Neu laden"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr "Vorschau aktualisiert"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr "Die Vorlage wurde erfolgreich aktualisiert."
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr "Vorschau neu laden"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr "Benutze die aktuell auf dem Server gespeicherte Vorlage"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr "Vorschau speichern & neu laden"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr "Die aktuelle Vorlage speichern und die Vorschau neu laden"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr "Wähle"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr "zur Vorschau"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr "Fehler bei Darstellung der Vorlage"
 
@@ -221,21 +221,21 @@ msgstr "Fehler bei Darstellung der Vorlage"
 msgid "Form Error"
 msgstr "Formularfehler"
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Abgeschlossen"
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr "Formularfehler vorhanden"
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr "Aktualisieren"
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "Löschen"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Anmeldung erfolgreich"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Willkommen zurück!"
 
@@ -268,13 +268,13 @@ msgstr "Willkommen zurück!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Login fehlgeschlagen"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Überprüfen Sie Ihre Eingabe und versuchen Sie es erneut."
@@ -284,46 +284,46 @@ msgstr "Überprüfen Sie Ihre Eingabe und versuchen Sie es erneut."
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Mail erfolgreich gesendet"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Prüfen Sie Ihren Posteingang auf den Anmeldelink. Wenn Sie ein Konto haben, erhalten Sie einen Anmeldelink. Prüfen Sie auch den Spam."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Eingabefehler"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr "Oder mit anderen Methoden fortfahren"
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Nutzername"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr "Ihr Benutzername"
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Passwort"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Dein Passwort"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Passwort zurücksetzen"
@@ -336,69 +336,69 @@ msgstr "Passwort zurücksetzen"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "Mail"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Wir werden Ihnen einen Link für die Anmeldung senden"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Mail erhalten"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr "Benutzername und Passwort benutzen"
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr "Anmelden"
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr "E-Mail senden"
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr "Registrierung erfolgreich"
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr "Bitte bestätigen Sie Ihre E-Mail-Adresse um die Registrierung abzuschließen"
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr "Dies wird zur Bestätigung verwendet"
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr "Passwort wiederholen"
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr "Passwort erneut eingeben"
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr "Registrieren"
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr "Oder SSO verwenden"
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr "Nicht registriert?"
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr "Zurück zur Anmeldung"
 
@@ -409,9 +409,9 @@ msgstr "Adresse"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "Name: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr "Status: <0>worker</0> ({0}), <1>Plugins</1>{1}"
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr "Status: <0>worker</0> ({0}), <1>Plugins</1>{1}"
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Fehler"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr "Element löschen"
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr "Duplizieren"
@@ -863,7 +863,7 @@ msgstr "Benutzereinstellungen"
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr "Einstellungen"
 
@@ -950,7 +950,7 @@ msgstr "Als gelesen markieren"
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr "Teil-Kategorien"
 
@@ -988,7 +988,7 @@ msgstr "Keine Ergebnisse für Suchanfrage verfügbar"
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "Lagerorte"
 
@@ -1007,7 +1007,7 @@ msgstr "Unbekanntes Modell: {model}"
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr "Teil"
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "Teile"
 
@@ -1043,7 +1043,7 @@ msgstr "Testvorlagen für Teil"
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr "Zuliefererteil"
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr "Zuliefererteile"
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr "Herstellerteil"
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr "Herstellerteile"
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr "Teilkategorie"
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr "Lagerartikel"
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "Lagerartikel"
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr "Einkaufsbestellung"
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Nachbestellungen"
@@ -1159,14 +1159,14 @@ msgstr "Bestellpositionen"
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr "Verkaufsauftrag"
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Aufträge"
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr "Rückgabe Auftrag"
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr "Sendung"
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr "Lager"
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr "Seriennummer"
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr "Dashboard"
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr "Artikel aus Liste entfernen"
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr "Lagerort"
 
@@ -2328,10 +2328,6 @@ msgstr "Lagerartikel aktualisiert"
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr "Auf Lager"
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr "Aktionen"
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr "Hinzufügen"
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr "Anzahl"
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr "Bestand zählen"
 
@@ -2505,7 +2505,7 @@ msgstr "Element gelöscht"
 msgid "Are you sure you want to delete this item?"
 msgstr "Sind Sie sicher, dass Sie dieses Element löschen möchten?"
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr "Prüfe ob Sie bereits angemeldet sind"
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr "Kundenspezifische Einheiten"
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr "Melden"
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr "Stückliste"
 
@@ -3154,7 +3154,7 @@ msgstr "Barcode"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr "Preise"
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr "Berichte"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr "Inventur"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr "Zu Benutzereinstellungen wechseln"
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr "Unvollständige Endprodukte"
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr "Anhänge"
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr "Notizen"
 
@@ -3443,8 +3439,8 @@ msgstr "Lieferant"
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr "Hersteller"
@@ -3453,6 +3449,7 @@ msgstr "Hersteller"
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr "Unternehmen bearbeiten"
 msgid "Company Actions"
 msgstr "Firmen-Aktionen"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr "Herstellerteil Details"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr "Parameter"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr "Lieferanten"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr "Herstellerteil bearbeiten"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr "Herstellerteil Aktionen"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr "Herstellerteil"
 
@@ -3549,7 +3546,7 @@ msgstr "Art.-Nr."
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr "Verpackung"
 
@@ -3590,130 +3587,130 @@ msgstr "Zuliefererteil Aktionen"
 msgid "Edit Supplier Part"
 msgstr "Zuliefererteil bearbeiten"
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr "Pfad"
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr "Übergeordnete Kategorie"
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr "Unterkategorien"
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr "Strukturell"
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr "Übergeordneter Standard-Standort"
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr "Standard-Lagerort"
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr "Oberste Teile-Kategorie"
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr "Teilekategorie bearbeiten"
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr "Kategorieaktionen"
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr "Kategorie-Details"
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr "Variante von"
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr "Kategorie"
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr "Standard Lagerort"
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr "Standard-Lagerort der Kategorie"
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr "IPN"
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr "Version"
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr "Einheiten"
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr "Schlüsselwörter"
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr "Link"
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr "Verfügbarer Bestand"
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr "Minimaler Bestand"
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr "Bestellt"
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr "Bauaufträgen zugeordnet"
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr "Aufträgen zugeordnet"
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr "Herstellbar"
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr "Gebäude"
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr "Gebäude"
 msgid "Active"
 msgstr "Aktiv"
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr "Vorlagenteil"
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr "Baugruppe"
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr "Komponente"
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr "Nachverfolgbares Teil"
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr "Käufliches Teil"
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr "Verkäufliches Teil"
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr "Virtuelles Teil"
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr "Erstelldatum"
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr "Erstellt von"
 
@@ -3767,84 +3764,84 @@ msgstr "Erstellt von"
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr "Standard Zulieferer"
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr "Standard Zulieferer"
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr "Preisspanne"
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr "Letzte Inventur"
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr "Inventur durch"
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr "Teil-Details"
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr "Varianten"
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr "Ferienguthaben/Freitage"
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr "Verwendet in"
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr "Hersteller"
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr "Terminierung"
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr "Testvorlagen"
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr "Zugehörige Teile"
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr "Teil bearbeiten"
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr "Lager-Aktionen"
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr "Bestand zählen"
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr "Bestand übertragen"
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr "Teile-Aktionen"
 
@@ -3931,53 +3928,53 @@ msgstr "Kunden"
 msgid "Pending Shipments"
 msgstr "Ausstehende Sendungen"
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr "Übergeordneter Lagerort"
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr "Unter-Lagerorte"
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr "Extern"
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr "Oberster Lagerort"
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr "Lagerort-Details"
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr "Standardteile"
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr "Lagerort bearbeiten"
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr "Basisteil"
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr "Verfügbar"
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr "Bestandsverfolgung"
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr "Test Daten"
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr "Installierte Elemente"
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr "Untergeordnete Objekte"
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr "Lagervorgänge"
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr "Bestand zählen"
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr "Lagerbestand hinzufügen"
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr "Lagerbestand entfernen"
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr "Lagerbestand verschieben"
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr "Lagerartikel duplizieren"
 
@@ -4144,15 +4145,15 @@ msgstr "Wert"
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "Filter hinzufügen"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr "Filter zurücksetzen"
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr "Plugin installieren"
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr "Beispiel"
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/el/messages.po b/src/frontend/src/locales/el/messages.po
index 4b6731b253e6..7310fca74ca4 100644
--- a/src/frontend/src/locales/el/messages.po
+++ b/src/frontend/src/locales/el/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: el\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 01:59\n"
 "Last-Translator: \n"
 "Language-Team: Greek\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Τίτλος"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr "Αντιγράφηκε"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr "Αντιγραφή"
 
@@ -42,16 +42,16 @@ msgstr "Αφαίρεση της σχετικής εικόνας από αυτό
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr "Αφαίρεση"
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr "Εκκαθάριση"
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr "Η προεπισκόπηση δεν είναι διαθέσιμη, πα
 msgid "PDF Preview"
 msgstr "Προεπισκόπηση PDF"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr "Σφάλμα φόρτωσης προτύπου"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr "Σφάλμα αποθήκευσης προτύπου"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr "Αποθήκευση & Επαναφόρτωση προεπισκόπησης;"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr "Είστε σίγουρος ότι θέλετε να αποθηκεύσετε και να επαναφορτώσετε την προεπισκόπηση;"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr "Για να εμφανίσετε την προεπισκόπηση το τρέχον πρότυπο πρέπει να αντικατασταθεί στο διακομιστή με τις τροποποιήσεις σας, οι οποίες μπορεί να αλλοιώσουν την ετικέτα αν είναι σε χρήση. Θέλετε να προχωρήσετε;"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr "Αποθήκευση και Επαναφόρτωση"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr "Προεπισκόπηση ενημερώθηκε"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr "Η προεπισκόπηση ενημερώθηκε με επιτυχία."
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr "Επαναφόρτωση προεπισκόπησης"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr "Χρήση του αποθηκευμένου προτύπου από το διακομιστή"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr "Αποθήκευση & Επαναφόρτωση προεπισκόπησης"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr "Αποθήκευση του τρέχοντος προτύπου και επαναφόρτωση της προεπισκόπησης"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr "Επιλέξτε"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr "προς προεπισκόπηση"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr "Σφάλμα αποτύπωσης προτύπου"
 
@@ -221,21 +221,21 @@ msgstr "Σφάλμα αποτύπωσης προτύπου"
 msgid "Form Error"
 msgstr "Σφάλμα Φόρμας"
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Επιτυχία"
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr "Υπάρχουν Σφάλματα Φόρμας"
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr "Ενημέρωση"
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "Διαγραφή"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Επιτυχής σύνδεση"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/en/messages.po b/src/frontend/src/locales/en/messages.po
index fad1c16c6bb0..bd3433cbf91f 100644
--- a/src/frontend/src/locales/en/messages.po
+++ b/src/frontend/src/locales/en/messages.po
@@ -17,61 +17,61 @@ msgstr ""
 msgid "Title"
 msgstr "Title"
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr "Copied"
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr "Copy"
 
-#: src/components/details/DetailsImage.tsx:63
+#: src/components/details/DetailsImage.tsx:64
 msgid "Remove Image"
 msgstr "Remove Image"
 
-#: src/components/details/DetailsImage.tsx:66
+#: src/components/details/DetailsImage.tsx:67
 msgid "Remove the associated image from this item?"
 msgstr "Remove the associated image from this item?"
 
-#: src/components/details/DetailsImage.tsx:69
+#: src/components/details/DetailsImage.tsx:70
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr "Remove"
 
-#: src/components/details/DetailsImage.tsx:69
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/details/DetailsImage.tsx:70
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
-#: src/tables/InvenTreeTable.tsx:456
+#: src/tables/FilterSelectDrawer.tsx:218
+#: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
 msgstr "Cancel"
 
-#: src/components/details/DetailsImage.tsx:97
+#: src/components/details/DetailsImage.tsx:98
 msgid "Drag and drop to upload"
 msgstr "Drag and drop to upload"
 
-#: src/components/details/DetailsImage.tsx:100
+#: src/components/details/DetailsImage.tsx:101
 msgid "Click to select file(s)"
 msgstr "Click to select file(s)"
 
-#: src/components/details/DetailsImage.tsx:222
+#: src/components/details/DetailsImage.tsx:223
 msgid "Clear"
 msgstr "Clear"
 
-#: src/components/details/DetailsImage.tsx:225
-#: src/components/forms/ApiForm.tsx:451
+#: src/components/details/DetailsImage.tsx:226
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
 msgstr "Submit"
 
-#: src/components/details/DetailsImage.tsx:265
+#: src/components/details/DetailsImage.tsx:266
 msgid "Select from existing images"
 msgstr "Select from existing images"
 
@@ -83,11 +83,11 @@ msgstr "Select Image"
 msgid "Upload new image"
 msgstr "Upload new image"
 
-#: src/components/details/DetailsImage.tsx:295
+#: src/components/details/DetailsImage.tsx:293
 msgid "Upload Image"
 msgstr "Upload Image"
 
-#: src/components/details/DetailsImage.tsx:308
+#: src/components/details/DetailsImage.tsx:306
 msgid "Delete image"
 msgstr "Delete image"
 
@@ -128,8 +128,8 @@ msgid "Part is virtual (not a physical part)"
 msgstr "Part is virtual (not a physical part)"
 
 #: src/components/details/PartIcons.tsx:82
-#: src/tables/part/PartTable.tsx:243
-#: src/tables/part/PartTable.tsx:247
+#: src/tables/part/PartTable.tsx:242
+#: src/tables/part/PartTable.tsx:246
 #: src/tables/part/PartVariantTable.tsx:25
 msgid "Virtual"
 msgstr "Virtual"
@@ -150,94 +150,94 @@ msgstr "Preview not available, click \"Reload Preview\"."
 msgid "PDF Preview"
 msgstr "PDF Preview"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr "Error loading template"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr "Error saving template"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr "Save & Reload preview?"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr "Are you sure you want to Save & Reload the preview?"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr "Save & Reload"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr "Preview updated"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr "The preview has been updated successfully."
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr "Reload preview"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr "Use the currently stored template from the server"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr "Save & Reload preview"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr "Save the current template and reload the preview"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr "Select"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr "to preview"
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr "Error rendering template"
 
-#: src/components/forms/ApiForm.tsx:132
+#: src/components/forms/ApiForm.tsx:130
 #: src/functions/forms.tsx:259
 msgid "Form Error"
 msgstr "Form Error"
 
-#: src/components/forms/ApiForm.tsx:323
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Success"
 
-#: src/components/forms/ApiForm.tsx:396
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr "Form Errors Exist"
 
-#: src/components/forms/ApiForm.tsx:487
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr "Update"
 
-#: src/components/forms/ApiForm.tsx:507
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
 #: src/pages/Index/Scan.tsx:332
 #: src/pages/Notifications.tsx:123
-#: src/tables/InvenTreeTable.tsx:455
-#: src/tables/RowActions.tsx:71
+#: src/tables/InvenTreeTable.tsx:470
+#: src/tables/RowActions.tsx:72
 #: src/tables/plugin/PluginListTable.tsx:473
 #: src/tables/settings/TemplateTable.tsx:105
 #: src/tables/settings/TemplateTable.tsx:154
@@ -251,11 +251,11 @@ msgstr "Delete"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Login successful"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Welcome back!"
 
@@ -263,13 +263,13 @@ msgstr "Welcome back!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Login failed"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Check your input and try again."
@@ -279,46 +279,46 @@ msgstr "Check your input and try again."
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Mail delivery successful"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Input error"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr "Or continue with other methods"
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Username"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr "Your username"
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Password"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Your password"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Reset password"
@@ -331,69 +331,69 @@ msgstr "Reset password"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "Email"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "We will send you a link to login - if you are registered"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Send me an email"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr "Use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr "Log In"
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr "Send Email"
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr "Registration successful"
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr "Please confirm your email address to complete the registration"
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr "This will be used for a confirmation"
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr "Password repeat"
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr "Repeat password"
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr "Register"
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr "Or use SSO"
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr "Don't have an account?"
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr "Go back to login"
 
@@ -404,8 +404,9 @@ msgstr "Host"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -455,15 +456,16 @@ msgstr "Name: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
 #: src/pages/ErrorPage.tsx:12
 #: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:415
-#: src/tables/InvenTreeTable.tsx:488
+#: src/tables/InvenTreeTable.tsx:427
+#: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Error"
 
@@ -532,7 +534,7 @@ msgid "Unlink custom barcode"
 msgstr "Unlink custom barcode"
 
 #: src/components/items/ActionDropdown.tsx:180
-#: src/tables/RowActions.tsx:51
+#: src/tables/RowActions.tsx:52
 #: src/tables/settings/TemplateTable.tsx:87
 #: src/tables/settings/TemplateTable.tsx:150
 #: src/tables/settings/TemplateTable.tsx:287
@@ -544,8 +546,8 @@ msgid "Delete item"
 msgstr "Delete item"
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
-#: src/tables/RowActions.tsx:31
+#: src/pages/stock/StockDetail.tsx:428
+#: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr "Duplicate"
 
@@ -562,7 +564,7 @@ msgid "Read More"
 msgstr "Read More"
 
 #: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:407
+#: src/tables/InvenTreeTable.tsx:419
 msgid "Unknown error"
 msgstr "Unknown error"
 
@@ -856,13 +858,13 @@ msgstr "Account settings"
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr "System Settings"
 
 #: src/components/nav/MainMenu.tsx:60
 #: src/defaults/menuItems.tsx:63
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:161
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:172
 msgid "Admin Center"
 msgstr "Admin Center"
 
@@ -904,7 +906,7 @@ msgid "Pages"
 msgstr "Pages"
 
 #: src/components/nav/NavigationDrawer.tsx:67
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:122
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:133
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41
 msgid "Plugins"
 msgstr "Plugins"
@@ -942,7 +944,7 @@ msgstr "Mark as read"
 
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
-#: src/pages/Index/Settings/SystemSettings.tsx:164
+#: src/pages/Index/Settings/SystemSettings.tsx:163
 #: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr "Part Categories"
@@ -981,7 +983,7 @@ msgstr "No results available for search query"
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "Stock Locations"
 
@@ -1000,20 +1002,20 @@ msgstr "Unknown model: {model}"
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:732
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:72
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
 msgstr "Part"
 
 #: src/components/render/ModelType.tsx:22
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
-#: src/pages/Index/Settings/SystemSettings.tsx:169
-#: src/pages/part/CategoryDetail.tsx:103
+#: src/pages/Index/Settings/SystemSettings.tsx:168
+#: src/pages/part/CategoryDetail.tsx:104
 #: src/pages/part/CategoryDetail.tsx:183
 #: src/pages/part/CategoryDetail.tsx:213
-#: src/pages/part/PartDetail.tsx:617
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "Parts"
 
@@ -1036,8 +1038,8 @@ msgstr "Part Test Templates"
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
-#: src/tables/purchasing/SupplierPartTable.tsx:66
+#: src/pages/stock/StockDetail.tsx:157
+#: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr "Supplier Part"
 
@@ -1046,7 +1048,7 @@ msgid "Supplier Parts"
 msgstr "Supplier Parts"
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr "Manufacturer Part"
 
@@ -1061,15 +1063,15 @@ msgstr "Part Category"
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr "Stock Item"
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "Stock Items"
 
@@ -1121,7 +1123,7 @@ msgid "Project Code"
 msgstr "Project Code"
 
 #: src/components/render/ModelType.tsx:113
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:92
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:97
 msgid "Project Codes"
 msgstr "Project Codes"
 
@@ -1132,10 +1134,10 @@ msgid "Purchase Order"
 msgstr "Purchase Order"
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:550
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Purchase Orders"
@@ -1152,14 +1154,14 @@ msgstr "Purchase Order Lines"
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr "Sales Order"
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:556
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Sales Orders"
@@ -1179,7 +1181,7 @@ msgid "Return Order"
 msgstr "Return Order"
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1220,7 +1222,7 @@ msgid "User"
 msgstr "User"
 
 #: src/components/render/ModelType.tsx:177
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:68
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:73
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
 msgid "Users"
 msgstr "Users"
@@ -1232,23 +1234,23 @@ msgstr "Shipment"
 #: src/components/render/Part.tsx:10
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:200
-#: src/pages/part/PartDetail.tsx:473
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/Index/Settings/SystemSettings.tsx:199
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr "Stock"
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr "Serial Number"
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122
+#: src/pages/stock/StockDetail.tsx:135
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
 msgstr "Quantity"
 
@@ -1444,10 +1446,6 @@ msgstr "No settings specified"
 #~ msgid "Are you sure you want to remove this parameter?"
 #~ msgstr "Are you sure you want to remove this parameter?"
 
-#: src/components/tables/part/PartParameterTable.tsx:150
-#~ msgid "Add Part Parameter"
-#~ msgstr "Add Part Parameter"
-
 #: src/components/tables/part/PartParameterTable.tsx:159
 #~ msgid "Part parameter added"
 #~ msgstr "Part parameter added"
@@ -1822,58 +1820,62 @@ msgid "Korean"
 msgstr "Korean"
 
 #: src/contexts/LanguageContext.tsx:37
+msgid "Latvian"
+msgstr "Latvian"
+
+#: src/contexts/LanguageContext.tsx:38
 msgid "Dutch"
 msgstr "Dutch"
 
-#: src/contexts/LanguageContext.tsx:38
+#: src/contexts/LanguageContext.tsx:39
 msgid "Norwegian"
 msgstr "Norwegian"
 
-#: src/contexts/LanguageContext.tsx:39
+#: src/contexts/LanguageContext.tsx:40
 msgid "Polish"
 msgstr "Polish"
 
-#: src/contexts/LanguageContext.tsx:40
+#: src/contexts/LanguageContext.tsx:41
 msgid "Portuguese"
 msgstr "Portuguese"
 
-#: src/contexts/LanguageContext.tsx:41
+#: src/contexts/LanguageContext.tsx:42
 msgid "Portuguese (Brazilian)"
 msgstr "Portuguese (Brazilian)"
 
-#: src/contexts/LanguageContext.tsx:42
+#: src/contexts/LanguageContext.tsx:43
 msgid "Russian"
 msgstr "Russian"
 
-#: src/contexts/LanguageContext.tsx:43
+#: src/contexts/LanguageContext.tsx:44
 msgid "Slovak"
 msgstr "Slovak"
 
-#: src/contexts/LanguageContext.tsx:44
+#: src/contexts/LanguageContext.tsx:45
 msgid "Slovenian"
 msgstr "Slovenian"
 
-#: src/contexts/LanguageContext.tsx:45
+#: src/contexts/LanguageContext.tsx:46
 msgid "Swedish"
 msgstr "Swedish"
 
-#: src/contexts/LanguageContext.tsx:46
+#: src/contexts/LanguageContext.tsx:47
 msgid "Thai"
 msgstr "Thai"
 
-#: src/contexts/LanguageContext.tsx:47
+#: src/contexts/LanguageContext.tsx:48
 msgid "Turkish"
 msgstr "Turkish"
 
-#: src/contexts/LanguageContext.tsx:48
+#: src/contexts/LanguageContext.tsx:49
 msgid "Vietnamese"
 msgstr "Vietnamese"
 
-#: src/contexts/LanguageContext.tsx:49
+#: src/contexts/LanguageContext.tsx:50
 msgid "Chinese (Simplified)"
 msgstr "Chinese (Simplified)"
 
-#: src/contexts/LanguageContext.tsx:50
+#: src/contexts/LanguageContext.tsx:51
 msgid "Chinese (Traditional)"
 msgstr "Chinese (Traditional)"
 
@@ -1898,7 +1900,7 @@ msgid "Recently Updated"
 msgstr "Recently Updated"
 
 #: src/defaults/dashboardItems.tsx:50
-#: src/tables/part/PartTable.tsx:225
+#: src/tables/part/PartTable.tsx:224
 msgid "Low Stock"
 msgstr "Low Stock"
 
@@ -1982,7 +1984,7 @@ msgstr "Dashboard"
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2263,7 +2265,7 @@ msgstr "Remove item from list"
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr "Location"
 
@@ -2321,10 +2323,6 @@ msgstr "Stock item updated"
 msgid "Move to default location"
 msgstr "Move to default location"
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr "Move"
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2333,11 +2331,15 @@ msgstr "Move"
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:195
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr "In Stock"
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr "Move"
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2346,20 +2348,20 @@ msgstr "In Stock"
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/tables/RowActions.tsx:151
+#: src/tables/RowActions.tsx:148
 msgid "Actions"
 msgstr "Actions"
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:305
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr "Add"
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr "Count"
 
@@ -2372,12 +2374,12 @@ msgid "Remove Stock"
 msgstr "Remove Stock"
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:690
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr "Transfer Stock"
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr "Count Stock"
 
@@ -2498,7 +2500,7 @@ msgstr "Item Deleted"
 msgid "Are you sure you want to delete this item?"
 msgstr "Are you sure you want to delete this item?"
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr "Checking if you are already logged in"
 
@@ -2974,44 +2976,49 @@ msgstr "Loader"
 #~ msgid "Advanced Amininistrative Options for InvenTree"
 #~ msgstr "Advanced Amininistrative Options for InvenTree"
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:74
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:79
 msgid "Background Tasks"
 msgstr "Background Tasks"
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:80
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:85
 msgid "Error Reports"
 msgstr "Error Reports"
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:86
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:91
 msgid "Currencies"
 msgstr "Currencies"
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:104
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:109
 msgid "Custom Units"
 msgstr "Custom Units"
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:110
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:115
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr "Part Parameters"
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:116
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:121
+msgid "Category Parameters"
+msgstr "Category Parameters"
+
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:127
 msgid "Templates"
 msgstr "Templates"
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:128
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:139
 #: src/tables/machine/MachineTypeTable.tsx:281
 msgid "Machines"
 msgstr "Machines"
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:138
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:149
 msgid "Quick Actions"
 msgstr "Quick Actions"
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:143
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:154
 msgid "Add a new user"
 msgstr "Add a new user"
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:162
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:173
 msgid "Advanced Options"
 msgstr "Advanced Options"
 
@@ -3028,7 +3035,7 @@ msgid "There are no machine registry errors."
 msgstr "There are no machine registry errors."
 
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28
-#: src/tables/settings/UserTable.tsx:106
+#: src/tables/settings/UserTable.tsx:116
 msgid "Info"
 msgstr "Info"
 
@@ -3069,7 +3076,7 @@ msgid "Failed Tasks"
 msgstr "Failed Tasks"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:141
+#: src/pages/Index/Settings/SystemSettings.tsx:140
 msgid "Labels"
 msgstr "Labels"
 
@@ -3107,7 +3114,7 @@ msgstr "Report"
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:498
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr "Bill of Materials"
 
@@ -3120,7 +3127,7 @@ msgstr "Tests"
 #~ msgstr "Stock location"
 
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18
-#: src/tables/settings/UserTable.tsx:124
+#: src/tables/settings/UserTable.tsx:135
 msgid "Groups"
 msgstr "Groups"
 
@@ -3142,7 +3149,7 @@ msgstr "Barcodes"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr "Pricing"
 
@@ -3151,28 +3158,28 @@ msgstr "Pricing"
 #~ msgstr "Physical Units"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:135
-msgid "Exchange Rates"
-msgstr "Exchange Rates"
+#~ msgid "Exchange Rates"
+#~ msgstr "Exchange Rates"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:147
+#: src/pages/Index/Settings/SystemSettings.tsx:146
 #: src/pages/Index/Settings/UserSettings.tsx:99
 msgid "Reporting"
 msgstr "Reporting"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:568
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr "Stocktake"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Build Orders"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr "Switch to User Setting"
 
@@ -3234,7 +3241,7 @@ msgstr "Mark as unread"
 #: src/pages/sales/SalesOrderDetail.tsx:78
 #: src/tables/machine/MachineListTable.tsx:323
 #: src/tables/purchasing/PurchaseOrderTable.tsx:55
-#: src/tables/sales/ReturnOrderTable.tsx:45
+#: src/tables/sales/ReturnOrderTable.tsx:41
 #: src/tables/sales/SalesOrderTable.tsx:52
 #: src/tables/stock/StockItemTable.tsx:252
 msgid "Status"
@@ -3249,15 +3256,15 @@ msgstr "Reference"
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:116
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
-#: src/tables/ColumnRenderers.tsx:52
+#: src/pages/stock/LocationDetail.tsx:93
+#: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
 #: src/tables/machine/MachineTypeTable.tsx:213
@@ -3286,7 +3293,7 @@ msgid "Issued By"
 msgstr "Issued By"
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3334,10 +3341,6 @@ msgstr "Allocate Stock"
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr "Incomplete Outputs"
@@ -3364,23 +3367,22 @@ msgstr "Child Build Orders"
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:590
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr "Attachments"
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:602
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:185
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr "Notes"
 
@@ -3432,8 +3434,8 @@ msgstr "Supplier"
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr "Manufacturer"
@@ -3442,7 +3444,8 @@ msgstr "Manufacturer"
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
-#: src/tables/sales/ReturnOrderTable.tsx:64
+#: src/pages/stock/StockDetail.tsx:214
+#: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
 msgstr "Customer"
@@ -3479,57 +3482,56 @@ msgstr "Edit Company"
 msgid "Company Actions"
 msgstr "Company Actions"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr "Internal Part"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr "External Link"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
-#: src/tables/purchasing/ManufacturerPartTable.tsx:57
+#: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr "Manufacturer Part Number"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr "Manufacturer Details"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr "Manufacturer Part Details"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/CategoryDetail.tsx:203
-#: src/pages/part/PartDetail.tsx:467
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr "Parameters"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:537
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr "Suppliers"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
-#: src/tables/purchasing/ManufacturerPartTable.tsx:101
+#: src/pages/company/ManufacturerPartDetail.tsx:187
+#: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr "Edit Manufacturer Part"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr "Manufacturer Part Actions"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr "ManufacturerPart"
 
 #: src/pages/company/SupplierPartDetail.tsx:90
-#: src/tables/ColumnRenderers.tsx:78
+#: src/tables/ColumnRenderers.tsx:105
 msgid "Note"
 msgstr "Note"
 
@@ -3539,14 +3541,14 @@ msgstr "SKU"
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr "Packaging"
 
 #: src/pages/company/SupplierPartDetail.tsx:143
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:107
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:143
-#: src/tables/purchasing/SupplierPartTable.tsx:123
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:105
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:141
+#: src/tables/purchasing/SupplierPartTable.tsx:120
 msgid "Pack Quantity"
 msgstr "Pack Quantity"
 
@@ -3576,137 +3578,138 @@ msgid "Supplier Part Actions"
 msgstr "Supplier Part Actions"
 
 #: src/pages/company/SupplierPartDetail.tsx:254
-#: src/tables/purchasing/SupplierPartTable.tsx:193
+#: src/tables/purchasing/SupplierPartTable.tsx:190
 msgid "Edit Supplier Part"
 msgstr "Edit Supplier Part"
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr "Path"
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr "Parent Category"
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr "Subcategories"
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr "Structural"
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr "Parent default location"
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr "Default location"
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr "Top level part category"
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr "Edit Part Category"
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr "Category Actions"
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr "Category Details"
 
-#: src/pages/part/PartDetail.tsx:122
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr "Variant of"
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
+#: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr "Category"
 
-#: src/pages/part/PartDetail.tsx:135
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr "Default Location"
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr "Category Default Location"
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr "IPN"
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr "Revision"
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr "Units"
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr "Keywords"
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr "Link"
 
-#: src/pages/part/PartDetail.tsx:189
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr "Available Stock"
 
-#: src/pages/part/PartDetail.tsx:201
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr "Minimum Stock"
 
-#: src/pages/part/PartDetail.tsx:207
-#: src/tables/bom/BomTable.tsx:188
+#: src/pages/part/PartDetail.tsx:215
+#: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr "On order"
 
-#: src/pages/part/PartDetail.tsx:216
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr "Allocated to Build Orders"
 
-#: src/pages/part/PartDetail.tsx:227
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr "Allocated to Sales Orders"
 
-#: src/pages/part/PartDetail.tsx:237
-#: src/tables/bom/BomTable.tsx:212
+#: src/pages/part/PartDetail.tsx:245
+#: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr "Can Build"
 
-#: src/pages/part/PartDetail.tsx:244
-#: src/tables/bom/BomTable.tsx:196
-#: src/tables/part/PartTable.tsx:92
+#: src/pages/part/PartDetail.tsx:252
+#: src/tables/bom/BomTable.tsx:193
+#: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr "Building"
 
-#: src/pages/part/PartDetail.tsx:253
-#: src/tables/bom/UsedInTable.tsx:66
+#: src/pages/part/PartDetail.tsx:261
+#: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
-#: src/tables/part/PartTable.tsx:177
+#: src/tables/part/PartTable.tsx:176
 #: src/tables/part/PartVariantTable.tsx:15
 #: src/tables/plugin/PluginListTable.tsx:190
 #: src/tables/plugin/PluginListTable.tsx:634
@@ -3714,41 +3717,41 @@ msgstr "Building"
 msgid "Active"
 msgstr "Active"
 
-#: src/pages/part/PartDetail.tsx:258
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr "Template Part"
 
-#: src/pages/part/PartDetail.tsx:263
-#: src/tables/bom/BomTable.tsx:240
+#: src/pages/part/PartDetail.tsx:271
+#: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr "Assembled Part"
 
-#: src/pages/part/PartDetail.tsx:268
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr "Component Part"
 
-#: src/pages/part/PartDetail.tsx:273
-#: src/tables/bom/BomTable.tsx:235
+#: src/pages/part/PartDetail.tsx:281
+#: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr "Trackable Part"
 
-#: src/pages/part/PartDetail.tsx:278
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr "Purchaseable Part"
 
-#: src/pages/part/PartDetail.tsx:283
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr "Saleable Part"
 
-#: src/pages/part/PartDetail.tsx:288
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr "Virtual Part"
 
-#: src/pages/part/PartDetail.tsx:296
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr "Creation Date"
 
-#: src/pages/part/PartDetail.tsx:301
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr "Created By"
 
@@ -3756,84 +3759,84 @@ msgstr "Created By"
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:315
-msgid "Default Supplier"
-msgstr "Default Supplier"
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
-#: src/pages/part/PartDetail.tsx:326
-#: src/tables/bom/BomTable.tsx:137
-#: src/tables/part/PartTable.tsx:161
-msgid "Price Range"
-msgstr "Price Range"
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr "Default Supplier"
 
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:361
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:334
+#: src/tables/bom/BomTable.tsx:134
+#: src/tables/part/PartTable.tsx:160
+msgid "Price Range"
+msgstr "Price Range"
+
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr "Last Stocktake"
 
-#: src/pages/part/PartDetail.tsx:396
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr "Stocktake By"
 
-#: src/pages/part/PartDetail.tsx:461
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr "Part Details"
 
-#: src/pages/part/PartDetail.tsx:485
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr "Variants"
 
-#: src/pages/part/PartDetail.tsx:492
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr "Allocations"
 
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr "Used In"
 
-#: src/pages/part/PartDetail.tsx:524
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr "Manufacturers"
 
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr "Scheduling"
 
-#: src/pages/part/PartDetail.tsx:573
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr "Test Templates"
 
-#: src/pages/part/PartDetail.tsx:584
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr "Related Parts"
 
-#: src/pages/part/PartDetail.tsx:641
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr "Edit Part"
 
-#: src/pages/part/PartDetail.tsx:672
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr "Stock Actions"
 
-#: src/pages/part/PartDetail.tsx:680
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr "Count part stock"
 
-#: src/pages/part/PartDetail.tsx:691
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr "Transfer part stock"
 
-#: src/pages/part/PartDetail.tsx:701
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr "Part Actions"
 
@@ -3892,7 +3895,7 @@ msgstr "Created On"
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:181
 #: src/pages/sales/ReturnOrderDetail.tsx:147
 #: src/pages/sales/SalesOrderDetail.tsx:151
-#: src/tables/ColumnRenderers.tsx:137
+#: src/tables/ColumnRenderers.tsx:164
 msgid "Target Date"
 msgstr "Target Date"
 
@@ -3920,55 +3923,55 @@ msgstr "Customers"
 msgid "Pending Shipments"
 msgstr "Pending Shipments"
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr "Parent Location"
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr "Sublocations"
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr "External"
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr "Top level stock location"
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr "Location Details"
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr "Default Parts"
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr "Edit Stock Location"
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr "Location Actions"
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr "Base Part"
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr "Stock Status"
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr "Last Updated"
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
-#: src/tables/part/PartTable.tsx:117
+#: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
 #: src/tables/stock/StockItemTable.tsx:268
 msgid "Available"
@@ -3982,14 +3985,18 @@ msgstr "Available"
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr "Installed In"
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr "Consumed By"
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr "Build Order"
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -3998,69 +4005,69 @@ msgstr "Consumed By"
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr "Stock Details"
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr "Stock Tracking"
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr "Test Data"
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr "Installed Items"
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr "Child Items"
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr "Stock Operations"
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr "Count stock"
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr "Add stock"
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr "Remove stock"
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr "Transfer"
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr "Transfer stock"
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr "Duplicate stock item"
 
-#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/ColumnRenderers.tsx:155
 #: src/tables/plugin/PluginListTable.tsx:182
 #: src/tables/stock/StockItemTestResultTable.tsx:194
 msgid "Date"
 msgstr "Date"
 
-#: src/tables/ColumnRenderers.tsx:174
+#: src/tables/ColumnRenderers.tsx:201
 #: src/tables/settings/CurrencyTable.tsx:23
 msgid "Currency"
 msgstr "Currency"
 
-#: src/tables/ColumnRenderers.tsx:188
+#: src/tables/ColumnRenderers.tsx:215
 msgid "Total Price"
 msgstr "Total Price"
 
@@ -4133,212 +4140,212 @@ msgstr "Value"
 msgid "Select filter value"
 msgstr "Select filter value"
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr "Table Filters"
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "Add Filter"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr "Clear Filters"
 
-#: src/tables/InvenTreeTable.tsx:89
-#: src/tables/InvenTreeTable.tsx:354
-#: src/tables/InvenTreeTable.tsx:375
+#: src/tables/InvenTreeTable.tsx:101
+#: src/tables/InvenTreeTable.tsx:366
+#: src/tables/InvenTreeTable.tsx:387
 msgid "No records found"
 msgstr "No records found"
 
-#: src/tables/InvenTreeTable.tsx:386
+#: src/tables/InvenTreeTable.tsx:398
 msgid "Server returned incorrect data type"
 msgstr "Server returned incorrect data type"
 
-#: src/tables/InvenTreeTable.tsx:394
+#: src/tables/InvenTreeTable.tsx:406
 msgid "Bad request"
 msgstr "Bad request"
 
-#: src/tables/InvenTreeTable.tsx:397
+#: src/tables/InvenTreeTable.tsx:409
 msgid "Unauthorized"
 msgstr "Unauthorized"
 
-#: src/tables/InvenTreeTable.tsx:400
+#: src/tables/InvenTreeTable.tsx:412
 msgid "Forbidden"
 msgstr "Forbidden"
 
-#: src/tables/InvenTreeTable.tsx:403
+#: src/tables/InvenTreeTable.tsx:415
 msgid "Not found"
 msgstr "Not found"
 
-#: src/tables/InvenTreeTable.tsx:445
-#: src/tables/InvenTreeTable.tsx:536
+#: src/tables/InvenTreeTable.tsx:460
+#: src/tables/InvenTreeTable.tsx:575
 msgid "Delete selected records"
 msgstr "Delete selected records"
 
-#: src/tables/InvenTreeTable.tsx:449
+#: src/tables/InvenTreeTable.tsx:464
 msgid "Are you sure you want to delete the selected records?"
 msgstr "Are you sure you want to delete the selected records?"
 
-#: src/tables/InvenTreeTable.tsx:451
+#: src/tables/InvenTreeTable.tsx:466
 msgid "This action cannot be undone!"
 msgstr "This action cannot be undone!"
 
-#: src/tables/InvenTreeTable.tsx:479
+#: src/tables/InvenTreeTable.tsx:494
 msgid "Deleted records"
 msgstr "Deleted records"
 
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:495
 msgid "Records were deleted successfully"
 msgstr "Records were deleted successfully"
 
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:504
 msgid "Failed to delete records"
 msgstr "Failed to delete records"
 
-#: src/tables/InvenTreeTable.tsx:517
-#: src/tables/InvenTreeTable.tsx:518
+#: src/tables/InvenTreeTable.tsx:556
+#: src/tables/InvenTreeTable.tsx:557
 msgid "Barcode actions"
 msgstr "Barcode actions"
 
-#: src/tables/InvenTreeTable.tsx:526
-#: src/tables/InvenTreeTable.tsx:527
+#: src/tables/InvenTreeTable.tsx:565
+#: src/tables/InvenTreeTable.tsx:566
 msgid "Print actions"
 msgstr "Print actions"
 
-#: src/tables/InvenTreeTable.tsx:552
+#: src/tables/InvenTreeTable.tsx:591
 msgid "Refresh data"
 msgstr "Refresh data"
 
-#: src/tables/InvenTreeTable.tsx:570
+#: src/tables/InvenTreeTable.tsx:609
 msgid "Table filters"
 msgstr "Table filters"
 
-#: src/tables/bom/BomTable.tsx:76
+#: src/tables/bom/BomTable.tsx:73
 msgid "This BOM item is defined for a different parent"
 msgstr "This BOM item is defined for a different parent"
 
-#: src/tables/bom/BomTable.tsx:91
+#: src/tables/bom/BomTable.tsx:88
 msgid "Part Information"
 msgstr "Part Information"
 
-#: src/tables/bom/BomTable.tsx:155
-#: src/tables/part/PartTable.tsx:134
+#: src/tables/bom/BomTable.tsx:152
+#: src/tables/part/PartTable.tsx:133
 msgid "No stock"
 msgstr "No stock"
 
-#: src/tables/bom/BomTable.tsx:163
+#: src/tables/bom/BomTable.tsx:160
 #: src/tables/build/BuildLineTable.tsx:101
-#: src/tables/part/PartTable.tsx:125
+#: src/tables/part/PartTable.tsx:124
 msgid "External stock"
 msgstr "External stock"
 
-#: src/tables/bom/BomTable.tsx:171
+#: src/tables/bom/BomTable.tsx:168
 #: src/tables/build/BuildLineTable.tsx:64
 msgid "Includes substitute stock"
 msgstr "Includes substitute stock"
 
-#: src/tables/bom/BomTable.tsx:180
+#: src/tables/bom/BomTable.tsx:177
 #: src/tables/build/BuildLineTable.tsx:74
 msgid "Includes variant stock"
 msgstr "Includes variant stock"
 
-#: src/tables/bom/BomTable.tsx:205
-#: src/tables/part/PartTable.tsx:153
+#: src/tables/bom/BomTable.tsx:202
+#: src/tables/part/PartTable.tsx:152
 #: src/tables/stock/StockItemTable.tsx:190
 msgid "Stock Information"
 msgstr "Stock Information"
 
-#: src/tables/bom/BomTable.tsx:216
+#: src/tables/bom/BomTable.tsx:213
 #: src/tables/build/BuildLineTable.tsx:179
 msgid "Consumable item"
 msgstr "Consumable item"
 
-#: src/tables/bom/BomTable.tsx:236
+#: src/tables/bom/BomTable.tsx:233
 msgid "Show trackable items"
 msgstr "Show trackable items"
 
-#: src/tables/bom/BomTable.tsx:241
+#: src/tables/bom/BomTable.tsx:238
 msgid "Show asssmbled items"
 msgstr "Show asssmbled items"
 
-#: src/tables/bom/BomTable.tsx:245
+#: src/tables/bom/BomTable.tsx:242
 msgid "Show items with available stock"
 msgstr "Show items with available stock"
 
-#: src/tables/bom/BomTable.tsx:249
+#: src/tables/bom/BomTable.tsx:246
 msgid "Show items on order"
 msgstr "Show items on order"
 
-#: src/tables/bom/BomTable.tsx:253
+#: src/tables/bom/BomTable.tsx:250
 msgid "Show validated items"
 msgstr "Show validated items"
 
-#: src/tables/bom/BomTable.tsx:257
-#: src/tables/bom/UsedInTable.tsx:58
+#: src/tables/bom/BomTable.tsx:254
+#: src/tables/bom/UsedInTable.tsx:54
 msgid "Show inherited items"
 msgstr "Show inherited items"
 
-#: src/tables/bom/BomTable.tsx:261
-#: src/tables/bom/UsedInTable.tsx:62
+#: src/tables/bom/BomTable.tsx:258
+#: src/tables/bom/UsedInTable.tsx:58
 msgid "Show optional items"
 msgstr "Show optional items"
 
-#: src/tables/bom/BomTable.tsx:265
+#: src/tables/bom/BomTable.tsx:262
 msgid "Show consumable items"
 msgstr "Show consumable items"
 
-#: src/tables/bom/BomTable.tsx:269
+#: src/tables/bom/BomTable.tsx:266
 msgid "Has Pricing"
 msgstr "Has Pricing"
 
-#: src/tables/bom/BomTable.tsx:270
+#: src/tables/bom/BomTable.tsx:267
 msgid "Show items with pricing"
 msgstr "Show items with pricing"
 
-#: src/tables/bom/BomTable.tsx:281
+#: src/tables/bom/BomTable.tsx:278
 msgid "View BOM"
 msgstr "View BOM"
 
-#: src/tables/bom/BomTable.tsx:292
+#: src/tables/bom/BomTable.tsx:289
 msgid "Validate BOM line"
 msgstr "Validate BOM line"
 
-#: src/tables/bom/BomTable.tsx:300
+#: src/tables/bom/BomTable.tsx:297
 msgid "Edit Substitutes"
 msgstr "Edit Substitutes"
 
-#: src/tables/bom/BomTable.tsx:314
+#: src/tables/bom/BomTable.tsx:311
 msgid "Edit Bom Item"
 msgstr "Edit Bom Item"
 
-#: src/tables/bom/BomTable.tsx:316
+#: src/tables/bom/BomTable.tsx:313
 msgid "Bom item updated"
 msgstr "Bom item updated"
 
-#: src/tables/bom/BomTable.tsx:331
+#: src/tables/bom/BomTable.tsx:328
 msgid "Delete Bom Item"
 msgstr "Delete Bom Item"
 
-#: src/tables/bom/BomTable.tsx:332
+#: src/tables/bom/BomTable.tsx:329
 msgid "Bom item deleted"
 msgstr "Bom item deleted"
 
-#: src/tables/bom/BomTable.tsx:334
+#: src/tables/bom/BomTable.tsx:331
 msgid "Are you sure you want to remove this BOM item?"
 msgstr "Are you sure you want to remove this BOM item?"
 
-#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/bom/UsedInTable.tsx:63
 msgid "Show active assemblies"
 msgstr "Show active assemblies"
 
-#: src/tables/bom/UsedInTable.tsx:71
-#: src/tables/part/PartTable.tsx:201
+#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/part/PartTable.tsx:200
 #: src/tables/part/PartVariantTable.tsx:30
 msgid "Trackable"
 msgstr "Trackable"
 
-#: src/tables/bom/UsedInTable.tsx:72
+#: src/tables/bom/UsedInTable.tsx:68
 msgid "Show trackable assemblies"
 msgstr "Show trackable assemblies"
 
@@ -4393,7 +4400,7 @@ msgstr "Show active orders"
 
 #: src/tables/build/BuildOrderTable.tsx:107
 #: src/tables/purchasing/PurchaseOrderTable.tsx:56
-#: src/tables/sales/ReturnOrderTable.tsx:46
+#: src/tables/sales/ReturnOrderTable.tsx:42
 #: src/tables/sales/SalesOrderTable.tsx:53
 msgid "Filter by order status"
 msgstr "Filter by order status"
@@ -4428,11 +4435,11 @@ msgstr "Delete Address"
 msgid "Are you sure you want to delete this address?"
 msgstr "Are you sure you want to delete this address?"
 
-#: src/tables/company/CompanyTable.tsx:62
+#: src/tables/company/CompanyTable.tsx:63
 msgid "New Company"
 msgstr "New Company"
 
-#: src/tables/company/CompanyTable.tsx:82
+#: src/tables/company/CompanyTable.tsx:83
 msgid "Add Company"
 msgstr "Add Company"
 
@@ -4452,35 +4459,35 @@ msgstr "Delete Contact"
 msgid "Add contact"
 msgstr "Add contact"
 
-#: src/tables/general/AttachmentTable.tsx:161
+#: src/tables/general/AttachmentTable.tsx:162
 msgid "File uploaded"
 msgstr "File uploaded"
 
-#: src/tables/general/AttachmentTable.tsx:162
+#: src/tables/general/AttachmentTable.tsx:163
 msgid "File {0} uploaded successfully"
 msgstr "File {0} uploaded successfully"
 
-#: src/tables/general/AttachmentTable.tsx:173
+#: src/tables/general/AttachmentTable.tsx:174
 msgid "Upload Error"
 msgstr "Upload Error"
 
-#: src/tables/general/AttachmentTable.tsx:174
+#: src/tables/general/AttachmentTable.tsx:175
 msgid "File could not be uploaded"
 msgstr "File could not be uploaded"
 
-#: src/tables/general/AttachmentTable.tsx:187
+#: src/tables/general/AttachmentTable.tsx:188
 msgid "Add attachment"
 msgstr "Add attachment"
 
-#: src/tables/general/AttachmentTable.tsx:206
+#: src/tables/general/AttachmentTable.tsx:207
 msgid "Add external link"
 msgstr "Add external link"
 
-#: src/tables/general/AttachmentTable.tsx:237
+#: src/tables/general/AttachmentTable.tsx:238
 msgid "No attachments found"
 msgstr "No attachments found"
 
-#: src/tables/general/AttachmentTable.tsx:252
+#: src/tables/general/AttachmentTable.tsx:253
 msgid "Upload attachment"
 msgstr "Upload attachment"
 
@@ -4640,13 +4647,27 @@ msgstr "Age"
 msgid "Message"
 msgstr "Message"
 
-#: src/tables/part/ParametricPartTable.tsx:80
+#: src/tables/part/ParametricPartTable.tsx:75
 #: src/tables/part/PartParameterTable.tsx:83
 msgid "Internal Units"
 msgstr "Internal Units"
 
+#: src/tables/part/ParametricPartTable.tsx:80
+msgid "Edit parameter"
+msgstr "Edit parameter"
+
+#: src/tables/part/ParametricPartTable.tsx:133
+msgid "Add Part Parameter"
+msgstr "Add Part Parameter"
+
+#: src/tables/part/ParametricPartTable.tsx:146
+#: src/tables/part/PartParameterTable.tsx:121
+#: src/tables/part/PartParameterTable.tsx:143
+msgid "Edit Part Parameter"
+msgstr "Edit Part Parameter"
+
 #: src/tables/part/PartCategoryTable.tsx:64
-#: src/tables/part/PartTable.tsx:189
+#: src/tables/part/PartTable.tsx:188
 msgid "Include Subcategories"
 msgstr "Include Subcategories"
 
@@ -4666,15 +4687,31 @@ msgstr "New Part Category"
 msgid "Add Part Category"
 msgstr "Add Part Category"
 
+#: src/tables/part/PartCategoryTemplateTable.tsx:39
+#: src/tables/part/PartCategoryTemplateTable.tsx:132
+msgid "Add Category Parameter"
+msgstr "Add Category Parameter"
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:47
+msgid "Edit Category Parameter"
+msgstr "Edit Category Parameter"
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:55
+msgid "Delete Category Parameter"
+msgstr "Delete Category Parameter"
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:77
+msgid "Parameter Template"
+msgstr "Parameter Template"
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:93
+msgid "[{0}]"
+msgstr "[{0}]"
+
 #: src/tables/part/PartParameterTable.tsx:106
 msgid "New Part Parameter"
 msgstr "New Part Parameter"
 
-#: src/tables/part/PartParameterTable.tsx:121
-#: src/tables/part/PartParameterTable.tsx:143
-msgid "Edit Part Parameter"
-msgstr "Edit Part Parameter"
-
 #: src/tables/part/PartParameterTable.tsx:129
 #: src/tables/part/PartParameterTable.tsx:151
 msgid "Delete Part Parameter"
@@ -4706,7 +4743,7 @@ msgid "Show templates with choices"
 msgstr "Show templates with choices"
 
 #: src/tables/part/PartParameterTemplateTable.tsx:41
-#: src/tables/part/PartTable.tsx:207
+#: src/tables/part/PartTable.tsx:206
 msgid "Has Units"
 msgstr "Has Units"
 
@@ -4730,101 +4767,101 @@ msgstr "Delete Parameter Template"
 msgid "Add parameter template"
 msgstr "Add parameter template"
 
-#: src/tables/part/PartTable.tsx:77
+#: src/tables/part/PartTable.tsx:76
 msgid "Minimum stock"
 msgstr "Minimum stock"
 
-#: src/tables/part/PartTable.tsx:86
+#: src/tables/part/PartTable.tsx:85
 msgid "On Order"
 msgstr "On Order"
 
-#: src/tables/part/PartTable.tsx:99
+#: src/tables/part/PartTable.tsx:98
 msgid "Build Order Allocations"
 msgstr "Build Order Allocations"
 
-#: src/tables/part/PartTable.tsx:108
+#: src/tables/part/PartTable.tsx:107
 msgid "Sales Order Allocations"
 msgstr "Sales Order Allocations"
 
-#: src/tables/part/PartTable.tsx:178
+#: src/tables/part/PartTable.tsx:177
 msgid "Filter by part active status"
 msgstr "Filter by part active status"
 
-#: src/tables/part/PartTable.tsx:183
+#: src/tables/part/PartTable.tsx:182
 #: src/tables/stock/StockItemTable.tsx:258
 msgid "Assembly"
 msgstr "Assembly"
 
-#: src/tables/part/PartTable.tsx:184
+#: src/tables/part/PartTable.tsx:183
 msgid "Filter by assembly attribute"
 msgstr "Filter by assembly attribute"
 
-#: src/tables/part/PartTable.tsx:190
+#: src/tables/part/PartTable.tsx:189
 msgid "Include parts in subcategories"
 msgstr "Include parts in subcategories"
 
-#: src/tables/part/PartTable.tsx:195
+#: src/tables/part/PartTable.tsx:194
 msgid "Component"
 msgstr "Component"
 
-#: src/tables/part/PartTable.tsx:196
+#: src/tables/part/PartTable.tsx:195
 msgid "Filter by component attribute"
 msgstr "Filter by component attribute"
 
-#: src/tables/part/PartTable.tsx:202
+#: src/tables/part/PartTable.tsx:201
 msgid "Filter by trackable attribute"
 msgstr "Filter by trackable attribute"
 
-#: src/tables/part/PartTable.tsx:208
+#: src/tables/part/PartTable.tsx:207
 msgid "Filter by parts which have units"
 msgstr "Filter by parts which have units"
 
-#: src/tables/part/PartTable.tsx:213
+#: src/tables/part/PartTable.tsx:212
 msgid "Has IPN"
 msgstr "Has IPN"
 
-#: src/tables/part/PartTable.tsx:214
+#: src/tables/part/PartTable.tsx:213
 msgid "Filter by parts which have an internal part number"
 msgstr "Filter by parts which have an internal part number"
 
-#: src/tables/part/PartTable.tsx:219
+#: src/tables/part/PartTable.tsx:218
 msgid "Has Stock"
 msgstr "Has Stock"
 
-#: src/tables/part/PartTable.tsx:220
+#: src/tables/part/PartTable.tsx:219
 msgid "Filter by parts which have stock"
 msgstr "Filter by parts which have stock"
 
-#: src/tables/part/PartTable.tsx:226
+#: src/tables/part/PartTable.tsx:225
 msgid "Filter by parts which have low stock"
 msgstr "Filter by parts which have low stock"
 
-#: src/tables/part/PartTable.tsx:231
+#: src/tables/part/PartTable.tsx:230
 msgid "Purchaseable"
 msgstr "Purchaseable"
 
-#: src/tables/part/PartTable.tsx:232
+#: src/tables/part/PartTable.tsx:231
 msgid "Filter by parts which are purchaseable"
 msgstr "Filter by parts which are purchaseable"
 
-#: src/tables/part/PartTable.tsx:237
+#: src/tables/part/PartTable.tsx:236
 msgid "Salable"
 msgstr "Salable"
 
-#: src/tables/part/PartTable.tsx:238
+#: src/tables/part/PartTable.tsx:237
 msgid "Filter by parts which are salable"
 msgstr "Filter by parts which are salable"
 
-#: src/tables/part/PartTable.tsx:244
+#: src/tables/part/PartTable.tsx:243
 msgid "Filter by parts which are virtual"
 msgstr "Filter by parts which are virtual"
 
-#: src/tables/part/PartTable.tsx:248
+#: src/tables/part/PartTable.tsx:247
 msgid "Not Virtual"
 msgstr "Not Virtual"
 
-#: src/tables/part/PartTable.tsx:276
-#: src/tables/part/PartTable.tsx:292
+#: src/tables/part/PartTable.tsx:275
+#: src/tables/part/PartTable.tsx:291
 msgid "Add Part"
 msgstr "Add Part"
 
@@ -5120,8 +5157,12 @@ msgid "Install Plugin"
 msgstr "Install Plugin"
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
-msgstr "Plugin detail"
+msgid "Plugin Detail"
+msgstr "Plugin Detail"
+
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
 
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
@@ -5152,83 +5193,83 @@ msgstr "Parameter deleted"
 msgid "Are you sure you want to delete this parameter?"
 msgstr "Are you sure you want to delete this parameter?"
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:67
+#: src/tables/purchasing/ManufacturerPartTable.tsx:63
 msgid "Create Manufacturer Part"
 msgstr "Create Manufacturer Part"
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:82
+#: src/tables/purchasing/ManufacturerPartTable.tsx:78
 msgid "Add Manufacturer Part"
 msgstr "Add Manufacturer Part"
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:104
+#: src/tables/purchasing/ManufacturerPartTable.tsx:100
 msgid "Manufacturer part updated"
 msgstr "Manufacturer part updated"
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:115
+#: src/tables/purchasing/ManufacturerPartTable.tsx:111
 msgid "Delete Manufacturer Part"
 msgstr "Delete Manufacturer Part"
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:116
+#: src/tables/purchasing/ManufacturerPartTable.tsx:112
 msgid "Manufacturer part deleted"
 msgstr "Manufacturer part deleted"
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:118
+#: src/tables/purchasing/ManufacturerPartTable.tsx:114
 msgid "Are you sure you want to remove this manufacturer part?"
 msgstr "Are you sure you want to remove this manufacturer part?"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:86
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:84
 msgid "Part Description"
 msgstr "Part Description"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:113
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:111
 msgid "Total Quantity"
 msgstr "Total Quantity"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:129
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:127
 msgid "Received"
 msgstr "Received"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:148
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:146
 msgid "Supplier Code"
 msgstr "Supplier Code"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:155
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:153
 msgid "Supplier Link"
 msgstr "Supplier Link"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:162
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:160
 msgid "Manufacturer Code"
 msgstr "Manufacturer Code"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:168
 msgid "Unit Price"
 msgstr "Unit Price"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:176
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:174
 msgid "Destination"
 msgstr "Destination"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:193
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:188
 msgid "Add Line Item"
 msgstr "Add Line Item"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:208
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:203
 msgid "Edit Line Item"
 msgstr "Edit Line Item"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:216
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:211
 msgid "Delete Line Item"
 msgstr "Delete Line Item"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:227
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:222
 msgid "Receive line item"
 msgstr "Receive line item"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:256
 msgid "Add line item"
 msgstr "Add line item"
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:266
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
 msgid "Receive items"
 msgstr "Receive items"
 
@@ -5237,47 +5278,47 @@ msgstr "Receive items"
 msgid "Add Purchase Order"
 msgstr "Add Purchase Order"
 
-#: src/tables/purchasing/SupplierPartTable.tsx:91
+#: src/tables/purchasing/SupplierPartTable.tsx:88
 msgid "MPN"
 msgstr "MPN"
 
-#: src/tables/purchasing/SupplierPartTable.tsx:114
+#: src/tables/purchasing/SupplierPartTable.tsx:111
 msgid "Base units"
 msgstr "Base units"
 
-#: src/tables/purchasing/SupplierPartTable.tsx:140
+#: src/tables/purchasing/SupplierPartTable.tsx:137
 msgid "Updated"
 msgstr "Updated"
 
-#: src/tables/purchasing/SupplierPartTable.tsx:159
+#: src/tables/purchasing/SupplierPartTable.tsx:156
 msgid "Add Supplier Part"
 msgstr "Add Supplier Part"
 
-#: src/tables/purchasing/SupplierPartTable.tsx:162
+#: src/tables/purchasing/SupplierPartTable.tsx:159
 msgid "Supplier part created"
 msgstr "Supplier part created"
 
-#: src/tables/purchasing/SupplierPartTable.tsx:171
+#: src/tables/purchasing/SupplierPartTable.tsx:168
 msgid "Add supplier part"
 msgstr "Add supplier part"
 
-#: src/tables/purchasing/SupplierPartTable.tsx:196
+#: src/tables/purchasing/SupplierPartTable.tsx:193
 msgid "Supplier part updated"
 msgstr "Supplier part updated"
 
-#: src/tables/purchasing/SupplierPartTable.tsx:207
+#: src/tables/purchasing/SupplierPartTable.tsx:204
 msgid "Delete Supplier Part"
 msgstr "Delete Supplier Part"
 
-#: src/tables/purchasing/SupplierPartTable.tsx:208
+#: src/tables/purchasing/SupplierPartTable.tsx:205
 msgid "Supplier part deleted"
 msgstr "Supplier part deleted"
 
-#: src/tables/purchasing/SupplierPartTable.tsx:210
+#: src/tables/purchasing/SupplierPartTable.tsx:207
 msgid "Are you sure you want to remove this supplier part?"
 msgstr "Are you sure you want to remove this supplier part?"
 
-#: src/tables/sales/ReturnOrderTable.tsx:99
+#: src/tables/sales/ReturnOrderTable.tsx:95
 msgid "Add Return Order"
 msgstr "Add Return Order"
 
@@ -5355,6 +5396,7 @@ msgid "Task ID"
 msgstr "Task ID"
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr "Started"
 
@@ -5456,68 +5498,68 @@ msgstr "Create new"
 msgid "Filter by enabled status"
 msgstr "Filter by enabled status"
 
-#: src/tables/settings/UserTable.tsx:69
+#: src/tables/settings/UserTable.tsx:79
 msgid "User with id {id} not found"
 msgstr "User with id {id} not found"
 
-#: src/tables/settings/UserTable.tsx:71
+#: src/tables/settings/UserTable.tsx:81
 msgid "An error occurred while fetching user details"
 msgstr "An error occurred while fetching user details"
 
-#: src/tables/settings/UserTable.tsx:89
+#: src/tables/settings/UserTable.tsx:99
 msgid "Is Active"
 msgstr "Is Active"
 
-#: src/tables/settings/UserTable.tsx:90
+#: src/tables/settings/UserTable.tsx:100
 msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
 msgstr "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
 
-#: src/tables/settings/UserTable.tsx:94
+#: src/tables/settings/UserTable.tsx:104
 msgid "Is Staff"
 msgstr "Is Staff"
 
-#: src/tables/settings/UserTable.tsx:95
+#: src/tables/settings/UserTable.tsx:105
 msgid "Designates whether the user can log into the django admin site."
 msgstr "Designates whether the user can log into the django admin site."
 
-#: src/tables/settings/UserTable.tsx:99
+#: src/tables/settings/UserTable.tsx:109
 msgid "Is Superuser"
 msgstr "Is Superuser"
 
-#: src/tables/settings/UserTable.tsx:100
+#: src/tables/settings/UserTable.tsx:110
 msgid "Designates that this user has all permissions without explicitly assigning them."
 msgstr "Designates that this user has all permissions without explicitly assigning them."
 
-#: src/tables/settings/UserTable.tsx:110
+#: src/tables/settings/UserTable.tsx:120
 msgid "You cannot edit the rights for the currently logged-in user."
 msgstr "You cannot edit the rights for the currently logged-in user."
 
-#: src/tables/settings/UserTable.tsx:139
+#: src/tables/settings/UserTable.tsx:151
 msgid "No groups"
 msgstr "No groups"
 
-#: src/tables/settings/UserTable.tsx:207
+#: src/tables/settings/UserTable.tsx:231
 msgid "Delete user"
 msgstr "Delete user"
 
-#: src/tables/settings/UserTable.tsx:208
+#: src/tables/settings/UserTable.tsx:232
 msgid "User deleted"
 msgstr "User deleted"
 
-#: src/tables/settings/UserTable.tsx:210
+#: src/tables/settings/UserTable.tsx:234
 msgid "Are you sure you want to delete this user?"
 msgstr "Are you sure you want to delete this user?"
 
-#: src/tables/settings/UserTable.tsx:220
-#: src/tables/settings/UserTable.tsx:236
+#: src/tables/settings/UserTable.tsx:240
+#: src/tables/settings/UserTable.tsx:258
 msgid "Add user"
 msgstr "Add user"
 
-#: src/tables/settings/UserTable.tsx:228
+#: src/tables/settings/UserTable.tsx:248
 msgid "Added user"
 msgstr "Added user"
 
-#: src/tables/settings/UserTable.tsx:245
+#: src/tables/settings/UserTable.tsx:270
 msgid "Edit user"
 msgstr "Edit user"
 
@@ -5743,67 +5785,79 @@ msgstr "No Result"
 msgid "Attachment"
 msgstr "Attachment"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:306
-#: src/tables/stock/StockItemTestResultTable.tsx:361
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr "Test station"
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr "Finished"
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr "Add Test Result"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr "Test result added"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:316
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr "Edit Test Result"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr "Test result updated"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:325
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr "Delete Test Result"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr "Test result deleted"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr "Test Passed"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr "Test result has been recorded"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:294
+#: src/tables/stock/StockItemTestResultTable.tsx:322
+msgid "Failed to record test result"
+msgstr "Failed to record test result"
+
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr "Pass Test"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:342
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr "Required"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:343
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr "Show results for required tests"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:347
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr "Include Installed"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:348
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr "Show results for installed stock items"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:352
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr "Passed"
 
-#: src/tables/stock/StockItemTestResultTable.tsx:353
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr "Show only passed tests"
 
diff --git a/src/frontend/src/locales/es-mx/messages.po b/src/frontend/src/locales/es-mx/messages.po
index 6db1ce6b48e3..e97214e6c8ea 100644
--- a/src/frontend/src/locales/es-mx/messages.po
+++ b/src/frontend/src/locales/es-mx/messages.po
@@ -17,61 +17,61 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:63
+#: src/components/details/DetailsImage.tsx:64
 msgid "Remove Image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:66
+#: src/components/details/DetailsImage.tsx:67
 msgid "Remove the associated image from this item?"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:69
+#: src/components/details/DetailsImage.tsx:70
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:69
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/details/DetailsImage.tsx:70
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
-#: src/tables/InvenTreeTable.tsx:456
+#: src/tables/FilterSelectDrawer.tsx:218
+#: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:97
+#: src/components/details/DetailsImage.tsx:98
 msgid "Drag and drop to upload"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:100
+#: src/components/details/DetailsImage.tsx:101
 msgid "Click to select file(s)"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:222
+#: src/components/details/DetailsImage.tsx:223
 msgid "Clear"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:225
-#: src/components/forms/ApiForm.tsx:451
+#: src/components/details/DetailsImage.tsx:226
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:265
+#: src/components/details/DetailsImage.tsx:266
 msgid "Select from existing images"
 msgstr ""
 
@@ -83,11 +83,11 @@ msgstr ""
 msgid "Upload new image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:295
+#: src/components/details/DetailsImage.tsx:293
 msgid "Upload Image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:308
+#: src/components/details/DetailsImage.tsx:306
 msgid "Delete image"
 msgstr ""
 
@@ -128,8 +128,8 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: src/components/details/PartIcons.tsx:82
-#: src/tables/part/PartTable.tsx:243
-#: src/tables/part/PartTable.tsx:247
+#: src/tables/part/PartTable.tsx:242
+#: src/tables/part/PartTable.tsx:246
 #: src/tables/part/PartVariantTable.tsx:25
 msgid "Virtual"
 msgstr ""
@@ -150,94 +150,94 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:132
+#: src/components/forms/ApiForm.tsx:130
 #: src/functions/forms.tsx:259
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:323
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:396
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:487
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:507
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
 #: src/pages/Index/Scan.tsx:332
 #: src/pages/Notifications.tsx:123
-#: src/tables/InvenTreeTable.tsx:455
-#: src/tables/RowActions.tsx:71
+#: src/tables/InvenTreeTable.tsx:470
+#: src/tables/RowActions.tsx:72
 #: src/tables/plugin/PluginListTable.tsx:473
 #: src/tables/settings/TemplateTable.tsx:105
 #: src/tables/settings/TemplateTable.tsx:154
@@ -245,65 +245,65 @@ msgstr ""
 msgid "Delete"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -312,69 +312,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -385,8 +385,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -436,15 +437,16 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
 #: src/pages/ErrorPage.tsx:12
 #: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:415
-#: src/tables/InvenTreeTable.tsx:488
+#: src/tables/InvenTreeTable.tsx:427
+#: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -513,7 +515,7 @@ msgid "Unlink custom barcode"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:180
-#: src/tables/RowActions.tsx:51
+#: src/tables/RowActions.tsx:52
 #: src/tables/settings/TemplateTable.tsx:87
 #: src/tables/settings/TemplateTable.tsx:150
 #: src/tables/settings/TemplateTable.tsx:287
@@ -525,8 +527,8 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
-#: src/tables/RowActions.tsx:31
+#: src/pages/stock/StockDetail.tsx:428
+#: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
 
@@ -543,7 +545,7 @@ msgid "Read More"
 msgstr ""
 
 #: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:407
+#: src/tables/InvenTreeTable.tsx:419
 msgid "Unknown error"
 msgstr ""
 
@@ -837,13 +839,13 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
 #: src/components/nav/MainMenu.tsx:60
 #: src/defaults/menuItems.tsx:63
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:161
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:172
 msgid "Admin Center"
 msgstr ""
 
@@ -877,7 +879,7 @@ msgid "Pages"
 msgstr ""
 
 #: src/components/nav/NavigationDrawer.tsx:67
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:122
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:133
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41
 msgid "Plugins"
 msgstr ""
@@ -915,7 +917,7 @@ msgstr ""
 
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
-#: src/pages/Index/Settings/SystemSettings.tsx:164
+#: src/pages/Index/Settings/SystemSettings.tsx:163
 #: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
@@ -954,7 +956,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -973,20 +975,20 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:732
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:72
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:22
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
-#: src/pages/Index/Settings/SystemSettings.tsx:169
-#: src/pages/part/CategoryDetail.tsx:103
+#: src/pages/Index/Settings/SystemSettings.tsx:168
+#: src/pages/part/CategoryDetail.tsx:104
 #: src/pages/part/CategoryDetail.tsx:183
 #: src/pages/part/CategoryDetail.tsx:213
-#: src/pages/part/PartDetail.tsx:617
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1009,8 +1011,8 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
-#: src/tables/purchasing/SupplierPartTable.tsx:66
+#: src/pages/stock/StockDetail.tsx:157
+#: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
 
@@ -1019,7 +1021,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1034,15 +1036,15 @@ msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1094,7 +1096,7 @@ msgid "Project Code"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:113
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:92
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:97
 msgid "Project Codes"
 msgstr ""
 
@@ -1105,10 +1107,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:550
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1125,14 +1127,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:556
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1152,7 +1154,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1193,7 +1195,7 @@ msgid "User"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:177
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:68
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:73
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
 msgid "Users"
 msgstr ""
@@ -1205,23 +1207,23 @@ msgstr ""
 #: src/components/render/Part.tsx:10
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:200
-#: src/pages/part/PartDetail.tsx:473
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/Index/Settings/SystemSettings.tsx:199
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122
+#: src/pages/stock/StockDetail.tsx:135
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
 msgstr ""
 
@@ -1417,10 +1419,6 @@ msgstr ""
 #~ msgid "Are you sure you want to remove this parameter?"
 #~ msgstr ""
 
-#: src/components/tables/part/PartParameterTable.tsx:150
-#~ msgid "Add Part Parameter"
-#~ msgstr ""
-
 #: src/components/tables/part/PartParameterTable.tsx:159
 #~ msgid "Part parameter added"
 #~ msgstr ""
@@ -1791,58 +1789,62 @@ msgid "Korean"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:37
-msgid "Dutch"
+msgid "Latvian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:38
-msgid "Norwegian"
+msgid "Dutch"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:39
-msgid "Polish"
+msgid "Norwegian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:40
-msgid "Portuguese"
+msgid "Polish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:41
-msgid "Portuguese (Brazilian)"
+msgid "Portuguese"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:42
-msgid "Russian"
+msgid "Portuguese (Brazilian)"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:43
-msgid "Slovak"
+msgid "Russian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:44
-msgid "Slovenian"
+msgid "Slovak"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:45
-msgid "Swedish"
+msgid "Slovenian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:46
-msgid "Thai"
+msgid "Swedish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:47
-msgid "Turkish"
+msgid "Thai"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:48
-msgid "Vietnamese"
+msgid "Turkish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:49
-msgid "Chinese (Simplified)"
+msgid "Vietnamese"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:50
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: src/contexts/LanguageContext.tsx:51
 msgid "Chinese (Traditional)"
 msgstr ""
 
@@ -1867,7 +1869,7 @@ msgid "Recently Updated"
 msgstr ""
 
 #: src/defaults/dashboardItems.tsx:50
-#: src/tables/part/PartTable.tsx:225
+#: src/tables/part/PartTable.tsx:224
 msgid "Low Stock"
 msgstr ""
 
@@ -1943,7 +1945,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2160,7 +2162,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2218,10 +2220,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2230,11 +2228,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:195
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2243,20 +2245,20 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/tables/RowActions.tsx:151
+#: src/tables/RowActions.tsx:148
 msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:305
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2269,12 +2271,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:690
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2391,7 +2393,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2739,44 +2741,49 @@ msgstr ""
 #~ msgid "Advanced Amininistrative Options for InvenTree"
 #~ msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:74
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:79
 msgid "Background Tasks"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:80
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:85
 msgid "Error Reports"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:86
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:91
 msgid "Currencies"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:104
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:109
 msgid "Custom Units"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:110
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:115
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:116
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:121
+msgid "Category Parameters"
+msgstr ""
+
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:127
 msgid "Templates"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:128
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:139
 #: src/tables/machine/MachineTypeTable.tsx:281
 msgid "Machines"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:138
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:149
 msgid "Quick Actions"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:143
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:154
 msgid "Add a new user"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:162
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:173
 msgid "Advanced Options"
 msgstr ""
 
@@ -2793,7 +2800,7 @@ msgid "There are no machine registry errors."
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28
-#: src/tables/settings/UserTable.tsx:106
+#: src/tables/settings/UserTable.tsx:116
 msgid "Info"
 msgstr ""
 
@@ -2834,7 +2841,7 @@ msgid "Failed Tasks"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:141
+#: src/pages/Index/Settings/SystemSettings.tsx:140
 msgid "Labels"
 msgstr ""
 
@@ -2872,7 +2879,7 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:498
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -2885,7 +2892,7 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18
-#: src/tables/settings/UserTable.tsx:124
+#: src/tables/settings/UserTable.tsx:135
 msgid "Groups"
 msgstr ""
 
@@ -2907,7 +2914,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -2916,28 +2923,28 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:135
-msgid "Exchange Rates"
-msgstr ""
+#~ msgid "Exchange Rates"
+#~ msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:147
+#: src/pages/Index/Settings/SystemSettings.tsx:146
 #: src/pages/Index/Settings/UserSettings.tsx:99
 msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:568
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -2995,7 +3002,7 @@ msgstr ""
 #: src/pages/sales/SalesOrderDetail.tsx:78
 #: src/tables/machine/MachineListTable.tsx:323
 #: src/tables/purchasing/PurchaseOrderTable.tsx:55
-#: src/tables/sales/ReturnOrderTable.tsx:45
+#: src/tables/sales/ReturnOrderTable.tsx:41
 #: src/tables/sales/SalesOrderTable.tsx:52
 #: src/tables/stock/StockItemTable.tsx:252
 msgid "Status"
@@ -3010,15 +3017,15 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:116
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
-#: src/tables/ColumnRenderers.tsx:52
+#: src/pages/stock/LocationDetail.tsx:93
+#: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
 #: src/tables/machine/MachineTypeTable.tsx:213
@@ -3047,7 +3054,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3095,10 +3102,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr ""
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr ""
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3125,23 +3128,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:590
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:602
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:185
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3193,8 +3195,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3203,7 +3205,8 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
-#: src/tables/sales/ReturnOrderTable.tsx:64
+#: src/pages/stock/StockDetail.tsx:214
+#: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
 msgstr ""
@@ -3240,57 +3243,56 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
-#: src/tables/purchasing/ManufacturerPartTable.tsx:57
+#: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/CategoryDetail.tsx:203
-#: src/pages/part/PartDetail.tsx:467
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:537
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
-#: src/tables/purchasing/ManufacturerPartTable.tsx:101
+#: src/pages/company/ManufacturerPartDetail.tsx:187
+#: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:90
-#: src/tables/ColumnRenderers.tsx:78
+#: src/tables/ColumnRenderers.tsx:105
 msgid "Note"
 msgstr ""
 
@@ -3300,14 +3302,14 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:143
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:107
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:143
-#: src/tables/purchasing/SupplierPartTable.tsx:123
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:105
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:141
+#: src/tables/purchasing/SupplierPartTable.tsx:120
 msgid "Pack Quantity"
 msgstr ""
 
@@ -3337,137 +3339,138 @@ msgid "Supplier Part Actions"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:254
-#: src/tables/purchasing/SupplierPartTable.tsx:193
+#: src/tables/purchasing/SupplierPartTable.tsx:190
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:122
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
+#: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:135
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:189
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:201
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:207
-#: src/tables/bom/BomTable.tsx:188
+#: src/pages/part/PartDetail.tsx:215
+#: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:216
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:227
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:237
-#: src/tables/bom/BomTable.tsx:212
+#: src/pages/part/PartDetail.tsx:245
+#: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
-#: src/tables/bom/BomTable.tsx:196
-#: src/tables/part/PartTable.tsx:92
+#: src/pages/part/PartDetail.tsx:252
+#: src/tables/bom/BomTable.tsx:193
+#: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:253
-#: src/tables/bom/UsedInTable.tsx:66
+#: src/pages/part/PartDetail.tsx:261
+#: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
-#: src/tables/part/PartTable.tsx:177
+#: src/tables/part/PartTable.tsx:176
 #: src/tables/part/PartVariantTable.tsx:15
 #: src/tables/plugin/PluginListTable.tsx:190
 #: src/tables/plugin/PluginListTable.tsx:634
@@ -3475,41 +3478,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:258
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:263
-#: src/tables/bom/BomTable.tsx:240
+#: src/pages/part/PartDetail.tsx:271
+#: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:268
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:273
-#: src/tables/bom/BomTable.tsx:235
+#: src/pages/part/PartDetail.tsx:281
+#: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:278
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:283
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:288
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:296
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:301
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3517,84 +3520,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:315
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:326
-#: src/tables/bom/BomTable.tsx:137
-#: src/tables/part/PartTable.tsx:161
-msgid "Price Range"
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
 msgstr ""
 
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:361
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:334
+#: src/tables/bom/BomTable.tsx:134
+#: src/tables/part/PartTable.tsx:160
+msgid "Price Range"
+msgstr ""
+
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:396
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:461
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:485
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:524
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:573
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:584
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:641
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:672
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:680
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:691
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:701
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3649,7 +3652,7 @@ msgstr ""
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:181
 #: src/pages/sales/ReturnOrderDetail.tsx:147
 #: src/pages/sales/SalesOrderDetail.tsx:151
-#: src/tables/ColumnRenderers.tsx:137
+#: src/tables/ColumnRenderers.tsx:164
 msgid "Target Date"
 msgstr ""
 
@@ -3677,55 +3680,55 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
-#: src/tables/part/PartTable.tsx:117
+#: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
 #: src/tables/stock/StockItemTable.tsx:268
 msgid "Available"
@@ -3739,14 +3742,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr ""
@@ -3755,69 +3762,69 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/ColumnRenderers.tsx:155
 #: src/tables/plugin/PluginListTable.tsx:182
 #: src/tables/stock/StockItemTestResultTable.tsx:194
 msgid "Date"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:174
+#: src/tables/ColumnRenderers.tsx:201
 #: src/tables/settings/CurrencyTable.tsx:23
 msgid "Currency"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:188
+#: src/tables/ColumnRenderers.tsx:215
 msgid "Total Price"
 msgstr ""
 
@@ -3890,212 +3897,212 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:89
-#: src/tables/InvenTreeTable.tsx:354
-#: src/tables/InvenTreeTable.tsx:375
+#: src/tables/InvenTreeTable.tsx:101
+#: src/tables/InvenTreeTable.tsx:366
+#: src/tables/InvenTreeTable.tsx:387
 msgid "No records found"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:386
+#: src/tables/InvenTreeTable.tsx:398
 msgid "Server returned incorrect data type"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:394
+#: src/tables/InvenTreeTable.tsx:406
 msgid "Bad request"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:397
+#: src/tables/InvenTreeTable.tsx:409
 msgid "Unauthorized"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:400
+#: src/tables/InvenTreeTable.tsx:412
 msgid "Forbidden"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:403
+#: src/tables/InvenTreeTable.tsx:415
 msgid "Not found"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:445
-#: src/tables/InvenTreeTable.tsx:536
+#: src/tables/InvenTreeTable.tsx:460
+#: src/tables/InvenTreeTable.tsx:575
 msgid "Delete selected records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:449
+#: src/tables/InvenTreeTable.tsx:464
 msgid "Are you sure you want to delete the selected records?"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:451
+#: src/tables/InvenTreeTable.tsx:466
 msgid "This action cannot be undone!"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:479
+#: src/tables/InvenTreeTable.tsx:494
 msgid "Deleted records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:495
 msgid "Records were deleted successfully"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:504
 msgid "Failed to delete records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:517
-#: src/tables/InvenTreeTable.tsx:518
+#: src/tables/InvenTreeTable.tsx:556
+#: src/tables/InvenTreeTable.tsx:557
 msgid "Barcode actions"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:526
-#: src/tables/InvenTreeTable.tsx:527
+#: src/tables/InvenTreeTable.tsx:565
+#: src/tables/InvenTreeTable.tsx:566
 msgid "Print actions"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:552
+#: src/tables/InvenTreeTable.tsx:591
 msgid "Refresh data"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:570
+#: src/tables/InvenTreeTable.tsx:609
 msgid "Table filters"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:76
+#: src/tables/bom/BomTable.tsx:73
 msgid "This BOM item is defined for a different parent"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:91
+#: src/tables/bom/BomTable.tsx:88
 msgid "Part Information"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:155
-#: src/tables/part/PartTable.tsx:134
+#: src/tables/bom/BomTable.tsx:152
+#: src/tables/part/PartTable.tsx:133
 msgid "No stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:163
+#: src/tables/bom/BomTable.tsx:160
 #: src/tables/build/BuildLineTable.tsx:101
-#: src/tables/part/PartTable.tsx:125
+#: src/tables/part/PartTable.tsx:124
 msgid "External stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:171
+#: src/tables/bom/BomTable.tsx:168
 #: src/tables/build/BuildLineTable.tsx:64
 msgid "Includes substitute stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:180
+#: src/tables/bom/BomTable.tsx:177
 #: src/tables/build/BuildLineTable.tsx:74
 msgid "Includes variant stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:205
-#: src/tables/part/PartTable.tsx:153
+#: src/tables/bom/BomTable.tsx:202
+#: src/tables/part/PartTable.tsx:152
 #: src/tables/stock/StockItemTable.tsx:190
 msgid "Stock Information"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:216
+#: src/tables/bom/BomTable.tsx:213
 #: src/tables/build/BuildLineTable.tsx:179
 msgid "Consumable item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:236
+#: src/tables/bom/BomTable.tsx:233
 msgid "Show trackable items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:241
+#: src/tables/bom/BomTable.tsx:238
 msgid "Show asssmbled items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:245
+#: src/tables/bom/BomTable.tsx:242
 msgid "Show items with available stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:249
+#: src/tables/bom/BomTable.tsx:246
 msgid "Show items on order"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:253
+#: src/tables/bom/BomTable.tsx:250
 msgid "Show validated items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:257
-#: src/tables/bom/UsedInTable.tsx:58
+#: src/tables/bom/BomTable.tsx:254
+#: src/tables/bom/UsedInTable.tsx:54
 msgid "Show inherited items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:261
-#: src/tables/bom/UsedInTable.tsx:62
+#: src/tables/bom/BomTable.tsx:258
+#: src/tables/bom/UsedInTable.tsx:58
 msgid "Show optional items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:265
+#: src/tables/bom/BomTable.tsx:262
 msgid "Show consumable items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:269
+#: src/tables/bom/BomTable.tsx:266
 msgid "Has Pricing"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:270
+#: src/tables/bom/BomTable.tsx:267
 msgid "Show items with pricing"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:281
+#: src/tables/bom/BomTable.tsx:278
 msgid "View BOM"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:292
+#: src/tables/bom/BomTable.tsx:289
 msgid "Validate BOM line"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:300
+#: src/tables/bom/BomTable.tsx:297
 msgid "Edit Substitutes"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:314
+#: src/tables/bom/BomTable.tsx:311
 msgid "Edit Bom Item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:316
+#: src/tables/bom/BomTable.tsx:313
 msgid "Bom item updated"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:331
+#: src/tables/bom/BomTable.tsx:328
 msgid "Delete Bom Item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:332
+#: src/tables/bom/BomTable.tsx:329
 msgid "Bom item deleted"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:334
+#: src/tables/bom/BomTable.tsx:331
 msgid "Are you sure you want to remove this BOM item?"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/bom/UsedInTable.tsx:63
 msgid "Show active assemblies"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:71
-#: src/tables/part/PartTable.tsx:201
+#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/part/PartTable.tsx:200
 #: src/tables/part/PartVariantTable.tsx:30
 msgid "Trackable"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:72
+#: src/tables/bom/UsedInTable.tsx:68
 msgid "Show trackable assemblies"
 msgstr ""
 
@@ -4150,7 +4157,7 @@ msgstr ""
 
 #: src/tables/build/BuildOrderTable.tsx:107
 #: src/tables/purchasing/PurchaseOrderTable.tsx:56
-#: src/tables/sales/ReturnOrderTable.tsx:46
+#: src/tables/sales/ReturnOrderTable.tsx:42
 #: src/tables/sales/SalesOrderTable.tsx:53
 msgid "Filter by order status"
 msgstr ""
@@ -4185,11 +4192,11 @@ msgstr ""
 msgid "Are you sure you want to delete this address?"
 msgstr ""
 
-#: src/tables/company/CompanyTable.tsx:62
+#: src/tables/company/CompanyTable.tsx:63
 msgid "New Company"
 msgstr ""
 
-#: src/tables/company/CompanyTable.tsx:82
+#: src/tables/company/CompanyTable.tsx:83
 msgid "Add Company"
 msgstr ""
 
@@ -4209,35 +4216,35 @@ msgstr ""
 msgid "Add contact"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:161
+#: src/tables/general/AttachmentTable.tsx:162
 msgid "File uploaded"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:162
+#: src/tables/general/AttachmentTable.tsx:163
 msgid "File {0} uploaded successfully"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:173
+#: src/tables/general/AttachmentTable.tsx:174
 msgid "Upload Error"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:174
+#: src/tables/general/AttachmentTable.tsx:175
 msgid "File could not be uploaded"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:187
+#: src/tables/general/AttachmentTable.tsx:188
 msgid "Add attachment"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:206
+#: src/tables/general/AttachmentTable.tsx:207
 msgid "Add external link"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:237
+#: src/tables/general/AttachmentTable.tsx:238
 msgid "No attachments found"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:252
+#: src/tables/general/AttachmentTable.tsx:253
 msgid "Upload attachment"
 msgstr ""
 
@@ -4397,13 +4404,27 @@ msgstr ""
 msgid "Message"
 msgstr ""
 
-#: src/tables/part/ParametricPartTable.tsx:80
+#: src/tables/part/ParametricPartTable.tsx:75
 #: src/tables/part/PartParameterTable.tsx:83
 msgid "Internal Units"
 msgstr ""
 
+#: src/tables/part/ParametricPartTable.tsx:80
+msgid "Edit parameter"
+msgstr ""
+
+#: src/tables/part/ParametricPartTable.tsx:133
+msgid "Add Part Parameter"
+msgstr ""
+
+#: src/tables/part/ParametricPartTable.tsx:146
+#: src/tables/part/PartParameterTable.tsx:121
+#: src/tables/part/PartParameterTable.tsx:143
+msgid "Edit Part Parameter"
+msgstr ""
+
 #: src/tables/part/PartCategoryTable.tsx:64
-#: src/tables/part/PartTable.tsx:189
+#: src/tables/part/PartTable.tsx:188
 msgid "Include Subcategories"
 msgstr ""
 
@@ -4423,13 +4444,29 @@ msgstr ""
 msgid "Add Part Category"
 msgstr ""
 
-#: src/tables/part/PartParameterTable.tsx:106
-msgid "New Part Parameter"
+#: src/tables/part/PartCategoryTemplateTable.tsx:39
+#: src/tables/part/PartCategoryTemplateTable.tsx:132
+msgid "Add Category Parameter"
 msgstr ""
 
-#: src/tables/part/PartParameterTable.tsx:121
-#: src/tables/part/PartParameterTable.tsx:143
-msgid "Edit Part Parameter"
+#: src/tables/part/PartCategoryTemplateTable.tsx:47
+msgid "Edit Category Parameter"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:55
+msgid "Delete Category Parameter"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:77
+msgid "Parameter Template"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:93
+msgid "[{0}]"
+msgstr ""
+
+#: src/tables/part/PartParameterTable.tsx:106
+msgid "New Part Parameter"
 msgstr ""
 
 #: src/tables/part/PartParameterTable.tsx:129
@@ -4463,7 +4500,7 @@ msgid "Show templates with choices"
 msgstr ""
 
 #: src/tables/part/PartParameterTemplateTable.tsx:41
-#: src/tables/part/PartTable.tsx:207
+#: src/tables/part/PartTable.tsx:206
 msgid "Has Units"
 msgstr ""
 
@@ -4487,101 +4524,101 @@ msgstr ""
 msgid "Add parameter template"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:77
+#: src/tables/part/PartTable.tsx:76
 msgid "Minimum stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:86
+#: src/tables/part/PartTable.tsx:85
 msgid "On Order"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:99
+#: src/tables/part/PartTable.tsx:98
 msgid "Build Order Allocations"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:108
+#: src/tables/part/PartTable.tsx:107
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:178
+#: src/tables/part/PartTable.tsx:177
 msgid "Filter by part active status"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:183
+#: src/tables/part/PartTable.tsx:182
 #: src/tables/stock/StockItemTable.tsx:258
 msgid "Assembly"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:184
+#: src/tables/part/PartTable.tsx:183
 msgid "Filter by assembly attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:190
+#: src/tables/part/PartTable.tsx:189
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:195
+#: src/tables/part/PartTable.tsx:194
 msgid "Component"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:196
+#: src/tables/part/PartTable.tsx:195
 msgid "Filter by component attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:202
+#: src/tables/part/PartTable.tsx:201
 msgid "Filter by trackable attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:208
+#: src/tables/part/PartTable.tsx:207
 msgid "Filter by parts which have units"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:213
+#: src/tables/part/PartTable.tsx:212
 msgid "Has IPN"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:214
+#: src/tables/part/PartTable.tsx:213
 msgid "Filter by parts which have an internal part number"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:219
+#: src/tables/part/PartTable.tsx:218
 msgid "Has Stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:220
+#: src/tables/part/PartTable.tsx:219
 msgid "Filter by parts which have stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:226
+#: src/tables/part/PartTable.tsx:225
 msgid "Filter by parts which have low stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:231
+#: src/tables/part/PartTable.tsx:230
 msgid "Purchaseable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:232
+#: src/tables/part/PartTable.tsx:231
 msgid "Filter by parts which are purchaseable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:237
+#: src/tables/part/PartTable.tsx:236
 msgid "Salable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:238
+#: src/tables/part/PartTable.tsx:237
 msgid "Filter by parts which are salable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:244
+#: src/tables/part/PartTable.tsx:243
 msgid "Filter by parts which are virtual"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:248
+#: src/tables/part/PartTable.tsx:247
 msgid "Not Virtual"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:276
-#: src/tables/part/PartTable.tsx:292
+#: src/tables/part/PartTable.tsx:275
+#: src/tables/part/PartTable.tsx:291
 msgid "Add Part"
 msgstr ""
 
@@ -4877,9 +4914,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr ""
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -4909,83 +4950,83 @@ msgstr ""
 msgid "Are you sure you want to delete this parameter?"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:67
+#: src/tables/purchasing/ManufacturerPartTable.tsx:63
 msgid "Create Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:82
+#: src/tables/purchasing/ManufacturerPartTable.tsx:78
 msgid "Add Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:104
+#: src/tables/purchasing/ManufacturerPartTable.tsx:100
 msgid "Manufacturer part updated"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:115
+#: src/tables/purchasing/ManufacturerPartTable.tsx:111
 msgid "Delete Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:116
+#: src/tables/purchasing/ManufacturerPartTable.tsx:112
 msgid "Manufacturer part deleted"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:118
+#: src/tables/purchasing/ManufacturerPartTable.tsx:114
 msgid "Are you sure you want to remove this manufacturer part?"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:86
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:84
 msgid "Part Description"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:113
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:111
 msgid "Total Quantity"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:129
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:127
 msgid "Received"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:148
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:146
 msgid "Supplier Code"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:155
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:153
 msgid "Supplier Link"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:162
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:160
 msgid "Manufacturer Code"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:168
 msgid "Unit Price"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:176
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:174
 msgid "Destination"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:193
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:188
 msgid "Add Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:208
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:203
 msgid "Edit Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:216
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:211
 msgid "Delete Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:227
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:222
 msgid "Receive line item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:256
 msgid "Add line item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:266
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
 msgid "Receive items"
 msgstr ""
 
@@ -4994,47 +5035,47 @@ msgstr ""
 msgid "Add Purchase Order"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:91
+#: src/tables/purchasing/SupplierPartTable.tsx:88
 msgid "MPN"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:114
+#: src/tables/purchasing/SupplierPartTable.tsx:111
 msgid "Base units"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:140
+#: src/tables/purchasing/SupplierPartTable.tsx:137
 msgid "Updated"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:159
+#: src/tables/purchasing/SupplierPartTable.tsx:156
 msgid "Add Supplier Part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:162
+#: src/tables/purchasing/SupplierPartTable.tsx:159
 msgid "Supplier part created"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:171
+#: src/tables/purchasing/SupplierPartTable.tsx:168
 msgid "Add supplier part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:196
+#: src/tables/purchasing/SupplierPartTable.tsx:193
 msgid "Supplier part updated"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:207
+#: src/tables/purchasing/SupplierPartTable.tsx:204
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:208
+#: src/tables/purchasing/SupplierPartTable.tsx:205
 msgid "Supplier part deleted"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:210
+#: src/tables/purchasing/SupplierPartTable.tsx:207
 msgid "Are you sure you want to remove this supplier part?"
 msgstr ""
 
-#: src/tables/sales/ReturnOrderTable.tsx:99
+#: src/tables/sales/ReturnOrderTable.tsx:95
 msgid "Add Return Order"
 msgstr ""
 
@@ -5112,6 +5153,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5213,68 +5255,68 @@ msgstr ""
 msgid "Filter by enabled status"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:69
+#: src/tables/settings/UserTable.tsx:79
 msgid "User with id {id} not found"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:71
+#: src/tables/settings/UserTable.tsx:81
 msgid "An error occurred while fetching user details"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:89
+#: src/tables/settings/UserTable.tsx:99
 msgid "Is Active"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:90
+#: src/tables/settings/UserTable.tsx:100
 msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:94
+#: src/tables/settings/UserTable.tsx:104
 msgid "Is Staff"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:95
+#: src/tables/settings/UserTable.tsx:105
 msgid "Designates whether the user can log into the django admin site."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:99
+#: src/tables/settings/UserTable.tsx:109
 msgid "Is Superuser"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:100
+#: src/tables/settings/UserTable.tsx:110
 msgid "Designates that this user has all permissions without explicitly assigning them."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:110
+#: src/tables/settings/UserTable.tsx:120
 msgid "You cannot edit the rights for the currently logged-in user."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:139
+#: src/tables/settings/UserTable.tsx:151
 msgid "No groups"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:207
+#: src/tables/settings/UserTable.tsx:231
 msgid "Delete user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:208
+#: src/tables/settings/UserTable.tsx:232
 msgid "User deleted"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:210
+#: src/tables/settings/UserTable.tsx:234
 msgid "Are you sure you want to delete this user?"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:220
-#: src/tables/settings/UserTable.tsx:236
+#: src/tables/settings/UserTable.tsx:240
+#: src/tables/settings/UserTable.tsx:258
 msgid "Add user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:228
+#: src/tables/settings/UserTable.tsx:248
 msgid "Added user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:245
+#: src/tables/settings/UserTable.tsx:270
 msgid "Edit user"
 msgstr ""
 
@@ -5500,67 +5542,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:306
-#: src/tables/stock/StockItemTestResultTable.tsx:361
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:316
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:325
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:294
+#: src/tables/stock/StockItemTestResultTable.tsx:322
+msgid "Failed to record test result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:342
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:343
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:347
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:348
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:352
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:353
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/es/messages.po b/src/frontend/src/locales/es/messages.po
index bc12aa0c3ee7..4369c0373a7b 100644
--- a/src/frontend/src/locales/es/messages.po
+++ b/src/frontend/src/locales/es/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: es_MX\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Spanish, Mexico\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -20,105 +20,105 @@ msgstr ""
 
 #: src/components/DashboardItemProxy.tsx:34
 msgid "Title"
-msgstr ""
+msgstr "Titulo"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
-msgstr ""
+msgstr "Copiado"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
-msgstr ""
+msgstr "Copiar"
 
 #: src/components/details/DetailsImage.tsx:64
 msgid "Remove Image"
-msgstr ""
+msgstr "Quitar imagen"
 
 #: src/components/details/DetailsImage.tsx:67
 msgid "Remove the associated image from this item?"
-msgstr ""
+msgstr "¿Eliminar imagen asociada al artículo?"
 
 #: src/components/details/DetailsImage.tsx:70
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
-msgstr ""
+msgstr "Eliminar"
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
-msgstr ""
+msgstr "Cancelar"
 
 #: src/components/details/DetailsImage.tsx:98
 msgid "Drag and drop to upload"
-msgstr ""
+msgstr "Arrastra y suelta para subir"
 
 #: src/components/details/DetailsImage.tsx:101
 msgid "Click to select file(s)"
-msgstr ""
+msgstr "Clic para seleccionar archivo(s)"
 
 #: src/components/details/DetailsImage.tsx:223
 msgid "Clear"
-msgstr ""
+msgstr "Borrar"
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
-msgstr ""
+msgstr "Aceptar"
 
 #: src/components/details/DetailsImage.tsx:266
 msgid "Select from existing images"
-msgstr ""
+msgstr "Seleccionar desde imágenes existentes"
 
 #: src/components/details/DetailsImage.tsx:274
 msgid "Select Image"
-msgstr ""
+msgstr "Seleccionar imagen"
 
 #: src/components/details/DetailsImage.tsx:286
 msgid "Upload new image"
-msgstr ""
+msgstr "Subir nueva imagen"
 
 #: src/components/details/DetailsImage.tsx:293
 msgid "Upload Image"
-msgstr ""
+msgstr "Subir Imagen"
 
 #: src/components/details/DetailsImage.tsx:306
 msgid "Delete image"
-msgstr ""
+msgstr "Eliminar imagen"
 
 #: src/components/details/PartIcons.tsx:28
 msgid "Part is not active"
-msgstr ""
+msgstr "La pieza no está activa"
 
 #: src/components/details/PartIcons.tsx:34
 msgid "Inactive"
-msgstr ""
+msgstr "Inactivo"
 
 #: src/components/details/PartIcons.tsx:41
 msgid "Part is a template part (variants can be made from this part)"
-msgstr ""
+msgstr "La pieza es una pieza de plantilla (se pueden hacer variantes de esta misma)"
 
 #: src/components/details/PartIcons.tsx:47
 msgid "Part can be assembled from other parts"
-msgstr ""
+msgstr "Esta pieza se puede ensamblar utilizando otras partes"
 
 #: src/components/details/PartIcons.tsx:53
 msgid "Part can be used in assemblies"
-msgstr ""
+msgstr "Esta pieza se puede usar en ensamblajes"
 
 #: src/components/details/PartIcons.tsx:59
 msgid "Part stock is tracked by serial number"
-msgstr ""
+msgstr "Stock de pieza será rastreado con número de serie"
 
 #: src/components/details/PartIcons.tsx:65
 msgid "Part can be purchased from external suppliers"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Inicio de sesión exitoso"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "¡Bienvenido de vuelta!"
 
@@ -268,13 +268,13 @@ msgstr "¡Bienvenido de vuelta!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Error al iniciar sesión"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Envío de correo exitoso"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Revisa tu bandeja de entrada para el enlace de inicio de sesión. Si tienes una cuenta, recibirás un enlace de inicio de sesión. Revisa también el correo no deseado."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Error de entrada"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Nombre de usuario"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Contraseña"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Tu contraseña"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Restablecer contraseña"
@@ -336,69 +336,69 @@ msgstr "Restablecer contraseña"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "Correo electrónico"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Te enviaremos un enlace para iniciar sesión - si estás registrado"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Envíame un correo electrónico"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "Nombre: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Órdenes de compra"
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr "En Stock"
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr "Agregar"
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr "Informe"
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr "Códigos de barras"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr "Precios"
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr "Informes"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Ordenes de Producción"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr "Cambiar a Configuración de Usuario"
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr "Proveedor"
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr "Parámetros"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr "Proveedores"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr "Activo"
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr "Contar stock"
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr "Agregar stock"
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr "Remover stock"
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr "Transferir"
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr "Transferir stock"
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr "Duplicar artículo de stock"
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/fa/messages.po b/src/frontend/src/locales/fa/messages.po
index b15d78c9dd44..0d1f22239558 100644
--- a/src/frontend/src/locales/fa/messages.po
+++ b/src/frontend/src/locales/fa/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: fa\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Persian\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/fi/messages.po b/src/frontend/src/locales/fi/messages.po
index 16412ddc63a5..118743ade16d 100644
--- a/src/frontend/src/locales/fi/messages.po
+++ b/src/frontend/src/locales/fi/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: fi\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 01:59\n"
 "Last-Translator: \n"
 "Language-Team: Finnish\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/fr/messages.po b/src/frontend/src/locales/fr/messages.po
index 91d966b606b4..e45b4c8f2a8c 100644
--- a/src/frontend/src/locales/fr/messages.po
+++ b/src/frontend/src/locales/fr/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: fr\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 01:59\n"
 "Last-Translator: \n"
 "Language-Team: French\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Titre"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr "Supprimer l'image associée de cet élément ?"
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr "Supprimer"
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr "Effacer"
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr "Erreur de formulaire"
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Succès"
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr "Erreur le formulaire existe"
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr "Mise à jour"
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "Supprimer"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Connexion réussie"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Bon retour parmi nous !"
 
@@ -268,13 +268,13 @@ msgstr "Bon retour parmi nous !"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Login invalide"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Vérifiez votre saisie et réessayez."
@@ -284,46 +284,46 @@ msgstr "Vérifiez votre saisie et réessayez."
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Envoi du mail réussi"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Vérifiez votre boîte de réception pour le lien de connexion. Si vous avez un compte, vous recevrez un lien de connexion. Vérifiez également dans le courrier indésirable."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Erreur d'entrée"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr "Ou continuer avec d'autres méthodes"
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Nom d'utilisateur"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr "Votre nom d'utilisateur"
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Mot de passe"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Mot de passe"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Réinitialiser le mot de passe"
@@ -336,69 +336,69 @@ msgstr "Réinitialiser le mot de passe"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "Email"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Nous vous enverrons un lien pour vous connecter - si vous êtes déjà inscrit"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Envoyez-moi un e-mail"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr "Utilisez votre nom d'utilisateur et votre mot de passe"
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr "Se connecter"
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr "Envoyer l'e-mail"
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr "Inscription réussie"
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr "Veuillez confirmer votre adresse e-mail pour finaliser l'inscription"
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr "Ceci sera utilisé pour une confirmation"
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr "Répétition du mot de passe"
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr "Répéter le mot de passe"
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr "S'enregistrer"
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr "Ou utiliser SSO"
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr "Pas encore de compte ?"
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr "Retourner au login"
 
@@ -409,9 +409,9 @@ msgstr "Serveur"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "Nom : {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Erreur"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr "Supprimer l’article"
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr "Dupliquer"
@@ -863,7 +863,7 @@ msgstr "Paramètres du compte"
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr "Les paramètres du système"
 
@@ -950,7 +950,7 @@ msgstr "Marqué comme lu"
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr "Catégories de composants"
 
@@ -988,7 +988,7 @@ msgstr "Aucun résultat disponible pour la requête"
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "Emplacements de stock"
 
@@ -1007,7 +1007,7 @@ msgstr "Modèle inconnu : {model}"
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr "Pièce"
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "Composants"
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr "Pièce fournisseur"
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr "Pièces du fournisseur"
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr "Pièces du fabricant"
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr "Pièces du fabricant"
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr "Catégorie de composant"
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr "Article en stock"
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "Articles en stock"
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr "Commande d’achat"
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Ordres d'achat"
@@ -1159,14 +1159,14 @@ msgstr "Lignes de commande d'achat"
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr "Ventes"
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Ordres de vente"
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr "Retour de commande"
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr "Tableau de bord"
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr "Actions"
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr "Vérifier si vous êtes déjà connecté"
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr "Unités personnalisées"
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr "Paramètres de la pièce"
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Ordres de fabrication"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr "Catégorie"
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr "Emplacement par défaut"
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr "Révision"
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr "Unités"
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr "Mots-clés"
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr "Lien"
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr "Stock Minimum"
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr "Sur commande"
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr "Alloué à l'ordre de construction"
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr "Alloué aux ordres de ventes"
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr "Peut être construit"
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr "Construire"
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr "Construire"
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr "Date de création"
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr "Fournisseur par Défaut"
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr "Fournisseur par Défaut"
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr "Échelle des prix"
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr "Dernier inventaire"
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr "Variants"
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr "Allocations"
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr "Disponible"
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr "Valeur"
 msgid "Select filter value"
 msgstr "Sélection de la valeur du filtre"
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr "Filtres des tables"
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "Ajouter un filtre"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr "Effacer filtres"
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/he/messages.po b/src/frontend/src/locales/he/messages.po
index 608387b3f3cb..90428f3db3fd 100644
--- a/src/frontend/src/locales/he/messages.po
+++ b/src/frontend/src/locales/he/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: he\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Hebrew\n"
 "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/hi/messages.po b/src/frontend/src/locales/hi/messages.po
index 6cdd5eb0a6be..746f0bf0c28b 100644
--- a/src/frontend/src/locales/hi/messages.po
+++ b/src/frontend/src/locales/hi/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: hi\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Hindi\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "शीर्षक"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "लॉगिन सफल"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "आपका पुनः स्वागत है"
 
@@ -268,13 +268,13 @@ msgstr "आपका पुनः स्वागत है"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "लॉगिन असफल"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "इनपुट त्रुटि"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "उपयोगकर्ता नाम"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "पासवर्ड"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "आपका पासवर्ड"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "पासवर्ड रीसेट करें"
@@ -336,69 +336,69 @@ msgstr "पासवर्ड रीसेट करें"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "ई-मेल"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/hu/messages.po b/src/frontend/src/locales/hu/messages.po
index 6c54c74d22b2..f11f355f8894 100644
--- a/src/frontend/src/locales/hu/messages.po
+++ b/src/frontend/src/locales/hu/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: hu\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Hungarian\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Cím"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr "Eltávolítás"
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr "Form hiba"
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Siker"
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr "Form hibák vannak"
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "Törlés"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Sikeres bejelentkezés"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Üdv újra!"
 
@@ -268,13 +268,13 @@ msgstr "Üdv újra!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Belépés sikertelen"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Ellenőrizd amit beírtál és próbáld újra."
@@ -284,46 +284,46 @@ msgstr "Ellenőrizd amit beírtál és próbáld újra."
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Levél kézbesítése sikeres"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "A bejelentkezési linket keresd a bejövő email fiókodban. Ellenőrizd a spameket is."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Beviteli hiba"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Felhasználónév"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Jelszó"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Jelszó"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Jelszó visszaállítása"
@@ -336,69 +336,69 @@ msgstr "Jelszó visszaállítása"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "Email"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Küldünk bejelentkezési linket - ha regisztrálva vagy"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Email küldés"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr "Bejelentkezés"
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr "Email küldés"
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr "Kiszolgáló"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "Név: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr "Státusz: <0>worker</0> ({0}), <1>plugins</1>{1}"
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr "Státusz: <0>worker</0> ({0}), <1>plugins</1>{1}"
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Hiba"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr "Tétel törlése"
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr "Másolás"
@@ -863,7 +863,7 @@ msgstr "Fiókbeállítások"
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr "Rendszerbeállítások"
 
@@ -950,7 +950,7 @@ msgstr "Megjelölés olvasottként"
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr "Alkatrész kategóriák"
 
@@ -988,7 +988,7 @@ msgstr "Nincs találat a keresésre"
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "Készlethelyek"
 
@@ -1007,7 +1007,7 @@ msgstr "Ismeretlen model: {model}"
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr "Alkatrész"
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "Alkatrészek"
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr "Beszállítói alkatrész"
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr "Beszállítói alkatrészek"
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr "Gyártói alkatrész"
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr "Gyártói alkatrészek"
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr "Alkatrész kategória"
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr "Készlet tétel"
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "Készlet tételek"
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr "Beszerzési rendelés"
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Beszerzési rendelések"
@@ -1159,14 +1159,14 @@ msgstr "Beszerzési rendelés tételei"
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr "Vevői rendelés"
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Vevői rendelések"
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr "Visszavétel"
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr "Szállítmány"
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr "Készlet"
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr "Sorozatszám"
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr "Irányítópult"
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr "Készlet tétel frissítve"
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr "Készleten"
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr "Műveletek"
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr "Hozzáadás"
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr "Mennyiség"
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr "Készlet áthelyezése"
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr "Leltározás"
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr "Ellenőrzöm hogy be vagy-e már jelentkezve"
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr "Alkatrész paraméterek"
 
@@ -3119,7 +3119,7 @@ msgstr "Jelentés"
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr "Alkatrészjegyzék"
 
@@ -3154,7 +3154,7 @@ msgstr "Vonalkódok"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr "Árazás"
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr "Riportolás"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr "Leltár"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Gyártási utasítások"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr "Felhasználói beállításra váltás"
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr "Készlet foglalása"
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr "Befejezetlen kimenetek"
@@ -3376,22 +3372,22 @@ msgstr "Alárendelt gyártások"
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr "Mellékletek"
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr "Megjegyzések"
 
@@ -3443,8 +3439,8 @@ msgstr "Beszállító"
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr "Gyártó"
@@ -3453,6 +3449,7 @@ msgstr "Gyártó"
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr "Cég szerkesztése"
 msgid "Company Actions"
 msgstr "Cég műveletek"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr "Paraméterek"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr "Beszállítók"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr "Beszállítói alkatrész szerkesztése"
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr "Elérési út"
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr "Szerkezeti"
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr "Kategória"
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr "IPN"
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr "Mértékegységek"
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr "Link"
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr "Rendelve"
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr "Gyártható"
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr "Gyártásban"
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr "Gyártásban"
 msgid "Active"
 msgstr "Aktív"
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr "Gyártmány alkatrész"
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr "Létrehozás dátuma"
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr "Ártartomány"
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr "Változatok"
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr "Foglalások"
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr "Felhasználva ebben"
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr "Gyártók"
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr "Ütemezés"
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr "Teszt sablonok"
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr "Kapcsolódó alkatrészek"
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr "Alkatrész szerkesztése"
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr "Készlet műveletek"
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr "Készlet számolása"
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr "Készlet áthelyezése"
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr "Alkatrész műveletek"
 
@@ -3931,53 +3928,53 @@ msgstr "Vevők"
 msgid "Pending Shipments"
 msgstr "Függő szállítmányok"
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr "Kiindulási alkatrész"
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr "Elérhető"
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr "Készlettörténet"
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr "Teszt adatok"
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr "Beépített tételek"
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr "Gyermek tételek"
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr "Készlet műveletek"
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr "Leltározás"
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr "Készlethez ad"
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr "Készlet csökkentése"
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr "Áthelyezés"
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr "Készlet áthelyezése"
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr "Készlet tétel másolása"
 
@@ -4144,15 +4145,15 @@ msgstr "Érték"
 msgid "Select filter value"
 msgstr "Szűrő érték kiválasztása"
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "Szűrő hozzáadása"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr "Minta"
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/id/messages.po b/src/frontend/src/locales/id/messages.po
index 0b28039b11fb..170b65880bd2 100644
--- a/src/frontend/src/locales/id/messages.po
+++ b/src/frontend/src/locales/id/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: id\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Indonesian\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/it/messages.po b/src/frontend/src/locales/it/messages.po
index 8bcbeda2ed7f..9d19407d8ac0 100644
--- a/src/frontend/src/locales/it/messages.po
+++ b/src/frontend/src/locales/it/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: it\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Italian\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/ja/messages.po b/src/frontend/src/locales/ja/messages.po
index 06342a2d2d19..7c67ebcfe3d3 100644
--- a/src/frontend/src/locales/ja/messages.po
+++ b/src/frontend/src/locales/ja/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: ja\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Japanese\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "タイトル"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "削除"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "ユーザー名"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "パスワード"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "パスワードを再設定"
@@ -336,69 +336,69 @@ msgstr "パスワードを再設定"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "メールアドレス"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "エラー"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr "既読にする"
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "在庫場所"
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr "パーツ"
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "パーツ"
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr "在庫商品"
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "在庫商品"
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr "在庫"
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr "価格"
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr "添付ファイル"
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr "メモ"
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr "値"
 msgid "Select filter value"
 msgstr "フィルタの値を選択"
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "フィルタを追加"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/ko/messages.po b/src/frontend/src/locales/ko/messages.po
index 6650a110b733..a320b403ffd1 100644
--- a/src/frontend/src/locales/ko/messages.po
+++ b/src/frontend/src/locales/ko/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: ko\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Korean\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/lv/messages.po b/src/frontend/src/locales/lv/messages.po
index 8042a5e465a2..7988502e573a 100644
--- a/src/frontend/src/locales/lv/messages.po
+++ b/src/frontend/src/locales/lv/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: lv\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Latvian\n"
 "Plural-Forms: nplurals=3; plural=(n==0 ? 0 : n%10==1 && n%100!=11 ? 1 : 2);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/nl/messages.po b/src/frontend/src/locales/nl/messages.po
index 3309d2fe8d02..a8aa8765c8ea 100644
--- a/src/frontend/src/locales/nl/messages.po
+++ b/src/frontend/src/locales/nl/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: nl\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Dutch\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr "E-mail versturen"
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr "Verkooporder"
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Verkooporders"
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr "Retourorder"
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Productieorders"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr "Bijlagen"
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr "Opmerkingen"
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr "Klanten"
 msgid "Pending Shipments"
 msgstr "In afwachting van verzending"
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/no/messages.po b/src/frontend/src/locales/no/messages.po
index 827397fdc755..cd5d20ad36de 100644
--- a/src/frontend/src/locales/no/messages.po
+++ b/src/frontend/src/locales/no/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: no\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Norwegian\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Tittel"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr "Fjern"
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr "Skjemafeil"
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Suksess"
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr "Skjemafeil eksisterer"
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr "Oppdater"
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "Slett"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Innlogging vellykket"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Velkommen tilbake!"
 
@@ -268,13 +268,13 @@ msgstr "Velkommen tilbake!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Innloggingen mislyktes"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Kontroller inndataene og prøv igjen."
@@ -284,46 +284,46 @@ msgstr "Kontroller inndataene og prøv igjen."
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Levering av e-post vellykket"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Sjekk innboksen din for innloggingslenken. Hvis du har en konto, får du en innloggingslenke. Sjekk også i spam."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Inndatafeil"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Brukernavn"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr "Your username"
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Passord"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Ditt passord"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Tilbakestill passord"
@@ -336,69 +336,69 @@ msgstr "Tilbakestill passord"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "E-post"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Vi sender deg en lenke for å logge inn - hvis du er registrert"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Send meg en e-post"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr "Logg inn"
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr "Send e-post"
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr "Vert"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "Navn: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr "Status: <0>arbeider</0> ({0}), <1>utvidelser</1>{1}"
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr "Status: <0>arbeider</0> ({0}), <1>utvidelser</1>{1}"
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Feil"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr "Slett element"
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr "Dupliser"
@@ -863,7 +863,7 @@ msgstr "Kontoinnstillinger"
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr "Systeminnstillinger"
 
@@ -950,7 +950,7 @@ msgstr "Merk som lest"
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr "Delkategorier"
 
@@ -988,7 +988,7 @@ msgstr "Ingen resultater tilgjengelig for søk"
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "Lagerplasseringer"
 
@@ -1007,7 +1007,7 @@ msgstr "Ukjent modell: {model}"
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr "Del"
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "Deler"
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr "Leverandørdel"
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr "Leverandørdeler"
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr "Produsentdel"
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr "Produsentdeler"
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr "Delkategori"
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr "Lagervare"
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "Lagervarer"
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr "Innkjøpsordre"
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Innkjøpsordrer"
@@ -1159,14 +1159,14 @@ msgstr "Ordrelinjer for innkjøpsordre"
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr "Salgsordre"
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Salgsordrer"
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr "Returordre"
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr "Forsendelse"
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr "Lagerbeholdning"
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr "Serienummer"
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr "Dashbord"
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr "Lagervare oppdatert"
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr "På lager"
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr "Handlinger"
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr "Legg til"
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr "Tell"
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr "Overfør lager"
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr "Tell beholdning"
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr "Sjekker om du allerede er innlogget"
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr "Egendefinerte enheter"
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr "Delparametere"
 
@@ -3119,7 +3119,7 @@ msgstr "Rapport"
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr "Stykkliste (BOM)"
 
@@ -3154,7 +3154,7 @@ msgstr "Strekkoder"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr "Prising"
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr "Rapportering"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr "Lagertelling"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Produksjonsordrer"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr "Bytt til brukerinnstilling"
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr "Tildel lagerbeholdning"
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr "Ufullstendige artikler"
@@ -3376,22 +3372,22 @@ msgstr "Underordnede Produksjonsordrer"
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr "Vedlegg"
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr "Notater"
 
@@ -3443,8 +3439,8 @@ msgstr "Leverandør"
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr "Produsent"
@@ -3453,6 +3449,7 @@ msgstr "Produsent"
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr "Rediger Bedrift"
 msgid "Company Actions"
 msgstr "Bedriftshandlinger"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr "Produsentens delenummer"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr "Parametere"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr "Leverandører"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr "Rediger produsentdel"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr "Rediger Leverandørdel"
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr "Sti"
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr "Strukturell"
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr "Kategori"
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr "IPN"
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr "Enheter"
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr "Nøkkelord"
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr "Lenke"
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr "I bestilling"
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr "Kan Produsere"
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr "Produseres"
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr "Produseres"
 msgid "Active"
 msgstr "Aktiv"
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr "Sammenstilt del"
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr "Sporbar del"
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr "Opprettelsesdato"
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr "Prisområde"
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr "Varianter"
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr "Tildelinger"
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr "Brukt i"
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr "Produsenter"
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr "Planlegging"
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr "Testmaler"
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr "Relaterte Deler"
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr "Rediger del"
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr "Lagerhandlinger"
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr "Tell delbeholdning"
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr "Overfør delbeholdning"
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr "Delhandlinger"
 
@@ -3931,53 +3928,53 @@ msgstr "Kunder"
 msgid "Pending Shipments"
 msgstr "Ventende forsendelser"
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr "Basisdel"
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr "Tilgjengelig"
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr "Sporing av lager"
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr "Testdata"
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr "Installerte artikler"
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr "Underordnede artikler"
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr "Lagerhandlinger"
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr "Tell beholdning"
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr "Legg til lager"
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr "Fjern lager"
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr "Overfør"
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr "Overfør lager"
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr "Dupliser lagervare"
 
@@ -4144,15 +4145,15 @@ msgstr "Verdi"
 msgid "Select filter value"
 msgstr "Velg filterverdi"
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr "Tabellfiltre"
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "Legg til filter"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr "Fjern filtre"
 
@@ -5161,8 +5162,12 @@ msgid "Install Plugin"
 msgstr "Installer Utvidelse"
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
-msgstr "Utvidelesdetaljer"
+msgid "Plugin Detail"
+msgstr ""
+
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
 
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr "Oppgave-ID"
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr "Startet"
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/pl/messages.po b/src/frontend/src/locales/pl/messages.po
index c640c41285b4..85e88ae594c3 100644
--- a/src/frontend/src/locales/pl/messages.po
+++ b/src/frontend/src/locales/pl/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: pl\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Polish\n"
 "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Tytuł"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Zalogowano pomyślnie"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Witamy ponownie!"
 
@@ -268,13 +268,13 @@ msgstr "Witamy ponownie!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Wiadomość dostarczona"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/pseudo-LOCALE/messages.po b/src/frontend/src/locales/pseudo-LOCALE/messages.po
index 9c65aa319bd1..f5b985ea900e 100644
--- a/src/frontend/src/locales/pseudo-LOCALE/messages.po
+++ b/src/frontend/src/locales/pseudo-LOCALE/messages.po
@@ -57,61 +57,61 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:63
+#: src/components/details/DetailsImage.tsx:64
 msgid "Remove Image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:66
+#: src/components/details/DetailsImage.tsx:67
 msgid "Remove the associated image from this item?"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:69
+#: src/components/details/DetailsImage.tsx:70
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:69
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/details/DetailsImage.tsx:70
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
-#: src/tables/InvenTreeTable.tsx:456
+#: src/tables/FilterSelectDrawer.tsx:218
+#: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:97
+#: src/components/details/DetailsImage.tsx:98
 msgid "Drag and drop to upload"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:100
+#: src/components/details/DetailsImage.tsx:101
 msgid "Click to select file(s)"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:222
+#: src/components/details/DetailsImage.tsx:223
 msgid "Clear"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:225
-#: src/components/forms/ApiForm.tsx:451
+#: src/components/details/DetailsImage.tsx:226
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:265
+#: src/components/details/DetailsImage.tsx:266
 msgid "Select from existing images"
 msgstr ""
 
@@ -123,11 +123,11 @@ msgstr ""
 msgid "Upload new image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:295
+#: src/components/details/DetailsImage.tsx:293
 msgid "Upload Image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:308
+#: src/components/details/DetailsImage.tsx:306
 msgid "Delete image"
 msgstr ""
 
@@ -168,8 +168,8 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: src/components/details/PartIcons.tsx:82
-#: src/tables/part/PartTable.tsx:243
-#: src/tables/part/PartTable.tsx:247
+#: src/tables/part/PartTable.tsx:242
+#: src/tables/part/PartTable.tsx:246
 #: src/tables/part/PartVariantTable.tsx:25
 msgid "Virtual"
 msgstr ""
@@ -190,94 +190,94 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:132
+#: src/components/forms/ApiForm.tsx:130
 #: src/functions/forms.tsx:259
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:323
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:396
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:487
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:507
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
 #: src/pages/Index/Scan.tsx:332
 #: src/pages/Notifications.tsx:123
-#: src/tables/InvenTreeTable.tsx:455
-#: src/tables/RowActions.tsx:71
+#: src/tables/InvenTreeTable.tsx:470
+#: src/tables/RowActions.tsx:72
 #: src/tables/plugin/PluginListTable.tsx:473
 #: src/tables/settings/TemplateTable.tsx:105
 #: src/tables/settings/TemplateTable.tsx:154
@@ -291,11 +291,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -303,13 +303,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -319,46 +319,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -371,69 +371,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -444,8 +444,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -495,15 +496,16 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
 #: src/pages/ErrorPage.tsx:12
 #: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:415
-#: src/tables/InvenTreeTable.tsx:488
+#: src/tables/InvenTreeTable.tsx:427
+#: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -572,7 +574,7 @@ msgid "Unlink custom barcode"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:180
-#: src/tables/RowActions.tsx:51
+#: src/tables/RowActions.tsx:52
 #: src/tables/settings/TemplateTable.tsx:87
 #: src/tables/settings/TemplateTable.tsx:150
 #: src/tables/settings/TemplateTable.tsx:287
@@ -584,8 +586,8 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
-#: src/tables/RowActions.tsx:31
+#: src/pages/stock/StockDetail.tsx:428
+#: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
 
@@ -602,7 +604,7 @@ msgid "Read More"
 msgstr ""
 
 #: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:407
+#: src/tables/InvenTreeTable.tsx:419
 msgid "Unknown error"
 msgstr ""
 
@@ -900,13 +902,13 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
 #: src/components/nav/MainMenu.tsx:60
 #: src/defaults/menuItems.tsx:63
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:161
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:172
 msgid "Admin Center"
 msgstr ""
 
@@ -948,7 +950,7 @@ msgid "Pages"
 msgstr ""
 
 #: src/components/nav/NavigationDrawer.tsx:67
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:122
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:133
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41
 msgid "Plugins"
 msgstr ""
@@ -986,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
-#: src/pages/Index/Settings/SystemSettings.tsx:164
+#: src/pages/Index/Settings/SystemSettings.tsx:163
 #: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
@@ -1025,7 +1027,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1044,20 +1046,20 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:732
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:72
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:22
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
-#: src/pages/Index/Settings/SystemSettings.tsx:169
-#: src/pages/part/CategoryDetail.tsx:103
+#: src/pages/Index/Settings/SystemSettings.tsx:168
+#: src/pages/part/CategoryDetail.tsx:104
 #: src/pages/part/CategoryDetail.tsx:183
 #: src/pages/part/CategoryDetail.tsx:213
-#: src/pages/part/PartDetail.tsx:617
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1080,8 +1082,8 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
-#: src/tables/purchasing/SupplierPartTable.tsx:66
+#: src/pages/stock/StockDetail.tsx:157
+#: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
 
@@ -1090,7 +1092,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1105,15 +1107,15 @@ msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1165,7 +1167,7 @@ msgid "Project Code"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:113
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:92
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:97
 msgid "Project Codes"
 msgstr ""
 
@@ -1176,10 +1178,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:550
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1196,14 +1198,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:556
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1223,7 +1225,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1264,7 +1266,7 @@ msgid "User"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:177
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:68
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:73
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
 msgid "Users"
 msgstr ""
@@ -1276,23 +1278,23 @@ msgstr ""
 #: src/components/render/Part.tsx:10
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:200
-#: src/pages/part/PartDetail.tsx:473
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/Index/Settings/SystemSettings.tsx:199
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122
+#: src/pages/stock/StockDetail.tsx:135
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
 msgstr ""
 
@@ -1488,10 +1490,6 @@ msgstr ""
 #~ msgid "Are you sure you want to remove this parameter?"
 #~ msgstr ""
 
-#: src/components/tables/part/PartParameterTable.tsx:150
-#~ msgid "Add Part Parameter"
-#~ msgstr ""
-
 #: src/components/tables/part/PartParameterTable.tsx:159
 #~ msgid "Part parameter added"
 #~ msgstr ""
@@ -1866,58 +1864,62 @@ msgid "Korean"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:37
-msgid "Dutch"
+msgid "Latvian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:38
-msgid "Norwegian"
+msgid "Dutch"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:39
-msgid "Polish"
+msgid "Norwegian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:40
-msgid "Portuguese"
+msgid "Polish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:41
-msgid "Portuguese (Brazilian)"
+msgid "Portuguese"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:42
-msgid "Russian"
+msgid "Portuguese (Brazilian)"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:43
-msgid "Slovak"
+msgid "Russian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:44
-msgid "Slovenian"
+msgid "Slovak"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:45
-msgid "Swedish"
+msgid "Slovenian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:46
-msgid "Thai"
+msgid "Swedish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:47
-msgid "Turkish"
+msgid "Thai"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:48
-msgid "Vietnamese"
+msgid "Turkish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:49
-msgid "Chinese (Simplified)"
+msgid "Vietnamese"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:50
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: src/contexts/LanguageContext.tsx:51
 msgid "Chinese (Traditional)"
 msgstr ""
 
@@ -1942,7 +1944,7 @@ msgid "Recently Updated"
 msgstr ""
 
 #: src/defaults/dashboardItems.tsx:50
-#: src/tables/part/PartTable.tsx:225
+#: src/tables/part/PartTable.tsx:224
 msgid "Low Stock"
 msgstr ""
 
@@ -2026,7 +2028,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2307,7 +2309,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2365,10 +2367,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2377,11 +2375,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:195
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2390,20 +2392,20 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/tables/RowActions.tsx:151
+#: src/tables/RowActions.tsx:148
 msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:305
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2416,12 +2418,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:690
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2542,7 +2544,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -3018,44 +3020,49 @@ msgstr ""
 #~ msgid "Advanced Amininistrative Options for InvenTree"
 #~ msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:74
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:79
 msgid "Background Tasks"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:80
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:85
 msgid "Error Reports"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:86
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:91
 msgid "Currencies"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:104
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:109
 msgid "Custom Units"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:110
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:115
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:116
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:121
+msgid "Category Parameters"
+msgstr ""
+
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:127
 msgid "Templates"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:128
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:139
 #: src/tables/machine/MachineTypeTable.tsx:281
 msgid "Machines"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:138
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:149
 msgid "Quick Actions"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:143
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:154
 msgid "Add a new user"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:162
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:173
 msgid "Advanced Options"
 msgstr ""
 
@@ -3072,7 +3079,7 @@ msgid "There are no machine registry errors."
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28
-#: src/tables/settings/UserTable.tsx:106
+#: src/tables/settings/UserTable.tsx:116
 msgid "Info"
 msgstr ""
 
@@ -3113,7 +3120,7 @@ msgid "Failed Tasks"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:141
+#: src/pages/Index/Settings/SystemSettings.tsx:140
 msgid "Labels"
 msgstr ""
 
@@ -3151,7 +3158,7 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:498
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3164,7 +3171,7 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18
-#: src/tables/settings/UserTable.tsx:124
+#: src/tables/settings/UserTable.tsx:135
 msgid "Groups"
 msgstr ""
 
@@ -3186,7 +3193,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3195,28 +3202,28 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:135
-msgid "Exchange Rates"
-msgstr ""
+#~ msgid "Exchange Rates"
+#~ msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:147
+#: src/pages/Index/Settings/SystemSettings.tsx:146
 #: src/pages/Index/Settings/UserSettings.tsx:99
 msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:568
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3278,7 +3285,7 @@ msgstr ""
 #: src/pages/sales/SalesOrderDetail.tsx:78
 #: src/tables/machine/MachineListTable.tsx:323
 #: src/tables/purchasing/PurchaseOrderTable.tsx:55
-#: src/tables/sales/ReturnOrderTable.tsx:45
+#: src/tables/sales/ReturnOrderTable.tsx:41
 #: src/tables/sales/SalesOrderTable.tsx:52
 #: src/tables/stock/StockItemTable.tsx:252
 msgid "Status"
@@ -3293,15 +3300,15 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:116
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
-#: src/tables/ColumnRenderers.tsx:52
+#: src/pages/stock/LocationDetail.tsx:93
+#: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
 #: src/tables/machine/MachineTypeTable.tsx:213
@@ -3330,7 +3337,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3378,10 +3385,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr ""
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr ""
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3408,23 +3411,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:590
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:602
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:185
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3476,8 +3478,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3486,7 +3488,8 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
-#: src/tables/sales/ReturnOrderTable.tsx:64
+#: src/pages/stock/StockDetail.tsx:214
+#: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
 msgstr ""
@@ -3523,57 +3526,56 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
-#: src/tables/purchasing/ManufacturerPartTable.tsx:57
+#: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/CategoryDetail.tsx:203
-#: src/pages/part/PartDetail.tsx:467
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:537
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
-#: src/tables/purchasing/ManufacturerPartTable.tsx:101
+#: src/pages/company/ManufacturerPartDetail.tsx:187
+#: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:90
-#: src/tables/ColumnRenderers.tsx:78
+#: src/tables/ColumnRenderers.tsx:105
 msgid "Note"
 msgstr ""
 
@@ -3583,14 +3585,14 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:143
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:107
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:143
-#: src/tables/purchasing/SupplierPartTable.tsx:123
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:105
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:141
+#: src/tables/purchasing/SupplierPartTable.tsx:120
 msgid "Pack Quantity"
 msgstr ""
 
@@ -3620,137 +3622,138 @@ msgid "Supplier Part Actions"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:254
-#: src/tables/purchasing/SupplierPartTable.tsx:193
+#: src/tables/purchasing/SupplierPartTable.tsx:190
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:122
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
+#: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:135
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:189
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:201
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:207
-#: src/tables/bom/BomTable.tsx:188
+#: src/pages/part/PartDetail.tsx:215
+#: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:216
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:227
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:237
-#: src/tables/bom/BomTable.tsx:212
+#: src/pages/part/PartDetail.tsx:245
+#: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
-#: src/tables/bom/BomTable.tsx:196
-#: src/tables/part/PartTable.tsx:92
+#: src/pages/part/PartDetail.tsx:252
+#: src/tables/bom/BomTable.tsx:193
+#: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:253
-#: src/tables/bom/UsedInTable.tsx:66
+#: src/pages/part/PartDetail.tsx:261
+#: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
-#: src/tables/part/PartTable.tsx:177
+#: src/tables/part/PartTable.tsx:176
 #: src/tables/part/PartVariantTable.tsx:15
 #: src/tables/plugin/PluginListTable.tsx:190
 #: src/tables/plugin/PluginListTable.tsx:634
@@ -3758,41 +3761,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:258
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:263
-#: src/tables/bom/BomTable.tsx:240
+#: src/pages/part/PartDetail.tsx:271
+#: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:268
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:273
-#: src/tables/bom/BomTable.tsx:235
+#: src/pages/part/PartDetail.tsx:281
+#: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:278
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:283
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:288
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:296
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:301
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3800,84 +3803,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:315
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:326
-#: src/tables/bom/BomTable.tsx:137
-#: src/tables/part/PartTable.tsx:161
-msgid "Price Range"
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
 msgstr ""
 
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:361
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:334
+#: src/tables/bom/BomTable.tsx:134
+#: src/tables/part/PartTable.tsx:160
+msgid "Price Range"
+msgstr ""
+
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:396
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:461
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:485
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:524
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:573
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:584
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:641
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:672
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:680
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:691
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:701
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3936,7 +3939,7 @@ msgstr ""
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:181
 #: src/pages/sales/ReturnOrderDetail.tsx:147
 #: src/pages/sales/SalesOrderDetail.tsx:151
-#: src/tables/ColumnRenderers.tsx:137
+#: src/tables/ColumnRenderers.tsx:164
 msgid "Target Date"
 msgstr ""
 
@@ -3964,55 +3967,55 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
-#: src/tables/part/PartTable.tsx:117
+#: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
 #: src/tables/stock/StockItemTable.tsx:268
 msgid "Available"
@@ -4026,14 +4029,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr ""
@@ -4042,69 +4049,69 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/ColumnRenderers.tsx:155
 #: src/tables/plugin/PluginListTable.tsx:182
 #: src/tables/stock/StockItemTestResultTable.tsx:194
 msgid "Date"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:174
+#: src/tables/ColumnRenderers.tsx:201
 #: src/tables/settings/CurrencyTable.tsx:23
 msgid "Currency"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:188
+#: src/tables/ColumnRenderers.tsx:215
 msgid "Total Price"
 msgstr ""
 
@@ -4177,212 +4184,212 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:89
-#: src/tables/InvenTreeTable.tsx:354
-#: src/tables/InvenTreeTable.tsx:375
+#: src/tables/InvenTreeTable.tsx:101
+#: src/tables/InvenTreeTable.tsx:366
+#: src/tables/InvenTreeTable.tsx:387
 msgid "No records found"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:386
+#: src/tables/InvenTreeTable.tsx:398
 msgid "Server returned incorrect data type"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:394
+#: src/tables/InvenTreeTable.tsx:406
 msgid "Bad request"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:397
+#: src/tables/InvenTreeTable.tsx:409
 msgid "Unauthorized"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:400
+#: src/tables/InvenTreeTable.tsx:412
 msgid "Forbidden"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:403
+#: src/tables/InvenTreeTable.tsx:415
 msgid "Not found"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:445
-#: src/tables/InvenTreeTable.tsx:536
+#: src/tables/InvenTreeTable.tsx:460
+#: src/tables/InvenTreeTable.tsx:575
 msgid "Delete selected records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:449
+#: src/tables/InvenTreeTable.tsx:464
 msgid "Are you sure you want to delete the selected records?"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:451
+#: src/tables/InvenTreeTable.tsx:466
 msgid "This action cannot be undone!"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:479
+#: src/tables/InvenTreeTable.tsx:494
 msgid "Deleted records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:495
 msgid "Records were deleted successfully"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:504
 msgid "Failed to delete records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:517
-#: src/tables/InvenTreeTable.tsx:518
+#: src/tables/InvenTreeTable.tsx:556
+#: src/tables/InvenTreeTable.tsx:557
 msgid "Barcode actions"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:526
-#: src/tables/InvenTreeTable.tsx:527
+#: src/tables/InvenTreeTable.tsx:565
+#: src/tables/InvenTreeTable.tsx:566
 msgid "Print actions"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:552
+#: src/tables/InvenTreeTable.tsx:591
 msgid "Refresh data"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:570
+#: src/tables/InvenTreeTable.tsx:609
 msgid "Table filters"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:76
+#: src/tables/bom/BomTable.tsx:73
 msgid "This BOM item is defined for a different parent"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:91
+#: src/tables/bom/BomTable.tsx:88
 msgid "Part Information"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:155
-#: src/tables/part/PartTable.tsx:134
+#: src/tables/bom/BomTable.tsx:152
+#: src/tables/part/PartTable.tsx:133
 msgid "No stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:163
+#: src/tables/bom/BomTable.tsx:160
 #: src/tables/build/BuildLineTable.tsx:101
-#: src/tables/part/PartTable.tsx:125
+#: src/tables/part/PartTable.tsx:124
 msgid "External stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:171
+#: src/tables/bom/BomTable.tsx:168
 #: src/tables/build/BuildLineTable.tsx:64
 msgid "Includes substitute stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:180
+#: src/tables/bom/BomTable.tsx:177
 #: src/tables/build/BuildLineTable.tsx:74
 msgid "Includes variant stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:205
-#: src/tables/part/PartTable.tsx:153
+#: src/tables/bom/BomTable.tsx:202
+#: src/tables/part/PartTable.tsx:152
 #: src/tables/stock/StockItemTable.tsx:190
 msgid "Stock Information"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:216
+#: src/tables/bom/BomTable.tsx:213
 #: src/tables/build/BuildLineTable.tsx:179
 msgid "Consumable item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:236
+#: src/tables/bom/BomTable.tsx:233
 msgid "Show trackable items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:241
+#: src/tables/bom/BomTable.tsx:238
 msgid "Show asssmbled items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:245
+#: src/tables/bom/BomTable.tsx:242
 msgid "Show items with available stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:249
+#: src/tables/bom/BomTable.tsx:246
 msgid "Show items on order"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:253
+#: src/tables/bom/BomTable.tsx:250
 msgid "Show validated items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:257
-#: src/tables/bom/UsedInTable.tsx:58
+#: src/tables/bom/BomTable.tsx:254
+#: src/tables/bom/UsedInTable.tsx:54
 msgid "Show inherited items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:261
-#: src/tables/bom/UsedInTable.tsx:62
+#: src/tables/bom/BomTable.tsx:258
+#: src/tables/bom/UsedInTable.tsx:58
 msgid "Show optional items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:265
+#: src/tables/bom/BomTable.tsx:262
 msgid "Show consumable items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:269
+#: src/tables/bom/BomTable.tsx:266
 msgid "Has Pricing"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:270
+#: src/tables/bom/BomTable.tsx:267
 msgid "Show items with pricing"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:281
+#: src/tables/bom/BomTable.tsx:278
 msgid "View BOM"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:292
+#: src/tables/bom/BomTable.tsx:289
 msgid "Validate BOM line"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:300
+#: src/tables/bom/BomTable.tsx:297
 msgid "Edit Substitutes"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:314
+#: src/tables/bom/BomTable.tsx:311
 msgid "Edit Bom Item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:316
+#: src/tables/bom/BomTable.tsx:313
 msgid "Bom item updated"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:331
+#: src/tables/bom/BomTable.tsx:328
 msgid "Delete Bom Item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:332
+#: src/tables/bom/BomTable.tsx:329
 msgid "Bom item deleted"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:334
+#: src/tables/bom/BomTable.tsx:331
 msgid "Are you sure you want to remove this BOM item?"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/bom/UsedInTable.tsx:63
 msgid "Show active assemblies"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:71
-#: src/tables/part/PartTable.tsx:201
+#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/part/PartTable.tsx:200
 #: src/tables/part/PartVariantTable.tsx:30
 msgid "Trackable"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:72
+#: src/tables/bom/UsedInTable.tsx:68
 msgid "Show trackable assemblies"
 msgstr ""
 
@@ -4437,7 +4444,7 @@ msgstr ""
 
 #: src/tables/build/BuildOrderTable.tsx:107
 #: src/tables/purchasing/PurchaseOrderTable.tsx:56
-#: src/tables/sales/ReturnOrderTable.tsx:46
+#: src/tables/sales/ReturnOrderTable.tsx:42
 #: src/tables/sales/SalesOrderTable.tsx:53
 msgid "Filter by order status"
 msgstr ""
@@ -4472,11 +4479,11 @@ msgstr ""
 msgid "Are you sure you want to delete this address?"
 msgstr ""
 
-#: src/tables/company/CompanyTable.tsx:62
+#: src/tables/company/CompanyTable.tsx:63
 msgid "New Company"
 msgstr ""
 
-#: src/tables/company/CompanyTable.tsx:82
+#: src/tables/company/CompanyTable.tsx:83
 msgid "Add Company"
 msgstr ""
 
@@ -4496,35 +4503,35 @@ msgstr ""
 msgid "Add contact"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:161
+#: src/tables/general/AttachmentTable.tsx:162
 msgid "File uploaded"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:162
+#: src/tables/general/AttachmentTable.tsx:163
 msgid "File {0} uploaded successfully"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:173
+#: src/tables/general/AttachmentTable.tsx:174
 msgid "Upload Error"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:174
+#: src/tables/general/AttachmentTable.tsx:175
 msgid "File could not be uploaded"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:187
+#: src/tables/general/AttachmentTable.tsx:188
 msgid "Add attachment"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:206
+#: src/tables/general/AttachmentTable.tsx:207
 msgid "Add external link"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:237
+#: src/tables/general/AttachmentTable.tsx:238
 msgid "No attachments found"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:252
+#: src/tables/general/AttachmentTable.tsx:253
 msgid "Upload attachment"
 msgstr ""
 
@@ -4684,13 +4691,27 @@ msgstr ""
 msgid "Message"
 msgstr ""
 
-#: src/tables/part/ParametricPartTable.tsx:80
+#: src/tables/part/ParametricPartTable.tsx:75
 #: src/tables/part/PartParameterTable.tsx:83
 msgid "Internal Units"
 msgstr ""
 
+#: src/tables/part/ParametricPartTable.tsx:80
+msgid "Edit parameter"
+msgstr ""
+
+#: src/tables/part/ParametricPartTable.tsx:133
+msgid "Add Part Parameter"
+msgstr ""
+
+#: src/tables/part/ParametricPartTable.tsx:146
+#: src/tables/part/PartParameterTable.tsx:121
+#: src/tables/part/PartParameterTable.tsx:143
+msgid "Edit Part Parameter"
+msgstr ""
+
 #: src/tables/part/PartCategoryTable.tsx:64
-#: src/tables/part/PartTable.tsx:189
+#: src/tables/part/PartTable.tsx:188
 msgid "Include Subcategories"
 msgstr ""
 
@@ -4710,13 +4731,29 @@ msgstr ""
 msgid "Add Part Category"
 msgstr ""
 
-#: src/tables/part/PartParameterTable.tsx:106
-msgid "New Part Parameter"
+#: src/tables/part/PartCategoryTemplateTable.tsx:39
+#: src/tables/part/PartCategoryTemplateTable.tsx:132
+msgid "Add Category Parameter"
 msgstr ""
 
-#: src/tables/part/PartParameterTable.tsx:121
-#: src/tables/part/PartParameterTable.tsx:143
-msgid "Edit Part Parameter"
+#: src/tables/part/PartCategoryTemplateTable.tsx:47
+msgid "Edit Category Parameter"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:55
+msgid "Delete Category Parameter"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:77
+msgid "Parameter Template"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:93
+msgid "[{0}]"
+msgstr ""
+
+#: src/tables/part/PartParameterTable.tsx:106
+msgid "New Part Parameter"
 msgstr ""
 
 #: src/tables/part/PartParameterTable.tsx:129
@@ -4750,7 +4787,7 @@ msgid "Show templates with choices"
 msgstr ""
 
 #: src/tables/part/PartParameterTemplateTable.tsx:41
-#: src/tables/part/PartTable.tsx:207
+#: src/tables/part/PartTable.tsx:206
 msgid "Has Units"
 msgstr ""
 
@@ -4774,101 +4811,101 @@ msgstr ""
 msgid "Add parameter template"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:77
+#: src/tables/part/PartTable.tsx:76
 msgid "Minimum stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:86
+#: src/tables/part/PartTable.tsx:85
 msgid "On Order"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:99
+#: src/tables/part/PartTable.tsx:98
 msgid "Build Order Allocations"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:108
+#: src/tables/part/PartTable.tsx:107
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:178
+#: src/tables/part/PartTable.tsx:177
 msgid "Filter by part active status"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:183
+#: src/tables/part/PartTable.tsx:182
 #: src/tables/stock/StockItemTable.tsx:258
 msgid "Assembly"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:184
+#: src/tables/part/PartTable.tsx:183
 msgid "Filter by assembly attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:190
+#: src/tables/part/PartTable.tsx:189
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:195
+#: src/tables/part/PartTable.tsx:194
 msgid "Component"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:196
+#: src/tables/part/PartTable.tsx:195
 msgid "Filter by component attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:202
+#: src/tables/part/PartTable.tsx:201
 msgid "Filter by trackable attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:208
+#: src/tables/part/PartTable.tsx:207
 msgid "Filter by parts which have units"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:213
+#: src/tables/part/PartTable.tsx:212
 msgid "Has IPN"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:214
+#: src/tables/part/PartTable.tsx:213
 msgid "Filter by parts which have an internal part number"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:219
+#: src/tables/part/PartTable.tsx:218
 msgid "Has Stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:220
+#: src/tables/part/PartTable.tsx:219
 msgid "Filter by parts which have stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:226
+#: src/tables/part/PartTable.tsx:225
 msgid "Filter by parts which have low stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:231
+#: src/tables/part/PartTable.tsx:230
 msgid "Purchaseable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:232
+#: src/tables/part/PartTable.tsx:231
 msgid "Filter by parts which are purchaseable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:237
+#: src/tables/part/PartTable.tsx:236
 msgid "Salable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:238
+#: src/tables/part/PartTable.tsx:237
 msgid "Filter by parts which are salable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:244
+#: src/tables/part/PartTable.tsx:243
 msgid "Filter by parts which are virtual"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:248
+#: src/tables/part/PartTable.tsx:247
 msgid "Not Virtual"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:276
-#: src/tables/part/PartTable.tsx:292
+#: src/tables/part/PartTable.tsx:275
+#: src/tables/part/PartTable.tsx:291
 msgid "Add Part"
 msgstr ""
 
@@ -5164,9 +5201,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr ""
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5196,83 +5237,83 @@ msgstr ""
 msgid "Are you sure you want to delete this parameter?"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:67
+#: src/tables/purchasing/ManufacturerPartTable.tsx:63
 msgid "Create Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:82
+#: src/tables/purchasing/ManufacturerPartTable.tsx:78
 msgid "Add Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:104
+#: src/tables/purchasing/ManufacturerPartTable.tsx:100
 msgid "Manufacturer part updated"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:115
+#: src/tables/purchasing/ManufacturerPartTable.tsx:111
 msgid "Delete Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:116
+#: src/tables/purchasing/ManufacturerPartTable.tsx:112
 msgid "Manufacturer part deleted"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:118
+#: src/tables/purchasing/ManufacturerPartTable.tsx:114
 msgid "Are you sure you want to remove this manufacturer part?"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:86
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:84
 msgid "Part Description"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:113
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:111
 msgid "Total Quantity"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:129
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:127
 msgid "Received"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:148
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:146
 msgid "Supplier Code"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:155
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:153
 msgid "Supplier Link"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:162
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:160
 msgid "Manufacturer Code"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:168
 msgid "Unit Price"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:176
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:174
 msgid "Destination"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:193
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:188
 msgid "Add Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:208
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:203
 msgid "Edit Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:216
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:211
 msgid "Delete Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:227
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:222
 msgid "Receive line item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:256
 msgid "Add line item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:266
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
 msgid "Receive items"
 msgstr ""
 
@@ -5281,47 +5322,47 @@ msgstr ""
 msgid "Add Purchase Order"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:91
+#: src/tables/purchasing/SupplierPartTable.tsx:88
 msgid "MPN"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:114
+#: src/tables/purchasing/SupplierPartTable.tsx:111
 msgid "Base units"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:140
+#: src/tables/purchasing/SupplierPartTable.tsx:137
 msgid "Updated"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:159
+#: src/tables/purchasing/SupplierPartTable.tsx:156
 msgid "Add Supplier Part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:162
+#: src/tables/purchasing/SupplierPartTable.tsx:159
 msgid "Supplier part created"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:171
+#: src/tables/purchasing/SupplierPartTable.tsx:168
 msgid "Add supplier part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:196
+#: src/tables/purchasing/SupplierPartTable.tsx:193
 msgid "Supplier part updated"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:207
+#: src/tables/purchasing/SupplierPartTable.tsx:204
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:208
+#: src/tables/purchasing/SupplierPartTable.tsx:205
 msgid "Supplier part deleted"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:210
+#: src/tables/purchasing/SupplierPartTable.tsx:207
 msgid "Are you sure you want to remove this supplier part?"
 msgstr ""
 
-#: src/tables/sales/ReturnOrderTable.tsx:99
+#: src/tables/sales/ReturnOrderTable.tsx:95
 msgid "Add Return Order"
 msgstr ""
 
@@ -5399,6 +5440,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5500,68 +5542,68 @@ msgstr ""
 msgid "Filter by enabled status"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:69
+#: src/tables/settings/UserTable.tsx:79
 msgid "User with id {id} not found"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:71
+#: src/tables/settings/UserTable.tsx:81
 msgid "An error occurred while fetching user details"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:89
+#: src/tables/settings/UserTable.tsx:99
 msgid "Is Active"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:90
+#: src/tables/settings/UserTable.tsx:100
 msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:94
+#: src/tables/settings/UserTable.tsx:104
 msgid "Is Staff"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:95
+#: src/tables/settings/UserTable.tsx:105
 msgid "Designates whether the user can log into the django admin site."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:99
+#: src/tables/settings/UserTable.tsx:109
 msgid "Is Superuser"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:100
+#: src/tables/settings/UserTable.tsx:110
 msgid "Designates that this user has all permissions without explicitly assigning them."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:110
+#: src/tables/settings/UserTable.tsx:120
 msgid "You cannot edit the rights for the currently logged-in user."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:139
+#: src/tables/settings/UserTable.tsx:151
 msgid "No groups"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:207
+#: src/tables/settings/UserTable.tsx:231
 msgid "Delete user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:208
+#: src/tables/settings/UserTable.tsx:232
 msgid "User deleted"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:210
+#: src/tables/settings/UserTable.tsx:234
 msgid "Are you sure you want to delete this user?"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:220
-#: src/tables/settings/UserTable.tsx:236
+#: src/tables/settings/UserTable.tsx:240
+#: src/tables/settings/UserTable.tsx:258
 msgid "Add user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:228
+#: src/tables/settings/UserTable.tsx:248
 msgid "Added user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:245
+#: src/tables/settings/UserTable.tsx:270
 msgid "Edit user"
 msgstr ""
 
@@ -5787,67 +5829,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:306
-#: src/tables/stock/StockItemTestResultTable.tsx:361
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:316
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:325
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:294
+#: src/tables/stock/StockItemTestResultTable.tsx:322
+msgid "Failed to record test result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:342
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:343
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:347
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:348
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:352
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:353
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/pt-br/messages.po b/src/frontend/src/locales/pt-br/messages.po
index f60a0b149c0b..0fb6e6b52e68 100644
--- a/src/frontend/src/locales/pt-br/messages.po
+++ b/src/frontend/src/locales/pt-br/messages.po
@@ -17,61 +17,61 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:63
+#: src/components/details/DetailsImage.tsx:64
 msgid "Remove Image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:66
+#: src/components/details/DetailsImage.tsx:67
 msgid "Remove the associated image from this item?"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:69
+#: src/components/details/DetailsImage.tsx:70
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:69
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/details/DetailsImage.tsx:70
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
-#: src/tables/InvenTreeTable.tsx:456
+#: src/tables/FilterSelectDrawer.tsx:218
+#: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:97
+#: src/components/details/DetailsImage.tsx:98
 msgid "Drag and drop to upload"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:100
+#: src/components/details/DetailsImage.tsx:101
 msgid "Click to select file(s)"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:222
+#: src/components/details/DetailsImage.tsx:223
 msgid "Clear"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:225
-#: src/components/forms/ApiForm.tsx:451
+#: src/components/details/DetailsImage.tsx:226
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:265
+#: src/components/details/DetailsImage.tsx:266
 msgid "Select from existing images"
 msgstr ""
 
@@ -83,11 +83,11 @@ msgstr ""
 msgid "Upload new image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:295
+#: src/components/details/DetailsImage.tsx:293
 msgid "Upload Image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:308
+#: src/components/details/DetailsImage.tsx:306
 msgid "Delete image"
 msgstr ""
 
@@ -128,8 +128,8 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: src/components/details/PartIcons.tsx:82
-#: src/tables/part/PartTable.tsx:243
-#: src/tables/part/PartTable.tsx:247
+#: src/tables/part/PartTable.tsx:242
+#: src/tables/part/PartTable.tsx:246
 #: src/tables/part/PartVariantTable.tsx:25
 msgid "Virtual"
 msgstr ""
@@ -150,94 +150,94 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:132
+#: src/components/forms/ApiForm.tsx:130
 #: src/functions/forms.tsx:259
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:323
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:396
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:487
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:507
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
 #: src/pages/Index/Scan.tsx:332
 #: src/pages/Notifications.tsx:123
-#: src/tables/InvenTreeTable.tsx:455
-#: src/tables/RowActions.tsx:71
+#: src/tables/InvenTreeTable.tsx:470
+#: src/tables/RowActions.tsx:72
 #: src/tables/plugin/PluginListTable.tsx:473
 #: src/tables/settings/TemplateTable.tsx:105
 #: src/tables/settings/TemplateTable.tsx:154
@@ -245,65 +245,65 @@ msgstr ""
 msgid "Delete"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -312,69 +312,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -385,8 +385,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -436,15 +437,16 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
 #: src/pages/ErrorPage.tsx:12
 #: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:415
-#: src/tables/InvenTreeTable.tsx:488
+#: src/tables/InvenTreeTable.tsx:427
+#: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -513,7 +515,7 @@ msgid "Unlink custom barcode"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:180
-#: src/tables/RowActions.tsx:51
+#: src/tables/RowActions.tsx:52
 #: src/tables/settings/TemplateTable.tsx:87
 #: src/tables/settings/TemplateTable.tsx:150
 #: src/tables/settings/TemplateTable.tsx:287
@@ -525,8 +527,8 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
-#: src/tables/RowActions.tsx:31
+#: src/pages/stock/StockDetail.tsx:428
+#: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
 
@@ -543,7 +545,7 @@ msgid "Read More"
 msgstr ""
 
 #: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:407
+#: src/tables/InvenTreeTable.tsx:419
 msgid "Unknown error"
 msgstr ""
 
@@ -837,13 +839,13 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
 #: src/components/nav/MainMenu.tsx:60
 #: src/defaults/menuItems.tsx:63
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:161
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:172
 msgid "Admin Center"
 msgstr ""
 
@@ -877,7 +879,7 @@ msgid "Pages"
 msgstr ""
 
 #: src/components/nav/NavigationDrawer.tsx:67
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:122
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:133
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41
 msgid "Plugins"
 msgstr ""
@@ -915,7 +917,7 @@ msgstr ""
 
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
-#: src/pages/Index/Settings/SystemSettings.tsx:164
+#: src/pages/Index/Settings/SystemSettings.tsx:163
 #: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
@@ -954,7 +956,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -973,20 +975,20 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:732
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:72
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:22
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
-#: src/pages/Index/Settings/SystemSettings.tsx:169
-#: src/pages/part/CategoryDetail.tsx:103
+#: src/pages/Index/Settings/SystemSettings.tsx:168
+#: src/pages/part/CategoryDetail.tsx:104
 #: src/pages/part/CategoryDetail.tsx:183
 #: src/pages/part/CategoryDetail.tsx:213
-#: src/pages/part/PartDetail.tsx:617
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1009,8 +1011,8 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
-#: src/tables/purchasing/SupplierPartTable.tsx:66
+#: src/pages/stock/StockDetail.tsx:157
+#: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
 
@@ -1019,7 +1021,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1034,15 +1036,15 @@ msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1094,7 +1096,7 @@ msgid "Project Code"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:113
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:92
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:97
 msgid "Project Codes"
 msgstr ""
 
@@ -1105,10 +1107,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:550
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1125,14 +1127,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:556
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1152,7 +1154,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1193,7 +1195,7 @@ msgid "User"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:177
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:68
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:73
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
 msgid "Users"
 msgstr ""
@@ -1205,23 +1207,23 @@ msgstr ""
 #: src/components/render/Part.tsx:10
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:200
-#: src/pages/part/PartDetail.tsx:473
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/Index/Settings/SystemSettings.tsx:199
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122
+#: src/pages/stock/StockDetail.tsx:135
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
 msgstr ""
 
@@ -1417,10 +1419,6 @@ msgstr ""
 #~ msgid "Are you sure you want to remove this parameter?"
 #~ msgstr ""
 
-#: src/components/tables/part/PartParameterTable.tsx:150
-#~ msgid "Add Part Parameter"
-#~ msgstr ""
-
 #: src/components/tables/part/PartParameterTable.tsx:159
 #~ msgid "Part parameter added"
 #~ msgstr ""
@@ -1791,58 +1789,62 @@ msgid "Korean"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:37
-msgid "Dutch"
+msgid "Latvian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:38
-msgid "Norwegian"
+msgid "Dutch"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:39
-msgid "Polish"
+msgid "Norwegian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:40
-msgid "Portuguese"
+msgid "Polish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:41
-msgid "Portuguese (Brazilian)"
+msgid "Portuguese"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:42
-msgid "Russian"
+msgid "Portuguese (Brazilian)"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:43
-msgid "Slovak"
+msgid "Russian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:44
-msgid "Slovenian"
+msgid "Slovak"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:45
-msgid "Swedish"
+msgid "Slovenian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:46
-msgid "Thai"
+msgid "Swedish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:47
-msgid "Turkish"
+msgid "Thai"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:48
-msgid "Vietnamese"
+msgid "Turkish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:49
-msgid "Chinese (Simplified)"
+msgid "Vietnamese"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:50
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: src/contexts/LanguageContext.tsx:51
 msgid "Chinese (Traditional)"
 msgstr ""
 
@@ -1867,7 +1869,7 @@ msgid "Recently Updated"
 msgstr ""
 
 #: src/defaults/dashboardItems.tsx:50
-#: src/tables/part/PartTable.tsx:225
+#: src/tables/part/PartTable.tsx:224
 msgid "Low Stock"
 msgstr ""
 
@@ -1943,7 +1945,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2160,7 +2162,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2218,10 +2220,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2230,11 +2228,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:195
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2243,20 +2245,20 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/tables/RowActions.tsx:151
+#: src/tables/RowActions.tsx:148
 msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:305
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2269,12 +2271,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:690
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2391,7 +2393,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2739,44 +2741,49 @@ msgstr ""
 #~ msgid "Advanced Amininistrative Options for InvenTree"
 #~ msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:74
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:79
 msgid "Background Tasks"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:80
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:85
 msgid "Error Reports"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:86
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:91
 msgid "Currencies"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:104
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:109
 msgid "Custom Units"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:110
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:115
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:116
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:121
+msgid "Category Parameters"
+msgstr ""
+
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:127
 msgid "Templates"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:128
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:139
 #: src/tables/machine/MachineTypeTable.tsx:281
 msgid "Machines"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:138
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:149
 msgid "Quick Actions"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:143
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:154
 msgid "Add a new user"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:162
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:173
 msgid "Advanced Options"
 msgstr ""
 
@@ -2793,7 +2800,7 @@ msgid "There are no machine registry errors."
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28
-#: src/tables/settings/UserTable.tsx:106
+#: src/tables/settings/UserTable.tsx:116
 msgid "Info"
 msgstr ""
 
@@ -2834,7 +2841,7 @@ msgid "Failed Tasks"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:141
+#: src/pages/Index/Settings/SystemSettings.tsx:140
 msgid "Labels"
 msgstr ""
 
@@ -2872,7 +2879,7 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:498
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -2885,7 +2892,7 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18
-#: src/tables/settings/UserTable.tsx:124
+#: src/tables/settings/UserTable.tsx:135
 msgid "Groups"
 msgstr ""
 
@@ -2907,7 +2914,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -2916,28 +2923,28 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:135
-msgid "Exchange Rates"
-msgstr ""
+#~ msgid "Exchange Rates"
+#~ msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:147
+#: src/pages/Index/Settings/SystemSettings.tsx:146
 #: src/pages/Index/Settings/UserSettings.tsx:99
 msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:568
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -2995,7 +3002,7 @@ msgstr ""
 #: src/pages/sales/SalesOrderDetail.tsx:78
 #: src/tables/machine/MachineListTable.tsx:323
 #: src/tables/purchasing/PurchaseOrderTable.tsx:55
-#: src/tables/sales/ReturnOrderTable.tsx:45
+#: src/tables/sales/ReturnOrderTable.tsx:41
 #: src/tables/sales/SalesOrderTable.tsx:52
 #: src/tables/stock/StockItemTable.tsx:252
 msgid "Status"
@@ -3010,15 +3017,15 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:116
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
-#: src/tables/ColumnRenderers.tsx:52
+#: src/pages/stock/LocationDetail.tsx:93
+#: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
 #: src/tables/machine/MachineTypeTable.tsx:213
@@ -3047,7 +3054,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3095,10 +3102,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr ""
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr ""
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3125,23 +3128,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:590
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:602
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:185
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3193,8 +3195,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3203,7 +3205,8 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
-#: src/tables/sales/ReturnOrderTable.tsx:64
+#: src/pages/stock/StockDetail.tsx:214
+#: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
 msgstr ""
@@ -3240,57 +3243,56 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
-#: src/tables/purchasing/ManufacturerPartTable.tsx:57
+#: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/CategoryDetail.tsx:203
-#: src/pages/part/PartDetail.tsx:467
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:537
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
-#: src/tables/purchasing/ManufacturerPartTable.tsx:101
+#: src/pages/company/ManufacturerPartDetail.tsx:187
+#: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:90
-#: src/tables/ColumnRenderers.tsx:78
+#: src/tables/ColumnRenderers.tsx:105
 msgid "Note"
 msgstr ""
 
@@ -3300,14 +3302,14 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:143
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:107
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:143
-#: src/tables/purchasing/SupplierPartTable.tsx:123
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:105
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:141
+#: src/tables/purchasing/SupplierPartTable.tsx:120
 msgid "Pack Quantity"
 msgstr ""
 
@@ -3337,137 +3339,138 @@ msgid "Supplier Part Actions"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:254
-#: src/tables/purchasing/SupplierPartTable.tsx:193
+#: src/tables/purchasing/SupplierPartTable.tsx:190
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:122
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
+#: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:135
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:189
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:201
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:207
-#: src/tables/bom/BomTable.tsx:188
+#: src/pages/part/PartDetail.tsx:215
+#: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:216
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:227
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:237
-#: src/tables/bom/BomTable.tsx:212
+#: src/pages/part/PartDetail.tsx:245
+#: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
-#: src/tables/bom/BomTable.tsx:196
-#: src/tables/part/PartTable.tsx:92
+#: src/pages/part/PartDetail.tsx:252
+#: src/tables/bom/BomTable.tsx:193
+#: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:253
-#: src/tables/bom/UsedInTable.tsx:66
+#: src/pages/part/PartDetail.tsx:261
+#: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
-#: src/tables/part/PartTable.tsx:177
+#: src/tables/part/PartTable.tsx:176
 #: src/tables/part/PartVariantTable.tsx:15
 #: src/tables/plugin/PluginListTable.tsx:190
 #: src/tables/plugin/PluginListTable.tsx:634
@@ -3475,41 +3478,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:258
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:263
-#: src/tables/bom/BomTable.tsx:240
+#: src/pages/part/PartDetail.tsx:271
+#: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:268
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:273
-#: src/tables/bom/BomTable.tsx:235
+#: src/pages/part/PartDetail.tsx:281
+#: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:278
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:283
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:288
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:296
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:301
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3517,84 +3520,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:315
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:326
-#: src/tables/bom/BomTable.tsx:137
-#: src/tables/part/PartTable.tsx:161
-msgid "Price Range"
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
 msgstr ""
 
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:361
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:334
+#: src/tables/bom/BomTable.tsx:134
+#: src/tables/part/PartTable.tsx:160
+msgid "Price Range"
+msgstr ""
+
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:396
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:461
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:485
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:524
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:573
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:584
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:641
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:672
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:680
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:691
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:701
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3649,7 +3652,7 @@ msgstr ""
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:181
 #: src/pages/sales/ReturnOrderDetail.tsx:147
 #: src/pages/sales/SalesOrderDetail.tsx:151
-#: src/tables/ColumnRenderers.tsx:137
+#: src/tables/ColumnRenderers.tsx:164
 msgid "Target Date"
 msgstr ""
 
@@ -3677,55 +3680,55 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
-#: src/tables/part/PartTable.tsx:117
+#: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
 #: src/tables/stock/StockItemTable.tsx:268
 msgid "Available"
@@ -3739,14 +3742,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr ""
@@ -3755,69 +3762,69 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/ColumnRenderers.tsx:155
 #: src/tables/plugin/PluginListTable.tsx:182
 #: src/tables/stock/StockItemTestResultTable.tsx:194
 msgid "Date"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:174
+#: src/tables/ColumnRenderers.tsx:201
 #: src/tables/settings/CurrencyTable.tsx:23
 msgid "Currency"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:188
+#: src/tables/ColumnRenderers.tsx:215
 msgid "Total Price"
 msgstr ""
 
@@ -3890,212 +3897,212 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:89
-#: src/tables/InvenTreeTable.tsx:354
-#: src/tables/InvenTreeTable.tsx:375
+#: src/tables/InvenTreeTable.tsx:101
+#: src/tables/InvenTreeTable.tsx:366
+#: src/tables/InvenTreeTable.tsx:387
 msgid "No records found"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:386
+#: src/tables/InvenTreeTable.tsx:398
 msgid "Server returned incorrect data type"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:394
+#: src/tables/InvenTreeTable.tsx:406
 msgid "Bad request"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:397
+#: src/tables/InvenTreeTable.tsx:409
 msgid "Unauthorized"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:400
+#: src/tables/InvenTreeTable.tsx:412
 msgid "Forbidden"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:403
+#: src/tables/InvenTreeTable.tsx:415
 msgid "Not found"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:445
-#: src/tables/InvenTreeTable.tsx:536
+#: src/tables/InvenTreeTable.tsx:460
+#: src/tables/InvenTreeTable.tsx:575
 msgid "Delete selected records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:449
+#: src/tables/InvenTreeTable.tsx:464
 msgid "Are you sure you want to delete the selected records?"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:451
+#: src/tables/InvenTreeTable.tsx:466
 msgid "This action cannot be undone!"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:479
+#: src/tables/InvenTreeTable.tsx:494
 msgid "Deleted records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:495
 msgid "Records were deleted successfully"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:504
 msgid "Failed to delete records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:517
-#: src/tables/InvenTreeTable.tsx:518
+#: src/tables/InvenTreeTable.tsx:556
+#: src/tables/InvenTreeTable.tsx:557
 msgid "Barcode actions"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:526
-#: src/tables/InvenTreeTable.tsx:527
+#: src/tables/InvenTreeTable.tsx:565
+#: src/tables/InvenTreeTable.tsx:566
 msgid "Print actions"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:552
+#: src/tables/InvenTreeTable.tsx:591
 msgid "Refresh data"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:570
+#: src/tables/InvenTreeTable.tsx:609
 msgid "Table filters"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:76
+#: src/tables/bom/BomTable.tsx:73
 msgid "This BOM item is defined for a different parent"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:91
+#: src/tables/bom/BomTable.tsx:88
 msgid "Part Information"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:155
-#: src/tables/part/PartTable.tsx:134
+#: src/tables/bom/BomTable.tsx:152
+#: src/tables/part/PartTable.tsx:133
 msgid "No stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:163
+#: src/tables/bom/BomTable.tsx:160
 #: src/tables/build/BuildLineTable.tsx:101
-#: src/tables/part/PartTable.tsx:125
+#: src/tables/part/PartTable.tsx:124
 msgid "External stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:171
+#: src/tables/bom/BomTable.tsx:168
 #: src/tables/build/BuildLineTable.tsx:64
 msgid "Includes substitute stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:180
+#: src/tables/bom/BomTable.tsx:177
 #: src/tables/build/BuildLineTable.tsx:74
 msgid "Includes variant stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:205
-#: src/tables/part/PartTable.tsx:153
+#: src/tables/bom/BomTable.tsx:202
+#: src/tables/part/PartTable.tsx:152
 #: src/tables/stock/StockItemTable.tsx:190
 msgid "Stock Information"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:216
+#: src/tables/bom/BomTable.tsx:213
 #: src/tables/build/BuildLineTable.tsx:179
 msgid "Consumable item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:236
+#: src/tables/bom/BomTable.tsx:233
 msgid "Show trackable items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:241
+#: src/tables/bom/BomTable.tsx:238
 msgid "Show asssmbled items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:245
+#: src/tables/bom/BomTable.tsx:242
 msgid "Show items with available stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:249
+#: src/tables/bom/BomTable.tsx:246
 msgid "Show items on order"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:253
+#: src/tables/bom/BomTable.tsx:250
 msgid "Show validated items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:257
-#: src/tables/bom/UsedInTable.tsx:58
+#: src/tables/bom/BomTable.tsx:254
+#: src/tables/bom/UsedInTable.tsx:54
 msgid "Show inherited items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:261
-#: src/tables/bom/UsedInTable.tsx:62
+#: src/tables/bom/BomTable.tsx:258
+#: src/tables/bom/UsedInTable.tsx:58
 msgid "Show optional items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:265
+#: src/tables/bom/BomTable.tsx:262
 msgid "Show consumable items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:269
+#: src/tables/bom/BomTable.tsx:266
 msgid "Has Pricing"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:270
+#: src/tables/bom/BomTable.tsx:267
 msgid "Show items with pricing"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:281
+#: src/tables/bom/BomTable.tsx:278
 msgid "View BOM"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:292
+#: src/tables/bom/BomTable.tsx:289
 msgid "Validate BOM line"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:300
+#: src/tables/bom/BomTable.tsx:297
 msgid "Edit Substitutes"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:314
+#: src/tables/bom/BomTable.tsx:311
 msgid "Edit Bom Item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:316
+#: src/tables/bom/BomTable.tsx:313
 msgid "Bom item updated"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:331
+#: src/tables/bom/BomTable.tsx:328
 msgid "Delete Bom Item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:332
+#: src/tables/bom/BomTable.tsx:329
 msgid "Bom item deleted"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:334
+#: src/tables/bom/BomTable.tsx:331
 msgid "Are you sure you want to remove this BOM item?"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/bom/UsedInTable.tsx:63
 msgid "Show active assemblies"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:71
-#: src/tables/part/PartTable.tsx:201
+#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/part/PartTable.tsx:200
 #: src/tables/part/PartVariantTable.tsx:30
 msgid "Trackable"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:72
+#: src/tables/bom/UsedInTable.tsx:68
 msgid "Show trackable assemblies"
 msgstr ""
 
@@ -4150,7 +4157,7 @@ msgstr ""
 
 #: src/tables/build/BuildOrderTable.tsx:107
 #: src/tables/purchasing/PurchaseOrderTable.tsx:56
-#: src/tables/sales/ReturnOrderTable.tsx:46
+#: src/tables/sales/ReturnOrderTable.tsx:42
 #: src/tables/sales/SalesOrderTable.tsx:53
 msgid "Filter by order status"
 msgstr ""
@@ -4185,11 +4192,11 @@ msgstr ""
 msgid "Are you sure you want to delete this address?"
 msgstr ""
 
-#: src/tables/company/CompanyTable.tsx:62
+#: src/tables/company/CompanyTable.tsx:63
 msgid "New Company"
 msgstr ""
 
-#: src/tables/company/CompanyTable.tsx:82
+#: src/tables/company/CompanyTable.tsx:83
 msgid "Add Company"
 msgstr ""
 
@@ -4209,35 +4216,35 @@ msgstr ""
 msgid "Add contact"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:161
+#: src/tables/general/AttachmentTable.tsx:162
 msgid "File uploaded"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:162
+#: src/tables/general/AttachmentTable.tsx:163
 msgid "File {0} uploaded successfully"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:173
+#: src/tables/general/AttachmentTable.tsx:174
 msgid "Upload Error"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:174
+#: src/tables/general/AttachmentTable.tsx:175
 msgid "File could not be uploaded"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:187
+#: src/tables/general/AttachmentTable.tsx:188
 msgid "Add attachment"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:206
+#: src/tables/general/AttachmentTable.tsx:207
 msgid "Add external link"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:237
+#: src/tables/general/AttachmentTable.tsx:238
 msgid "No attachments found"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:252
+#: src/tables/general/AttachmentTable.tsx:253
 msgid "Upload attachment"
 msgstr ""
 
@@ -4397,13 +4404,27 @@ msgstr ""
 msgid "Message"
 msgstr ""
 
-#: src/tables/part/ParametricPartTable.tsx:80
+#: src/tables/part/ParametricPartTable.tsx:75
 #: src/tables/part/PartParameterTable.tsx:83
 msgid "Internal Units"
 msgstr ""
 
+#: src/tables/part/ParametricPartTable.tsx:80
+msgid "Edit parameter"
+msgstr ""
+
+#: src/tables/part/ParametricPartTable.tsx:133
+msgid "Add Part Parameter"
+msgstr ""
+
+#: src/tables/part/ParametricPartTable.tsx:146
+#: src/tables/part/PartParameterTable.tsx:121
+#: src/tables/part/PartParameterTable.tsx:143
+msgid "Edit Part Parameter"
+msgstr ""
+
 #: src/tables/part/PartCategoryTable.tsx:64
-#: src/tables/part/PartTable.tsx:189
+#: src/tables/part/PartTable.tsx:188
 msgid "Include Subcategories"
 msgstr ""
 
@@ -4423,13 +4444,29 @@ msgstr ""
 msgid "Add Part Category"
 msgstr ""
 
-#: src/tables/part/PartParameterTable.tsx:106
-msgid "New Part Parameter"
+#: src/tables/part/PartCategoryTemplateTable.tsx:39
+#: src/tables/part/PartCategoryTemplateTable.tsx:132
+msgid "Add Category Parameter"
 msgstr ""
 
-#: src/tables/part/PartParameterTable.tsx:121
-#: src/tables/part/PartParameterTable.tsx:143
-msgid "Edit Part Parameter"
+#: src/tables/part/PartCategoryTemplateTable.tsx:47
+msgid "Edit Category Parameter"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:55
+msgid "Delete Category Parameter"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:77
+msgid "Parameter Template"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:93
+msgid "[{0}]"
+msgstr ""
+
+#: src/tables/part/PartParameterTable.tsx:106
+msgid "New Part Parameter"
 msgstr ""
 
 #: src/tables/part/PartParameterTable.tsx:129
@@ -4463,7 +4500,7 @@ msgid "Show templates with choices"
 msgstr ""
 
 #: src/tables/part/PartParameterTemplateTable.tsx:41
-#: src/tables/part/PartTable.tsx:207
+#: src/tables/part/PartTable.tsx:206
 msgid "Has Units"
 msgstr ""
 
@@ -4487,101 +4524,101 @@ msgstr ""
 msgid "Add parameter template"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:77
+#: src/tables/part/PartTable.tsx:76
 msgid "Minimum stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:86
+#: src/tables/part/PartTable.tsx:85
 msgid "On Order"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:99
+#: src/tables/part/PartTable.tsx:98
 msgid "Build Order Allocations"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:108
+#: src/tables/part/PartTable.tsx:107
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:178
+#: src/tables/part/PartTable.tsx:177
 msgid "Filter by part active status"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:183
+#: src/tables/part/PartTable.tsx:182
 #: src/tables/stock/StockItemTable.tsx:258
 msgid "Assembly"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:184
+#: src/tables/part/PartTable.tsx:183
 msgid "Filter by assembly attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:190
+#: src/tables/part/PartTable.tsx:189
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:195
+#: src/tables/part/PartTable.tsx:194
 msgid "Component"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:196
+#: src/tables/part/PartTable.tsx:195
 msgid "Filter by component attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:202
+#: src/tables/part/PartTable.tsx:201
 msgid "Filter by trackable attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:208
+#: src/tables/part/PartTable.tsx:207
 msgid "Filter by parts which have units"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:213
+#: src/tables/part/PartTable.tsx:212
 msgid "Has IPN"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:214
+#: src/tables/part/PartTable.tsx:213
 msgid "Filter by parts which have an internal part number"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:219
+#: src/tables/part/PartTable.tsx:218
 msgid "Has Stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:220
+#: src/tables/part/PartTable.tsx:219
 msgid "Filter by parts which have stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:226
+#: src/tables/part/PartTable.tsx:225
 msgid "Filter by parts which have low stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:231
+#: src/tables/part/PartTable.tsx:230
 msgid "Purchaseable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:232
+#: src/tables/part/PartTable.tsx:231
 msgid "Filter by parts which are purchaseable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:237
+#: src/tables/part/PartTable.tsx:236
 msgid "Salable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:238
+#: src/tables/part/PartTable.tsx:237
 msgid "Filter by parts which are salable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:244
+#: src/tables/part/PartTable.tsx:243
 msgid "Filter by parts which are virtual"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:248
+#: src/tables/part/PartTable.tsx:247
 msgid "Not Virtual"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:276
-#: src/tables/part/PartTable.tsx:292
+#: src/tables/part/PartTable.tsx:275
+#: src/tables/part/PartTable.tsx:291
 msgid "Add Part"
 msgstr ""
 
@@ -4877,9 +4914,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr ""
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -4909,83 +4950,83 @@ msgstr ""
 msgid "Are you sure you want to delete this parameter?"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:67
+#: src/tables/purchasing/ManufacturerPartTable.tsx:63
 msgid "Create Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:82
+#: src/tables/purchasing/ManufacturerPartTable.tsx:78
 msgid "Add Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:104
+#: src/tables/purchasing/ManufacturerPartTable.tsx:100
 msgid "Manufacturer part updated"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:115
+#: src/tables/purchasing/ManufacturerPartTable.tsx:111
 msgid "Delete Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:116
+#: src/tables/purchasing/ManufacturerPartTable.tsx:112
 msgid "Manufacturer part deleted"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:118
+#: src/tables/purchasing/ManufacturerPartTable.tsx:114
 msgid "Are you sure you want to remove this manufacturer part?"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:86
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:84
 msgid "Part Description"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:113
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:111
 msgid "Total Quantity"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:129
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:127
 msgid "Received"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:148
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:146
 msgid "Supplier Code"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:155
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:153
 msgid "Supplier Link"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:162
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:160
 msgid "Manufacturer Code"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:168
 msgid "Unit Price"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:176
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:174
 msgid "Destination"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:193
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:188
 msgid "Add Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:208
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:203
 msgid "Edit Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:216
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:211
 msgid "Delete Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:227
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:222
 msgid "Receive line item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:256
 msgid "Add line item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:266
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
 msgid "Receive items"
 msgstr ""
 
@@ -4994,47 +5035,47 @@ msgstr ""
 msgid "Add Purchase Order"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:91
+#: src/tables/purchasing/SupplierPartTable.tsx:88
 msgid "MPN"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:114
+#: src/tables/purchasing/SupplierPartTable.tsx:111
 msgid "Base units"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:140
+#: src/tables/purchasing/SupplierPartTable.tsx:137
 msgid "Updated"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:159
+#: src/tables/purchasing/SupplierPartTable.tsx:156
 msgid "Add Supplier Part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:162
+#: src/tables/purchasing/SupplierPartTable.tsx:159
 msgid "Supplier part created"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:171
+#: src/tables/purchasing/SupplierPartTable.tsx:168
 msgid "Add supplier part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:196
+#: src/tables/purchasing/SupplierPartTable.tsx:193
 msgid "Supplier part updated"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:207
+#: src/tables/purchasing/SupplierPartTable.tsx:204
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:208
+#: src/tables/purchasing/SupplierPartTable.tsx:205
 msgid "Supplier part deleted"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:210
+#: src/tables/purchasing/SupplierPartTable.tsx:207
 msgid "Are you sure you want to remove this supplier part?"
 msgstr ""
 
-#: src/tables/sales/ReturnOrderTable.tsx:99
+#: src/tables/sales/ReturnOrderTable.tsx:95
 msgid "Add Return Order"
 msgstr ""
 
@@ -5112,6 +5153,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5213,68 +5255,68 @@ msgstr ""
 msgid "Filter by enabled status"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:69
+#: src/tables/settings/UserTable.tsx:79
 msgid "User with id {id} not found"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:71
+#: src/tables/settings/UserTable.tsx:81
 msgid "An error occurred while fetching user details"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:89
+#: src/tables/settings/UserTable.tsx:99
 msgid "Is Active"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:90
+#: src/tables/settings/UserTable.tsx:100
 msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:94
+#: src/tables/settings/UserTable.tsx:104
 msgid "Is Staff"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:95
+#: src/tables/settings/UserTable.tsx:105
 msgid "Designates whether the user can log into the django admin site."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:99
+#: src/tables/settings/UserTable.tsx:109
 msgid "Is Superuser"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:100
+#: src/tables/settings/UserTable.tsx:110
 msgid "Designates that this user has all permissions without explicitly assigning them."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:110
+#: src/tables/settings/UserTable.tsx:120
 msgid "You cannot edit the rights for the currently logged-in user."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:139
+#: src/tables/settings/UserTable.tsx:151
 msgid "No groups"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:207
+#: src/tables/settings/UserTable.tsx:231
 msgid "Delete user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:208
+#: src/tables/settings/UserTable.tsx:232
 msgid "User deleted"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:210
+#: src/tables/settings/UserTable.tsx:234
 msgid "Are you sure you want to delete this user?"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:220
-#: src/tables/settings/UserTable.tsx:236
+#: src/tables/settings/UserTable.tsx:240
+#: src/tables/settings/UserTable.tsx:258
 msgid "Add user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:228
+#: src/tables/settings/UserTable.tsx:248
 msgid "Added user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:245
+#: src/tables/settings/UserTable.tsx:270
 msgid "Edit user"
 msgstr ""
 
@@ -5500,67 +5542,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:306
-#: src/tables/stock/StockItemTestResultTable.tsx:361
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:316
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:325
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:294
+#: src/tables/stock/StockItemTestResultTable.tsx:322
+msgid "Failed to record test result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:342
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:343
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:347
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:348
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:352
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:353
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/pt/messages.po b/src/frontend/src/locales/pt/messages.po
index a37d9e5759e0..0a03ec11c584 100644
--- a/src/frontend/src/locales/pt/messages.po
+++ b/src/frontend/src/locales/pt/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: pt\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Portuguese, Brazilian\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Título"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr "Copiada"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr "Copiar"
 
@@ -42,16 +42,16 @@ msgstr "Remover imagem associada a este item?"
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr "Remover"
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr "Limpar"
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr "Erro no formulário"
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Sucesso"
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr "Há erros de formulário"
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr "Atualizar"
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "Excluir"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Acesso bem-sucedido"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Bem-vindo(a) de volta!"
 
@@ -268,13 +268,13 @@ msgstr "Bem-vindo(a) de volta!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Falha ao acessar"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Verifique sua entrada e tente novamente."
@@ -284,46 +284,46 @@ msgstr "Verifique sua entrada e tente novamente."
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Envio de e-mail concluído"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Verifique sua caixa de entrada para o link de acesso. Se você tiver uma conta, você receberá um link de acesso. Também verifique o spam."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Erro de entrada"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr "Ou continue com outros métodos"
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Nome de usuário"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr "Seu nome de usuário"
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Senha"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Sua senha"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Redefinir senha"
@@ -336,69 +336,69 @@ msgstr "Redefinir senha"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "Email"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Enviaremos um link para fazer o acesso - se você estiver registrado"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Me envie um e-mail"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr "Usar nome de usuário e senha"
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr "Entrar"
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr "Enviar E-mail"
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr "Cadastrado com sucesso"
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr "Por favor, confirme seu endereço de e-mail para concluir o registro"
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr "Isto será usado para uma confirmação"
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr "Repetir senha"
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr "Repita a senha"
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr "Registrar"
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr "Ou use SSO"
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr "Não possui uma conta?"
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr "Voltar ao login"
 
@@ -409,9 +409,9 @@ msgstr "Servidor"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "Nome: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr "Estado: <0>funcionário</0> ({0}), <1>extensões</1>{1}"
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr "Estado: <0>funcionário</0> ({0}), <1>extensões</1>{1}"
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Erro"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr "Apagar item"
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr "Duplicar"
@@ -863,7 +863,7 @@ msgstr "Configurações de conta"
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr "Configurações do Sistema"
 
@@ -950,7 +950,7 @@ msgstr "Marcar como lido"
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr "Categorias de Peça"
 
@@ -988,7 +988,7 @@ msgstr "Não há resultados disponíveis para a pesquisa"
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "Locais de estoque"
 
@@ -1007,7 +1007,7 @@ msgstr "Modelo desconhecido: {model}"
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr "Peça"
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "Peças"
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr "Fornecedor da Peça"
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr "Peças do Fornecedor"
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr "Fabricante da peça"
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr "Peças do Fabricante"
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr "Categoria da Peça"
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr "Item de estoque"
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "Itens de Estoque"
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr "Pedido de Compra"
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Pedidos de compra"
@@ -1159,14 +1159,14 @@ msgstr "Linhas do Pedido de Compra"
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr "Pedido de Venda"
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Pedidos de vendas"
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr "Pedido de Devolução"
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr "Remessa"
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr "Estoque"
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr "Número de Série"
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr "Painel de Controle"
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr "Item de estoque atualizado"
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr "Em Estoque"
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr "Ações"
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr "Adicionar"
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr "Contar"
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr "Transferir Estoque"
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr "Contar Estoque"
 
@@ -2505,7 +2505,7 @@ msgstr "Item Excluído"
 msgid "Are you sure you want to delete this item?"
 msgstr "Tem certeza que deseja remover este item?"
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr "Checando se você já está conectado"
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr "Unidades personalizadas"
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr "Parâmetros da Peça"
 
@@ -3119,7 +3119,7 @@ msgstr "Reportar"
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr "Lista de Materiais"
 
@@ -3154,7 +3154,7 @@ msgstr "Códigos de barras"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr "Preços"
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr "Relatórios"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr "Balanço"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Ordens de Produções"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr "Mudar para Configuração de Usuário"
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr "Alocar Estoque"
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr "Saídas Incompletas"
@@ -3376,22 +3372,22 @@ msgstr "Pedido de Produção Filhos"
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr "Anexos"
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr "Anotações"
 
@@ -3443,8 +3439,8 @@ msgstr "Fornecedor"
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr "Fabricante"
@@ -3453,6 +3449,7 @@ msgstr "Fabricante"
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr "Editar Empresa"
 msgid "Company Actions"
 msgstr "Ações da Empresa"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr "Número de Peça do Fabricante"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr "Parâmetros"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr "Fornecedores"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr "Editar Peça do Fabricante"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr "Peça do Fabricante"
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr "Editar Peça do Fornecedor"
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr "Caminho"
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr "Estrutural"
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr "Editar Categoria da Peça"
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr "Variante de"
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr "Categoria"
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr "Local Padrão"
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr "IPN"
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr "Revisão"
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr "Unidades"
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr "Palavras-chave"
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr "Link"
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr "Estoque Disponível"
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr "Estoque Mínimo"
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr "No pedido"
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr "Alocado para Pedidos de Construção"
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr "Alocado para Pedidos de Venda"
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr "Pode Produzir"
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr "Produzindo"
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr "Produzindo"
 msgid "Active"
 msgstr "Ativo"
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr "Peça Montada"
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr "Peça Rastreável"
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr "Criado em"
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr "Fornecedor Padrão"
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr "Fornecedor Padrão"
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr "Faixa de Preço"
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr "Último Balanço"
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr "Variantes"
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr "Alocações"
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr "Usado em"
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr "Fabricantes"
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr "Agendamento"
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr "Testar Modelos"
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr "Peças Relacionadas"
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr "Editar Peça"
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr "Ações de Estoque"
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr "Contagem do estoque"
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr "Transferir estoque de peça"
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr "Ações da Peça"
 
@@ -3931,53 +3928,53 @@ msgstr "Clientes"
 msgid "Pending Shipments"
 msgstr "Envios Pendentes"
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr "Editar Local de Estoque"
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr "Peça base"
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr "Disponível"
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr "Rastreamento de Estoque"
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr "Dados de Teste"
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr "Itens Instalados"
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr "Itens Filhos"
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr "Operações de Estoque"
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr "Contagem de estoque"
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr "Adicionar estoque"
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr "Remover estoque"
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr "Transferir"
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr "Transferir estoque"
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr "Duplicar item de estoque"
 
@@ -4144,15 +4145,15 @@ msgstr "Valor"
 msgid "Select filter value"
 msgstr "Selecionar valor do filtro"
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr "Filtros da Tabela"
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "Adicionar Filtro"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr "Limpar Filtros"
 
@@ -5161,8 +5162,12 @@ msgid "Install Plugin"
 msgstr "Instalar Plugin"
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
-msgstr "Detalhes do plugin"
+msgid "Plugin Detail"
+msgstr ""
+
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
 
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr "ID da Tarefa"
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr "Iniciado"
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/ru/messages.po b/src/frontend/src/locales/ru/messages.po
index 710810fee642..99587f660671 100644
--- a/src/frontend/src/locales/ru/messages.po
+++ b/src/frontend/src/locales/ru/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: ru\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Russian\n"
 "Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Заголовок"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr "Удалить связанное изображение?"
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr "Удалить"
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr "Очистить"
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr "Ошибка формы"
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Успешно"
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr "Форма содержит ошибки"
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr "Обновить"
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "Удалить"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Вы вошли"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "С возвращением!"
 
@@ -268,13 +268,13 @@ msgstr "С возвращением!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Ошибка входа"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Проверьте введенные данные и повторите попытку."
@@ -284,46 +284,46 @@ msgstr "Проверьте введенные данные и повторите
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Отправка почты прошла успешно"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Проверьте свой почтовый ящик на наличие ссылки для входа в систему. Если у вас есть учетная запись, вы получите ссылку для входа в систему. Проверьте также спам."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Ошибка ввода"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Имя пользователя"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr "Имя пользователя"
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Пароль"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Ваш пароль"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Сбросить пароль"
@@ -336,69 +336,69 @@ msgstr "Сбросить пароль"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "Электронная почта"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Мы вышлем вам ссылку для входа - если вы зарегистрированы"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Отправьте мне электронное письмо"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr "Имя пользователя и пароль"
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr "Войти"
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr "Отправить email"
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr "Регистрация выполнена успешно"
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr "Пожалуйста, подтвердите адрес электронной почты для завершения регистрации"
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr "Это будет использовано для подтверждения"
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr "Повторите пароль"
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr "Введите пароль еще раз"
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr "Регистрация"
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr "Нет аккаунта?"
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr "Вернуться к логину"
 
@@ -409,9 +409,9 @@ msgstr "Узел"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "Название: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr "Состояние: <0>рабочий </0> ({0}), <1>плагины</1>{1}"
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr "Состояние: <0>рабочий </0> ({0}), <1>плагины</1>{
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Ошибка"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr "Настройки аккаунта"
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr "Пометить как прочитанное"
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr "Категории деталей"
 
@@ -988,7 +988,7 @@ msgstr "Нет доступных результатов для поисково
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "Места хранения"
 
@@ -1007,7 +1007,7 @@ msgstr "Неизвестная модель: {model}"
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "Детали"
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr "Детали поставщиков"
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr "Детали производителей"
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "Складские позиции"
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Заказы на закупку"
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Заказы на продажу"
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Заказы на сборку"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr "Значение"
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "Добавить фильтр"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/sk/messages.po b/src/frontend/src/locales/sk/messages.po
index 5b571d22a3c1..28cc5a330185 100644
--- a/src/frontend/src/locales/sk/messages.po
+++ b/src/frontend/src/locales/sk/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: sk\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Slovak\n"
 "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/sl/messages.po b/src/frontend/src/locales/sl/messages.po
index b316d8635819..ab0d43c0b011 100644
--- a/src/frontend/src/locales/sl/messages.po
+++ b/src/frontend/src/locales/sl/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: sl\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Slovenian\n"
 "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/sr/messages.po b/src/frontend/src/locales/sr/messages.po
index 24c85c978b52..737ec74c7196 100644
--- a/src/frontend/src/locales/sr/messages.po
+++ b/src/frontend/src/locales/sr/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: sr\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Serbian (Latin)\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Naslov"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr "Greška Obrasca"
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Uspešno"
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr "Postoji greška obrasca"
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr "Obnovi"
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "Obriši"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Prijava uspešna"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Dobrodošli!"
 
@@ -268,13 +268,13 @@ msgstr "Dobrodošli!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Neuspešna prijava"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Proverite svoj unos i pokušajte ponovno."
@@ -284,46 +284,46 @@ msgstr "Proverite svoj unos i pokušajte ponovno."
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Isporuka pošte uspešna"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Proverite svoj inbox za link za prijavu. Ako imate račun, dobićete link za prijavu. Proverite i spam."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Greška unosa"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Korisničko ime"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Lozinka"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Vaša lozinka"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Resetujte lozinku"
@@ -336,69 +336,69 @@ msgstr "Resetujte lozinku"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "E-pošta"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Poslaćemo vam link za prijavu - ako ste registrirani"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Pošalji mi e-poštu"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr "Prijavite se"
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr "Pošalji e-poštu"
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr "Host"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "Naziv: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr "Status: <0>worker</0> ({0}), <1>plugins</1>{1}"
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr "Status: <0>worker</0> ({0}), <1>plugins</1>{1}"
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Grеška"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr "Obriši stavku"
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr "Dupliciraj"
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/sv/messages.po b/src/frontend/src/locales/sv/messages.po
index 2727b7208dce..ff40005d6398 100644
--- a/src/frontend/src/locales/sv/messages.po
+++ b/src/frontend/src/locales/sv/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: sv\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-22 14:07\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Swedish\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Titel"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr "Kopiera"
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr "Rensa"
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "Radera"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Inlogningen lyckad"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Välkommen tillbaka!"
 
@@ -268,13 +268,13 @@ msgstr "Välkommen tillbaka!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Inloggningen misslyckades"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Kontrollera din inmatning och försök igen."
@@ -284,46 +284,46 @@ msgstr "Kontrollera din inmatning och försök igen."
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "E-postleverans lyckad"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Kolla din inkorg för inloggningslänken. Om du har ett konto kommer du att få en inloggningslänk. Kolla in spam också."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Inmatningsfel"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Användarnamn"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr "Ditt användarnamn"
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Lösenord"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Ditt lösenord"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Återställ lösenord"
@@ -336,69 +336,69 @@ msgstr "Återställ lösenord"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "E-post"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Vi skickar en länk till dig för att logga in - om du är registrerad"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Skicka ett e-postmeddelande"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr "Använd användarnamn och lösenord"
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr "Logga in"
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr "Bekräfta din e-postadress för att slutföra registreringen"
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr "Upprepa lösenord"
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr "Eller använd SSO"
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr "Har du inget konto?"
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr "Värd"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "Namn: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Fel"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr "Kontoinställningar"
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr "Artikelkategorier"
 
@@ -988,7 +988,7 @@ msgstr "Inga resultat tillgängliga för sökfrågan"
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "Lagerplats"
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr "Artkel"
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "Artiklar"
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr "Leverantörsartikel"
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr "Tillverkarens artiklar"
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "Artikel i lager"
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Inköpsorder"
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Försäljningsorder"
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr "Lagersaldo"
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr "Kontrollpanel"
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr "Åtgärder"
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr "Kontrollerar om du redan är inloggad"
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr "Streckkoder"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Byggordrar"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr "Redigera företag"
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr "Parametrar"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr "Kategori"
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr "IAN"
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr "Enheter"
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr "Länk"
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr "Aktiv"
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr "Prisintervall"
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr "Värde"
 msgid "Select filter value"
 msgstr "Välj filtervärde"
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "Lägg till filter"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr "Rensa filter"
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/th/messages.po b/src/frontend/src/locales/th/messages.po
index 0178d24b72db..48e619905800 100644
--- a/src/frontend/src/locales/th/messages.po
+++ b/src/frontend/src/locales/th/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: th\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Thai\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/tr/messages.po b/src/frontend/src/locales/tr/messages.po
index 01f0824bb33a..d68fed9e6c72 100644
--- a/src/frontend/src/locales/tr/messages.po
+++ b/src/frontend/src/locales/tr/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: tr\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Turkish\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Başlık"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Başarılı"
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Oturum açıldı"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Tekrar Hoş Geldiniz!"
 
@@ -268,13 +268,13 @@ msgstr "Tekrar Hoş Geldiniz!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Giriş başarısız"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Lütfen bilgilerinizi kontrol edin ve yeniden giriş yapın."
@@ -284,46 +284,46 @@ msgstr "Lütfen bilgilerinizi kontrol edin ve yeniden giriş yapın."
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "E-posta teslimi başarılı"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Gelen kutunuzu kontrol edin. Eğer hesabınız varsa giriş yapabilmeniz için bir link alacaksınız. Spam klasörünüzü de kontrol edin."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Hatalı giriş"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Kullanıcı Adı"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Parola"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Parolanız"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Parolayı sıfırla"
@@ -336,69 +336,69 @@ msgstr "Parolayı sıfırla"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "E-posta"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Size giriş yapabilmeniz için bir link göndereceğiz - eğer kayıtlıysanız"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Bize bir eposta gönderin"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr "Sunucu"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "İsim: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr "Durum: <0>worker</0> ({0}), <1>eklenti</1>{1}"
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr "Durum: <0>worker</0> ({0}), <1>eklenti</1>{1}"
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Hata"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr "Hesap ayarları"
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr "Parça Kategorileri"
 
@@ -988,7 +988,7 @@ msgstr "Arama sorgusu için sonuç yok"
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "Stok Konumları"
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr "Parça"
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "Parçalar"
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr "Tedarikçi Parçaları"
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr "Üretici Parçaları"
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "Stok Kalemleri"
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Satın Alma Emirleri"
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Satış Emirleri"
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr "Stok"
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr "Panel"
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr "Eylemler"
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr "Zaten giriş yapıp yapmadığınız kontrol ediliyor"
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Yapım İşi Emirleri"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr "Kategori"
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr "DPN"
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr "Birim"
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr "Bağlantı"
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr "Aktif"
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr "Fiyat Aralığı"
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr "Değer"
 msgid "Select filter value"
 msgstr "Filtre değeri seç"
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "Filtre Ekle"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/vi/messages.po b/src/frontend/src/locales/vi/messages.po
index e0134e3b869a..e8398fc4f019 100644
--- a/src/frontend/src/locales/vi/messages.po
+++ b/src/frontend/src/locales/vi/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: vi\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Vietnamese\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr "Tiêu đề"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr "Đã sao chép"
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr "Sao chép"
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr "Lỗi form"
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr "Thành công"
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr "Từ các lỗi hiện hữu"
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr "Cập nhật"
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr "Xóa"
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr "Đăng nhập thành công"
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr "Chào mừng bạn đã trở lại!"
 
@@ -268,13 +268,13 @@ msgstr "Chào mừng bạn đã trở lại!"
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr "Đăng nhập thất bại"
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr "Kiểm tra đầu vào của bạn và thử lại."
@@ -284,46 +284,46 @@ msgstr "Kiểm tra đầu vào của bạn và thử lại."
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr "Thư đã được gửi đi thành công"
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr "Kiểm tra hộp thư để nhận liên kết đăng nhập. Nếu bạn đã có tài khoản, bạn sẽ nhận một liên kết đăng nhập. Kiểm tra đồng thời thư mục spam."
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr "Lỗi đầu vào"
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr "Hoặc tiếp tục với phương thức khác"
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "Tên người dùng"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr "Tên người dùng của bạn"
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "Mật khẩu"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr "Mật khẩu của bạn"
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr "Đặt lại mật khẩu"
@@ -336,69 +336,69 @@ msgstr "Đặt lại mật khẩu"
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr "Địa chỉ email"
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr "Chúng tôi sẽ gửi bạn 1 liên kết để đăng nhập - nếu bạn đã đăng ký"
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr "Gửi email cho chúng tôi"
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr "Dùng tên đăng nhập và mật khẩu"
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr "Đăng nhập"
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr "Gửi email"
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr "Đăng kí thành công"
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr "Vui xác nhận địa chỉ email của bạn để hoàn thành việc đăng ký"
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr "Host"
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr "Tên: {0}"
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr "Trạng thái: <0>worker</0> ({0}), <1>plugins</1>{1}"
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr "Trạng thái: <0>worker</0> ({0}), <1>plugins</1>{1}"
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr "Lỗi"
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr "Xoá mặt hàng"
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr "Nhân bản"
@@ -863,7 +863,7 @@ msgstr "Cài đặt tài khoản"
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr "Thiết lập hệ thống"
 
@@ -950,7 +950,7 @@ msgstr "Đánh dấu đã đọc"
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr "Danh mục phụ kiện"
 
@@ -988,7 +988,7 @@ msgstr "Không có kết quả nào được tìm thấy với truy vấn tìm k
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr "Vị trí kho hàng"
 
@@ -1007,7 +1007,7 @@ msgstr "Model không rõ: {model}"
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr "Phụ kiện"
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr "Phụ tùng"
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr "Phụ kiện nhà cung cấp"
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr "Nhà cung cấp phụ kiện"
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr "Phụ kiện nhà sản xuất"
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr "Nhà sản xuất phụ kiện"
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr "Danh mục phụ kiện"
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr "Hàng trong kho"
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr "Hàng trong kho"
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr "Đơn đặt mua"
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr "Đơn hàng mua"
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr "Đơn đặt bán"
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr "Đơn hàng bán"
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr "Đơn hàng trả lại"
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr "Lô hàng"
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr "Kho hàng"
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr "Bảng điều khiển"
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr "Kho hàng đã được cập nhật"
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr "Còn hàng"
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr "Chức năng"
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr "Thêm"
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr "Đếm"
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr "Đang kiểm tra trạng thái đăng nhập của bạn"
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr "Tham số phụ kiện"
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr "Hóa đơn nguyên vật liệu"
 
@@ -3154,7 +3154,7 @@ msgstr "Mã vạch"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr "Giá bán"
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr "Báo cáo"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr "Kiểm kê"
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr "Đơn đặt bản dựng"
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr "Chuyển sang thiết lập người dùng"
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr "Phân kho"
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr "Đầu ra chưa hoàn hiện"
@@ -3376,22 +3372,22 @@ msgstr "Đơn đặt bản dựng con"
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr "Đính kèm"
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr "Ghi chú"
 
@@ -3443,8 +3439,8 @@ msgstr "Nhà cung cấp"
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr "Nhà sản xuất"
@@ -3453,6 +3449,7 @@ msgstr "Nhà sản xuất"
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr "Sửa doanh nghiệp"
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr "Thông số"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr "Nhà cung cấp"
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr "Sửa sản phẩm nhà cung cấp"
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr "Đường dẫn"
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr "Cấu trúc"
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr "Danh mục"
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr "IPN"
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr "Đơn vị"
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr "Liên kết"
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr "Hoạt động"
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr "Khoảng giá"
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr "Biến thể"
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr "Phân bổ"
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr "Sử dụng trong"
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr "Mẫu thử nghiệm"
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr "Phụ kiện liên quan"
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr "Sửa phụ kiện"
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr "Sản phẩm cơ bản"
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr "Có sẵn"
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr "Theo dõi tồn kho"
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr "Mục đã cài đặt"
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr "Mục con"
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr "Đếm hàng"
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr "Thêm hàng"
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr "Xóa hàng"
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr "Chuyển"
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr "Chuyển giao hàng"
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr "Nhân bản mặt hàng"
 
@@ -4144,15 +4145,15 @@ msgstr "Giá trị"
 msgid "Select filter value"
 msgstr "Lựa chọn giá trị để lọc"
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr "Bộ lọc bảng"
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr "Thêm bộ lọc"
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr "Xóa bộ lọc"
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr "Mẫu"
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/zh-hans/messages.po b/src/frontend/src/locales/zh-hans/messages.po
index 1b73b31e4b4b..28a9cd98771d 100644
--- a/src/frontend/src/locales/zh-hans/messages.po
+++ b/src/frontend/src/locales/zh-hans/messages.po
@@ -17,61 +17,61 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:63
+#: src/components/details/DetailsImage.tsx:64
 msgid "Remove Image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:66
+#: src/components/details/DetailsImage.tsx:67
 msgid "Remove the associated image from this item?"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:69
+#: src/components/details/DetailsImage.tsx:70
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:69
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/details/DetailsImage.tsx:70
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
-#: src/tables/InvenTreeTable.tsx:456
+#: src/tables/FilterSelectDrawer.tsx:218
+#: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:97
+#: src/components/details/DetailsImage.tsx:98
 msgid "Drag and drop to upload"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:100
+#: src/components/details/DetailsImage.tsx:101
 msgid "Click to select file(s)"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:222
+#: src/components/details/DetailsImage.tsx:223
 msgid "Clear"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:225
-#: src/components/forms/ApiForm.tsx:451
+#: src/components/details/DetailsImage.tsx:226
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:265
+#: src/components/details/DetailsImage.tsx:266
 msgid "Select from existing images"
 msgstr ""
 
@@ -83,11 +83,11 @@ msgstr ""
 msgid "Upload new image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:295
+#: src/components/details/DetailsImage.tsx:293
 msgid "Upload Image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:308
+#: src/components/details/DetailsImage.tsx:306
 msgid "Delete image"
 msgstr ""
 
@@ -128,8 +128,8 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: src/components/details/PartIcons.tsx:82
-#: src/tables/part/PartTable.tsx:243
-#: src/tables/part/PartTable.tsx:247
+#: src/tables/part/PartTable.tsx:242
+#: src/tables/part/PartTable.tsx:246
 #: src/tables/part/PartVariantTable.tsx:25
 msgid "Virtual"
 msgstr ""
@@ -150,94 +150,94 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:132
+#: src/components/forms/ApiForm.tsx:130
 #: src/functions/forms.tsx:259
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:323
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:396
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:487
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:507
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
 #: src/pages/Index/Scan.tsx:332
 #: src/pages/Notifications.tsx:123
-#: src/tables/InvenTreeTable.tsx:455
-#: src/tables/RowActions.tsx:71
+#: src/tables/InvenTreeTable.tsx:470
+#: src/tables/RowActions.tsx:72
 #: src/tables/plugin/PluginListTable.tsx:473
 #: src/tables/settings/TemplateTable.tsx:105
 #: src/tables/settings/TemplateTable.tsx:154
@@ -245,65 +245,65 @@ msgstr ""
 msgid "Delete"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -312,69 +312,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -385,8 +385,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -436,15 +437,16 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
 #: src/pages/ErrorPage.tsx:12
 #: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:415
-#: src/tables/InvenTreeTable.tsx:488
+#: src/tables/InvenTreeTable.tsx:427
+#: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -513,7 +515,7 @@ msgid "Unlink custom barcode"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:180
-#: src/tables/RowActions.tsx:51
+#: src/tables/RowActions.tsx:52
 #: src/tables/settings/TemplateTable.tsx:87
 #: src/tables/settings/TemplateTable.tsx:150
 #: src/tables/settings/TemplateTable.tsx:287
@@ -525,8 +527,8 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
-#: src/tables/RowActions.tsx:31
+#: src/pages/stock/StockDetail.tsx:428
+#: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
 
@@ -543,7 +545,7 @@ msgid "Read More"
 msgstr ""
 
 #: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:407
+#: src/tables/InvenTreeTable.tsx:419
 msgid "Unknown error"
 msgstr ""
 
@@ -837,13 +839,13 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
 #: src/components/nav/MainMenu.tsx:60
 #: src/defaults/menuItems.tsx:63
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:161
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:172
 msgid "Admin Center"
 msgstr ""
 
@@ -877,7 +879,7 @@ msgid "Pages"
 msgstr ""
 
 #: src/components/nav/NavigationDrawer.tsx:67
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:122
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:133
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41
 msgid "Plugins"
 msgstr ""
@@ -915,7 +917,7 @@ msgstr ""
 
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
-#: src/pages/Index/Settings/SystemSettings.tsx:164
+#: src/pages/Index/Settings/SystemSettings.tsx:163
 #: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
@@ -954,7 +956,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -973,20 +975,20 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:732
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:72
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:22
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
-#: src/pages/Index/Settings/SystemSettings.tsx:169
-#: src/pages/part/CategoryDetail.tsx:103
+#: src/pages/Index/Settings/SystemSettings.tsx:168
+#: src/pages/part/CategoryDetail.tsx:104
 #: src/pages/part/CategoryDetail.tsx:183
 #: src/pages/part/CategoryDetail.tsx:213
-#: src/pages/part/PartDetail.tsx:617
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1009,8 +1011,8 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
-#: src/tables/purchasing/SupplierPartTable.tsx:66
+#: src/pages/stock/StockDetail.tsx:157
+#: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
 
@@ -1019,7 +1021,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1034,15 +1036,15 @@ msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1094,7 +1096,7 @@ msgid "Project Code"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:113
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:92
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:97
 msgid "Project Codes"
 msgstr ""
 
@@ -1105,10 +1107,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:550
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1125,14 +1127,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:556
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1152,7 +1154,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1193,7 +1195,7 @@ msgid "User"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:177
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:68
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:73
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
 msgid "Users"
 msgstr ""
@@ -1205,23 +1207,23 @@ msgstr ""
 #: src/components/render/Part.tsx:10
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:200
-#: src/pages/part/PartDetail.tsx:473
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/Index/Settings/SystemSettings.tsx:199
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122
+#: src/pages/stock/StockDetail.tsx:135
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
 msgstr ""
 
@@ -1417,10 +1419,6 @@ msgstr ""
 #~ msgid "Are you sure you want to remove this parameter?"
 #~ msgstr ""
 
-#: src/components/tables/part/PartParameterTable.tsx:150
-#~ msgid "Add Part Parameter"
-#~ msgstr ""
-
 #: src/components/tables/part/PartParameterTable.tsx:159
 #~ msgid "Part parameter added"
 #~ msgstr ""
@@ -1791,58 +1789,62 @@ msgid "Korean"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:37
-msgid "Dutch"
+msgid "Latvian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:38
-msgid "Norwegian"
+msgid "Dutch"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:39
-msgid "Polish"
+msgid "Norwegian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:40
-msgid "Portuguese"
+msgid "Polish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:41
-msgid "Portuguese (Brazilian)"
+msgid "Portuguese"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:42
-msgid "Russian"
+msgid "Portuguese (Brazilian)"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:43
-msgid "Slovak"
+msgid "Russian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:44
-msgid "Slovenian"
+msgid "Slovak"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:45
-msgid "Swedish"
+msgid "Slovenian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:46
-msgid "Thai"
+msgid "Swedish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:47
-msgid "Turkish"
+msgid "Thai"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:48
-msgid "Vietnamese"
+msgid "Turkish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:49
-msgid "Chinese (Simplified)"
+msgid "Vietnamese"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:50
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: src/contexts/LanguageContext.tsx:51
 msgid "Chinese (Traditional)"
 msgstr ""
 
@@ -1867,7 +1869,7 @@ msgid "Recently Updated"
 msgstr ""
 
 #: src/defaults/dashboardItems.tsx:50
-#: src/tables/part/PartTable.tsx:225
+#: src/tables/part/PartTable.tsx:224
 msgid "Low Stock"
 msgstr ""
 
@@ -1943,7 +1945,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2160,7 +2162,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2218,10 +2220,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2230,11 +2228,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:195
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2243,20 +2245,20 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/tables/RowActions.tsx:151
+#: src/tables/RowActions.tsx:148
 msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:305
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2269,12 +2271,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:690
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2391,7 +2393,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2739,44 +2741,49 @@ msgstr ""
 #~ msgid "Advanced Amininistrative Options for InvenTree"
 #~ msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:74
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:79
 msgid "Background Tasks"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:80
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:85
 msgid "Error Reports"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:86
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:91
 msgid "Currencies"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:104
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:109
 msgid "Custom Units"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:110
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:115
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:116
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:121
+msgid "Category Parameters"
+msgstr ""
+
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:127
 msgid "Templates"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:128
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:139
 #: src/tables/machine/MachineTypeTable.tsx:281
 msgid "Machines"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:138
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:149
 msgid "Quick Actions"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:143
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:154
 msgid "Add a new user"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:162
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:173
 msgid "Advanced Options"
 msgstr ""
 
@@ -2793,7 +2800,7 @@ msgid "There are no machine registry errors."
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28
-#: src/tables/settings/UserTable.tsx:106
+#: src/tables/settings/UserTable.tsx:116
 msgid "Info"
 msgstr ""
 
@@ -2834,7 +2841,7 @@ msgid "Failed Tasks"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:141
+#: src/pages/Index/Settings/SystemSettings.tsx:140
 msgid "Labels"
 msgstr ""
 
@@ -2872,7 +2879,7 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:498
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -2885,7 +2892,7 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18
-#: src/tables/settings/UserTable.tsx:124
+#: src/tables/settings/UserTable.tsx:135
 msgid "Groups"
 msgstr ""
 
@@ -2907,7 +2914,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -2916,28 +2923,28 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:135
-msgid "Exchange Rates"
-msgstr ""
+#~ msgid "Exchange Rates"
+#~ msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:147
+#: src/pages/Index/Settings/SystemSettings.tsx:146
 #: src/pages/Index/Settings/UserSettings.tsx:99
 msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:568
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -2995,7 +3002,7 @@ msgstr ""
 #: src/pages/sales/SalesOrderDetail.tsx:78
 #: src/tables/machine/MachineListTable.tsx:323
 #: src/tables/purchasing/PurchaseOrderTable.tsx:55
-#: src/tables/sales/ReturnOrderTable.tsx:45
+#: src/tables/sales/ReturnOrderTable.tsx:41
 #: src/tables/sales/SalesOrderTable.tsx:52
 #: src/tables/stock/StockItemTable.tsx:252
 msgid "Status"
@@ -3010,15 +3017,15 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:116
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
-#: src/tables/ColumnRenderers.tsx:52
+#: src/pages/stock/LocationDetail.tsx:93
+#: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
 #: src/tables/machine/MachineTypeTable.tsx:213
@@ -3047,7 +3054,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3095,10 +3102,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr ""
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr ""
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3125,23 +3128,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:590
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:602
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:185
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3193,8 +3195,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3203,7 +3205,8 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
-#: src/tables/sales/ReturnOrderTable.tsx:64
+#: src/pages/stock/StockDetail.tsx:214
+#: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
 msgstr ""
@@ -3240,57 +3243,56 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
-#: src/tables/purchasing/ManufacturerPartTable.tsx:57
+#: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/CategoryDetail.tsx:203
-#: src/pages/part/PartDetail.tsx:467
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:537
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
-#: src/tables/purchasing/ManufacturerPartTable.tsx:101
+#: src/pages/company/ManufacturerPartDetail.tsx:187
+#: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:90
-#: src/tables/ColumnRenderers.tsx:78
+#: src/tables/ColumnRenderers.tsx:105
 msgid "Note"
 msgstr ""
 
@@ -3300,14 +3302,14 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:143
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:107
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:143
-#: src/tables/purchasing/SupplierPartTable.tsx:123
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:105
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:141
+#: src/tables/purchasing/SupplierPartTable.tsx:120
 msgid "Pack Quantity"
 msgstr ""
 
@@ -3337,137 +3339,138 @@ msgid "Supplier Part Actions"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:254
-#: src/tables/purchasing/SupplierPartTable.tsx:193
+#: src/tables/purchasing/SupplierPartTable.tsx:190
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:122
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
+#: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:135
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:189
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:201
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:207
-#: src/tables/bom/BomTable.tsx:188
+#: src/pages/part/PartDetail.tsx:215
+#: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:216
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:227
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:237
-#: src/tables/bom/BomTable.tsx:212
+#: src/pages/part/PartDetail.tsx:245
+#: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
-#: src/tables/bom/BomTable.tsx:196
-#: src/tables/part/PartTable.tsx:92
+#: src/pages/part/PartDetail.tsx:252
+#: src/tables/bom/BomTable.tsx:193
+#: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:253
-#: src/tables/bom/UsedInTable.tsx:66
+#: src/pages/part/PartDetail.tsx:261
+#: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
-#: src/tables/part/PartTable.tsx:177
+#: src/tables/part/PartTable.tsx:176
 #: src/tables/part/PartVariantTable.tsx:15
 #: src/tables/plugin/PluginListTable.tsx:190
 #: src/tables/plugin/PluginListTable.tsx:634
@@ -3475,41 +3478,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:258
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:263
-#: src/tables/bom/BomTable.tsx:240
+#: src/pages/part/PartDetail.tsx:271
+#: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:268
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:273
-#: src/tables/bom/BomTable.tsx:235
+#: src/pages/part/PartDetail.tsx:281
+#: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:278
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:283
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:288
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:296
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:301
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3517,84 +3520,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:315
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:326
-#: src/tables/bom/BomTable.tsx:137
-#: src/tables/part/PartTable.tsx:161
-msgid "Price Range"
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
 msgstr ""
 
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:361
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:334
+#: src/tables/bom/BomTable.tsx:134
+#: src/tables/part/PartTable.tsx:160
+msgid "Price Range"
+msgstr ""
+
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:396
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:461
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:485
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:524
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:573
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:584
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:641
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:672
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:680
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:691
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:701
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3649,7 +3652,7 @@ msgstr ""
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:181
 #: src/pages/sales/ReturnOrderDetail.tsx:147
 #: src/pages/sales/SalesOrderDetail.tsx:151
-#: src/tables/ColumnRenderers.tsx:137
+#: src/tables/ColumnRenderers.tsx:164
 msgid "Target Date"
 msgstr ""
 
@@ -3677,55 +3680,55 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
-#: src/tables/part/PartTable.tsx:117
+#: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
 #: src/tables/stock/StockItemTable.tsx:268
 msgid "Available"
@@ -3739,14 +3742,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr ""
@@ -3755,69 +3762,69 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/ColumnRenderers.tsx:155
 #: src/tables/plugin/PluginListTable.tsx:182
 #: src/tables/stock/StockItemTestResultTable.tsx:194
 msgid "Date"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:174
+#: src/tables/ColumnRenderers.tsx:201
 #: src/tables/settings/CurrencyTable.tsx:23
 msgid "Currency"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:188
+#: src/tables/ColumnRenderers.tsx:215
 msgid "Total Price"
 msgstr ""
 
@@ -3890,212 +3897,212 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:89
-#: src/tables/InvenTreeTable.tsx:354
-#: src/tables/InvenTreeTable.tsx:375
+#: src/tables/InvenTreeTable.tsx:101
+#: src/tables/InvenTreeTable.tsx:366
+#: src/tables/InvenTreeTable.tsx:387
 msgid "No records found"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:386
+#: src/tables/InvenTreeTable.tsx:398
 msgid "Server returned incorrect data type"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:394
+#: src/tables/InvenTreeTable.tsx:406
 msgid "Bad request"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:397
+#: src/tables/InvenTreeTable.tsx:409
 msgid "Unauthorized"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:400
+#: src/tables/InvenTreeTable.tsx:412
 msgid "Forbidden"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:403
+#: src/tables/InvenTreeTable.tsx:415
 msgid "Not found"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:445
-#: src/tables/InvenTreeTable.tsx:536
+#: src/tables/InvenTreeTable.tsx:460
+#: src/tables/InvenTreeTable.tsx:575
 msgid "Delete selected records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:449
+#: src/tables/InvenTreeTable.tsx:464
 msgid "Are you sure you want to delete the selected records?"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:451
+#: src/tables/InvenTreeTable.tsx:466
 msgid "This action cannot be undone!"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:479
+#: src/tables/InvenTreeTable.tsx:494
 msgid "Deleted records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:495
 msgid "Records were deleted successfully"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:504
 msgid "Failed to delete records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:517
-#: src/tables/InvenTreeTable.tsx:518
+#: src/tables/InvenTreeTable.tsx:556
+#: src/tables/InvenTreeTable.tsx:557
 msgid "Barcode actions"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:526
-#: src/tables/InvenTreeTable.tsx:527
+#: src/tables/InvenTreeTable.tsx:565
+#: src/tables/InvenTreeTable.tsx:566
 msgid "Print actions"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:552
+#: src/tables/InvenTreeTable.tsx:591
 msgid "Refresh data"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:570
+#: src/tables/InvenTreeTable.tsx:609
 msgid "Table filters"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:76
+#: src/tables/bom/BomTable.tsx:73
 msgid "This BOM item is defined for a different parent"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:91
+#: src/tables/bom/BomTable.tsx:88
 msgid "Part Information"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:155
-#: src/tables/part/PartTable.tsx:134
+#: src/tables/bom/BomTable.tsx:152
+#: src/tables/part/PartTable.tsx:133
 msgid "No stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:163
+#: src/tables/bom/BomTable.tsx:160
 #: src/tables/build/BuildLineTable.tsx:101
-#: src/tables/part/PartTable.tsx:125
+#: src/tables/part/PartTable.tsx:124
 msgid "External stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:171
+#: src/tables/bom/BomTable.tsx:168
 #: src/tables/build/BuildLineTable.tsx:64
 msgid "Includes substitute stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:180
+#: src/tables/bom/BomTable.tsx:177
 #: src/tables/build/BuildLineTable.tsx:74
 msgid "Includes variant stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:205
-#: src/tables/part/PartTable.tsx:153
+#: src/tables/bom/BomTable.tsx:202
+#: src/tables/part/PartTable.tsx:152
 #: src/tables/stock/StockItemTable.tsx:190
 msgid "Stock Information"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:216
+#: src/tables/bom/BomTable.tsx:213
 #: src/tables/build/BuildLineTable.tsx:179
 msgid "Consumable item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:236
+#: src/tables/bom/BomTable.tsx:233
 msgid "Show trackable items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:241
+#: src/tables/bom/BomTable.tsx:238
 msgid "Show asssmbled items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:245
+#: src/tables/bom/BomTable.tsx:242
 msgid "Show items with available stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:249
+#: src/tables/bom/BomTable.tsx:246
 msgid "Show items on order"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:253
+#: src/tables/bom/BomTable.tsx:250
 msgid "Show validated items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:257
-#: src/tables/bom/UsedInTable.tsx:58
+#: src/tables/bom/BomTable.tsx:254
+#: src/tables/bom/UsedInTable.tsx:54
 msgid "Show inherited items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:261
-#: src/tables/bom/UsedInTable.tsx:62
+#: src/tables/bom/BomTable.tsx:258
+#: src/tables/bom/UsedInTable.tsx:58
 msgid "Show optional items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:265
+#: src/tables/bom/BomTable.tsx:262
 msgid "Show consumable items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:269
+#: src/tables/bom/BomTable.tsx:266
 msgid "Has Pricing"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:270
+#: src/tables/bom/BomTable.tsx:267
 msgid "Show items with pricing"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:281
+#: src/tables/bom/BomTable.tsx:278
 msgid "View BOM"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:292
+#: src/tables/bom/BomTable.tsx:289
 msgid "Validate BOM line"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:300
+#: src/tables/bom/BomTable.tsx:297
 msgid "Edit Substitutes"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:314
+#: src/tables/bom/BomTable.tsx:311
 msgid "Edit Bom Item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:316
+#: src/tables/bom/BomTable.tsx:313
 msgid "Bom item updated"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:331
+#: src/tables/bom/BomTable.tsx:328
 msgid "Delete Bom Item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:332
+#: src/tables/bom/BomTable.tsx:329
 msgid "Bom item deleted"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:334
+#: src/tables/bom/BomTable.tsx:331
 msgid "Are you sure you want to remove this BOM item?"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/bom/UsedInTable.tsx:63
 msgid "Show active assemblies"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:71
-#: src/tables/part/PartTable.tsx:201
+#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/part/PartTable.tsx:200
 #: src/tables/part/PartVariantTable.tsx:30
 msgid "Trackable"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:72
+#: src/tables/bom/UsedInTable.tsx:68
 msgid "Show trackable assemblies"
 msgstr ""
 
@@ -4150,7 +4157,7 @@ msgstr ""
 
 #: src/tables/build/BuildOrderTable.tsx:107
 #: src/tables/purchasing/PurchaseOrderTable.tsx:56
-#: src/tables/sales/ReturnOrderTable.tsx:46
+#: src/tables/sales/ReturnOrderTable.tsx:42
 #: src/tables/sales/SalesOrderTable.tsx:53
 msgid "Filter by order status"
 msgstr ""
@@ -4185,11 +4192,11 @@ msgstr ""
 msgid "Are you sure you want to delete this address?"
 msgstr ""
 
-#: src/tables/company/CompanyTable.tsx:62
+#: src/tables/company/CompanyTable.tsx:63
 msgid "New Company"
 msgstr ""
 
-#: src/tables/company/CompanyTable.tsx:82
+#: src/tables/company/CompanyTable.tsx:83
 msgid "Add Company"
 msgstr ""
 
@@ -4209,35 +4216,35 @@ msgstr ""
 msgid "Add contact"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:161
+#: src/tables/general/AttachmentTable.tsx:162
 msgid "File uploaded"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:162
+#: src/tables/general/AttachmentTable.tsx:163
 msgid "File {0} uploaded successfully"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:173
+#: src/tables/general/AttachmentTable.tsx:174
 msgid "Upload Error"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:174
+#: src/tables/general/AttachmentTable.tsx:175
 msgid "File could not be uploaded"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:187
+#: src/tables/general/AttachmentTable.tsx:188
 msgid "Add attachment"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:206
+#: src/tables/general/AttachmentTable.tsx:207
 msgid "Add external link"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:237
+#: src/tables/general/AttachmentTable.tsx:238
 msgid "No attachments found"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:252
+#: src/tables/general/AttachmentTable.tsx:253
 msgid "Upload attachment"
 msgstr ""
 
@@ -4397,13 +4404,27 @@ msgstr ""
 msgid "Message"
 msgstr ""
 
-#: src/tables/part/ParametricPartTable.tsx:80
+#: src/tables/part/ParametricPartTable.tsx:75
 #: src/tables/part/PartParameterTable.tsx:83
 msgid "Internal Units"
 msgstr ""
 
+#: src/tables/part/ParametricPartTable.tsx:80
+msgid "Edit parameter"
+msgstr ""
+
+#: src/tables/part/ParametricPartTable.tsx:133
+msgid "Add Part Parameter"
+msgstr ""
+
+#: src/tables/part/ParametricPartTable.tsx:146
+#: src/tables/part/PartParameterTable.tsx:121
+#: src/tables/part/PartParameterTable.tsx:143
+msgid "Edit Part Parameter"
+msgstr ""
+
 #: src/tables/part/PartCategoryTable.tsx:64
-#: src/tables/part/PartTable.tsx:189
+#: src/tables/part/PartTable.tsx:188
 msgid "Include Subcategories"
 msgstr ""
 
@@ -4423,13 +4444,29 @@ msgstr ""
 msgid "Add Part Category"
 msgstr ""
 
-#: src/tables/part/PartParameterTable.tsx:106
-msgid "New Part Parameter"
+#: src/tables/part/PartCategoryTemplateTable.tsx:39
+#: src/tables/part/PartCategoryTemplateTable.tsx:132
+msgid "Add Category Parameter"
 msgstr ""
 
-#: src/tables/part/PartParameterTable.tsx:121
-#: src/tables/part/PartParameterTable.tsx:143
-msgid "Edit Part Parameter"
+#: src/tables/part/PartCategoryTemplateTable.tsx:47
+msgid "Edit Category Parameter"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:55
+msgid "Delete Category Parameter"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:77
+msgid "Parameter Template"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:93
+msgid "[{0}]"
+msgstr ""
+
+#: src/tables/part/PartParameterTable.tsx:106
+msgid "New Part Parameter"
 msgstr ""
 
 #: src/tables/part/PartParameterTable.tsx:129
@@ -4463,7 +4500,7 @@ msgid "Show templates with choices"
 msgstr ""
 
 #: src/tables/part/PartParameterTemplateTable.tsx:41
-#: src/tables/part/PartTable.tsx:207
+#: src/tables/part/PartTable.tsx:206
 msgid "Has Units"
 msgstr ""
 
@@ -4487,101 +4524,101 @@ msgstr ""
 msgid "Add parameter template"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:77
+#: src/tables/part/PartTable.tsx:76
 msgid "Minimum stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:86
+#: src/tables/part/PartTable.tsx:85
 msgid "On Order"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:99
+#: src/tables/part/PartTable.tsx:98
 msgid "Build Order Allocations"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:108
+#: src/tables/part/PartTable.tsx:107
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:178
+#: src/tables/part/PartTable.tsx:177
 msgid "Filter by part active status"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:183
+#: src/tables/part/PartTable.tsx:182
 #: src/tables/stock/StockItemTable.tsx:258
 msgid "Assembly"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:184
+#: src/tables/part/PartTable.tsx:183
 msgid "Filter by assembly attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:190
+#: src/tables/part/PartTable.tsx:189
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:195
+#: src/tables/part/PartTable.tsx:194
 msgid "Component"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:196
+#: src/tables/part/PartTable.tsx:195
 msgid "Filter by component attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:202
+#: src/tables/part/PartTable.tsx:201
 msgid "Filter by trackable attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:208
+#: src/tables/part/PartTable.tsx:207
 msgid "Filter by parts which have units"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:213
+#: src/tables/part/PartTable.tsx:212
 msgid "Has IPN"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:214
+#: src/tables/part/PartTable.tsx:213
 msgid "Filter by parts which have an internal part number"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:219
+#: src/tables/part/PartTable.tsx:218
 msgid "Has Stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:220
+#: src/tables/part/PartTable.tsx:219
 msgid "Filter by parts which have stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:226
+#: src/tables/part/PartTable.tsx:225
 msgid "Filter by parts which have low stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:231
+#: src/tables/part/PartTable.tsx:230
 msgid "Purchaseable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:232
+#: src/tables/part/PartTable.tsx:231
 msgid "Filter by parts which are purchaseable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:237
+#: src/tables/part/PartTable.tsx:236
 msgid "Salable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:238
+#: src/tables/part/PartTable.tsx:237
 msgid "Filter by parts which are salable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:244
+#: src/tables/part/PartTable.tsx:243
 msgid "Filter by parts which are virtual"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:248
+#: src/tables/part/PartTable.tsx:247
 msgid "Not Virtual"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:276
-#: src/tables/part/PartTable.tsx:292
+#: src/tables/part/PartTable.tsx:275
+#: src/tables/part/PartTable.tsx:291
 msgid "Add Part"
 msgstr ""
 
@@ -4877,9 +4914,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr ""
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -4909,83 +4950,83 @@ msgstr ""
 msgid "Are you sure you want to delete this parameter?"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:67
+#: src/tables/purchasing/ManufacturerPartTable.tsx:63
 msgid "Create Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:82
+#: src/tables/purchasing/ManufacturerPartTable.tsx:78
 msgid "Add Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:104
+#: src/tables/purchasing/ManufacturerPartTable.tsx:100
 msgid "Manufacturer part updated"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:115
+#: src/tables/purchasing/ManufacturerPartTable.tsx:111
 msgid "Delete Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:116
+#: src/tables/purchasing/ManufacturerPartTable.tsx:112
 msgid "Manufacturer part deleted"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:118
+#: src/tables/purchasing/ManufacturerPartTable.tsx:114
 msgid "Are you sure you want to remove this manufacturer part?"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:86
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:84
 msgid "Part Description"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:113
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:111
 msgid "Total Quantity"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:129
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:127
 msgid "Received"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:148
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:146
 msgid "Supplier Code"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:155
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:153
 msgid "Supplier Link"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:162
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:160
 msgid "Manufacturer Code"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:168
 msgid "Unit Price"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:176
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:174
 msgid "Destination"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:193
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:188
 msgid "Add Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:208
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:203
 msgid "Edit Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:216
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:211
 msgid "Delete Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:227
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:222
 msgid "Receive line item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:256
 msgid "Add line item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:266
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
 msgid "Receive items"
 msgstr ""
 
@@ -4994,47 +5035,47 @@ msgstr ""
 msgid "Add Purchase Order"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:91
+#: src/tables/purchasing/SupplierPartTable.tsx:88
 msgid "MPN"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:114
+#: src/tables/purchasing/SupplierPartTable.tsx:111
 msgid "Base units"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:140
+#: src/tables/purchasing/SupplierPartTable.tsx:137
 msgid "Updated"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:159
+#: src/tables/purchasing/SupplierPartTable.tsx:156
 msgid "Add Supplier Part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:162
+#: src/tables/purchasing/SupplierPartTable.tsx:159
 msgid "Supplier part created"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:171
+#: src/tables/purchasing/SupplierPartTable.tsx:168
 msgid "Add supplier part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:196
+#: src/tables/purchasing/SupplierPartTable.tsx:193
 msgid "Supplier part updated"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:207
+#: src/tables/purchasing/SupplierPartTable.tsx:204
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:208
+#: src/tables/purchasing/SupplierPartTable.tsx:205
 msgid "Supplier part deleted"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:210
+#: src/tables/purchasing/SupplierPartTable.tsx:207
 msgid "Are you sure you want to remove this supplier part?"
 msgstr ""
 
-#: src/tables/sales/ReturnOrderTable.tsx:99
+#: src/tables/sales/ReturnOrderTable.tsx:95
 msgid "Add Return Order"
 msgstr ""
 
@@ -5112,6 +5153,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5213,68 +5255,68 @@ msgstr ""
 msgid "Filter by enabled status"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:69
+#: src/tables/settings/UserTable.tsx:79
 msgid "User with id {id} not found"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:71
+#: src/tables/settings/UserTable.tsx:81
 msgid "An error occurred while fetching user details"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:89
+#: src/tables/settings/UserTable.tsx:99
 msgid "Is Active"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:90
+#: src/tables/settings/UserTable.tsx:100
 msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:94
+#: src/tables/settings/UserTable.tsx:104
 msgid "Is Staff"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:95
+#: src/tables/settings/UserTable.tsx:105
 msgid "Designates whether the user can log into the django admin site."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:99
+#: src/tables/settings/UserTable.tsx:109
 msgid "Is Superuser"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:100
+#: src/tables/settings/UserTable.tsx:110
 msgid "Designates that this user has all permissions without explicitly assigning them."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:110
+#: src/tables/settings/UserTable.tsx:120
 msgid "You cannot edit the rights for the currently logged-in user."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:139
+#: src/tables/settings/UserTable.tsx:151
 msgid "No groups"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:207
+#: src/tables/settings/UserTable.tsx:231
 msgid "Delete user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:208
+#: src/tables/settings/UserTable.tsx:232
 msgid "User deleted"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:210
+#: src/tables/settings/UserTable.tsx:234
 msgid "Are you sure you want to delete this user?"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:220
-#: src/tables/settings/UserTable.tsx:236
+#: src/tables/settings/UserTable.tsx:240
+#: src/tables/settings/UserTable.tsx:258
 msgid "Add user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:228
+#: src/tables/settings/UserTable.tsx:248
 msgid "Added user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:245
+#: src/tables/settings/UserTable.tsx:270
 msgid "Edit user"
 msgstr ""
 
@@ -5500,67 +5542,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:306
-#: src/tables/stock/StockItemTestResultTable.tsx:361
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:316
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:325
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:294
+#: src/tables/stock/StockItemTestResultTable.tsx:322
+msgid "Failed to record test result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:342
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:343
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:347
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:348
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:352
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:353
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/zh-hant/messages.po b/src/frontend/src/locales/zh-hant/messages.po
index b9b4e0bf43af..b773a382a4a0 100644
--- a/src/frontend/src/locales/zh-hant/messages.po
+++ b/src/frontend/src/locales/zh-hant/messages.po
@@ -17,61 +17,61 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:321
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:63
+#: src/components/details/DetailsImage.tsx:64
 msgid "Remove Image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:66
+#: src/components/details/DetailsImage.tsx:67
 msgid "Remove the associated image from this item?"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:69
+#: src/components/details/DetailsImage.tsx:70
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:69
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/details/DetailsImage.tsx:70
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
-#: src/tables/InvenTreeTable.tsx:456
+#: src/tables/FilterSelectDrawer.tsx:218
+#: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:97
+#: src/components/details/DetailsImage.tsx:98
 msgid "Drag and drop to upload"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:100
+#: src/components/details/DetailsImage.tsx:101
 msgid "Click to select file(s)"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:222
+#: src/components/details/DetailsImage.tsx:223
 msgid "Clear"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:225
-#: src/components/forms/ApiForm.tsx:451
+#: src/components/details/DetailsImage.tsx:226
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:265
+#: src/components/details/DetailsImage.tsx:266
 msgid "Select from existing images"
 msgstr ""
 
@@ -83,11 +83,11 @@ msgstr ""
 msgid "Upload new image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:295
+#: src/components/details/DetailsImage.tsx:293
 msgid "Upload Image"
 msgstr ""
 
-#: src/components/details/DetailsImage.tsx:308
+#: src/components/details/DetailsImage.tsx:306
 msgid "Delete image"
 msgstr ""
 
@@ -128,8 +128,8 @@ msgid "Part is virtual (not a physical part)"
 msgstr ""
 
 #: src/components/details/PartIcons.tsx:82
-#: src/tables/part/PartTable.tsx:243
-#: src/tables/part/PartTable.tsx:247
+#: src/tables/part/PartTable.tsx:242
+#: src/tables/part/PartTable.tsx:246
 #: src/tables/part/PartVariantTable.tsx:25
 msgid "Virtual"
 msgstr ""
@@ -150,94 +150,94 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:132
+#: src/components/forms/ApiForm.tsx:130
 #: src/functions/forms.tsx:259
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:323
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:396
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:487
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:507
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
 #: src/pages/Index/Scan.tsx:332
 #: src/pages/Notifications.tsx:123
-#: src/tables/InvenTreeTable.tsx:455
-#: src/tables/RowActions.tsx:71
+#: src/tables/InvenTreeTable.tsx:470
+#: src/tables/RowActions.tsx:72
 #: src/tables/plugin/PluginListTable.tsx:473
 #: src/tables/settings/TemplateTable.tsx:105
 #: src/tables/settings/TemplateTable.tsx:154
@@ -245,65 +245,65 @@ msgstr ""
 msgid "Delete"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -312,69 +312,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -385,8 +385,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -436,15 +437,16 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
 #: src/pages/ErrorPage.tsx:12
 #: src/pages/ErrorPage.tsx:25
-#: src/tables/InvenTreeTable.tsx:415
-#: src/tables/InvenTreeTable.tsx:488
+#: src/tables/InvenTreeTable.tsx:427
+#: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -513,7 +515,7 @@ msgid "Unlink custom barcode"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:180
-#: src/tables/RowActions.tsx:51
+#: src/tables/RowActions.tsx:52
 #: src/tables/settings/TemplateTable.tsx:87
 #: src/tables/settings/TemplateTable.tsx:150
 #: src/tables/settings/TemplateTable.tsx:287
@@ -525,8 +527,8 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
-#: src/tables/RowActions.tsx:31
+#: src/pages/stock/StockDetail.tsx:428
+#: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
 
@@ -543,7 +545,7 @@ msgid "Read More"
 msgstr ""
 
 #: src/components/items/ErrorItem.tsx:5
-#: src/tables/InvenTreeTable.tsx:407
+#: src/tables/InvenTreeTable.tsx:419
 msgid "Unknown error"
 msgstr ""
 
@@ -837,13 +839,13 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
 #: src/components/nav/MainMenu.tsx:60
 #: src/defaults/menuItems.tsx:63
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:161
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:172
 msgid "Admin Center"
 msgstr ""
 
@@ -877,7 +879,7 @@ msgid "Pages"
 msgstr ""
 
 #: src/components/nav/NavigationDrawer.tsx:67
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:122
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:133
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:41
 msgid "Plugins"
 msgstr ""
@@ -915,7 +917,7 @@ msgstr ""
 
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
-#: src/pages/Index/Settings/SystemSettings.tsx:164
+#: src/pages/Index/Settings/SystemSettings.tsx:163
 #: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
@@ -954,7 +956,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -973,20 +975,20 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:732
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:72
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:22
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
-#: src/pages/Index/Settings/SystemSettings.tsx:169
-#: src/pages/part/CategoryDetail.tsx:103
+#: src/pages/Index/Settings/SystemSettings.tsx:168
+#: src/pages/part/CategoryDetail.tsx:104
 #: src/pages/part/CategoryDetail.tsx:183
 #: src/pages/part/CategoryDetail.tsx:213
-#: src/pages/part/PartDetail.tsx:617
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1009,8 +1011,8 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
-#: src/tables/purchasing/SupplierPartTable.tsx:66
+#: src/pages/stock/StockDetail.tsx:157
+#: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
 
@@ -1019,7 +1021,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1034,15 +1036,15 @@ msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1094,7 +1096,7 @@ msgid "Project Code"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:113
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:92
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:97
 msgid "Project Codes"
 msgstr ""
 
@@ -1105,10 +1107,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:550
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1125,14 +1127,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:556
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1152,7 +1154,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1193,7 +1195,7 @@ msgid "User"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:177
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:68
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:73
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:13
 msgid "Users"
 msgstr ""
@@ -1205,23 +1207,23 @@ msgstr ""
 #: src/components/render/Part.tsx:10
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:200
-#: src/pages/part/PartDetail.tsx:473
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/Index/Settings/SystemSettings.tsx:199
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:94
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:122
+#: src/pages/stock/StockDetail.tsx:135
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
 msgstr ""
 
@@ -1417,10 +1419,6 @@ msgstr ""
 #~ msgid "Are you sure you want to remove this parameter?"
 #~ msgstr ""
 
-#: src/components/tables/part/PartParameterTable.tsx:150
-#~ msgid "Add Part Parameter"
-#~ msgstr ""
-
 #: src/components/tables/part/PartParameterTable.tsx:159
 #~ msgid "Part parameter added"
 #~ msgstr ""
@@ -1791,58 +1789,62 @@ msgid "Korean"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:37
-msgid "Dutch"
+msgid "Latvian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:38
-msgid "Norwegian"
+msgid "Dutch"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:39
-msgid "Polish"
+msgid "Norwegian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:40
-msgid "Portuguese"
+msgid "Polish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:41
-msgid "Portuguese (Brazilian)"
+msgid "Portuguese"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:42
-msgid "Russian"
+msgid "Portuguese (Brazilian)"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:43
-msgid "Slovak"
+msgid "Russian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:44
-msgid "Slovenian"
+msgid "Slovak"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:45
-msgid "Swedish"
+msgid "Slovenian"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:46
-msgid "Thai"
+msgid "Swedish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:47
-msgid "Turkish"
+msgid "Thai"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:48
-msgid "Vietnamese"
+msgid "Turkish"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:49
-msgid "Chinese (Simplified)"
+msgid "Vietnamese"
 msgstr ""
 
 #: src/contexts/LanguageContext.tsx:50
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: src/contexts/LanguageContext.tsx:51
 msgid "Chinese (Traditional)"
 msgstr ""
 
@@ -1867,7 +1869,7 @@ msgid "Recently Updated"
 msgstr ""
 
 #: src/defaults/dashboardItems.tsx:50
-#: src/tables/part/PartTable.tsx:225
+#: src/tables/part/PartTable.tsx:224
 msgid "Low Stock"
 msgstr ""
 
@@ -1943,7 +1945,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2160,7 +2162,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2218,10 +2220,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2230,11 +2228,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:195
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2243,20 +2245,20 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/tables/RowActions.tsx:151
+#: src/tables/RowActions.tsx:148
 msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:305
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2269,12 +2271,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:690
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2391,7 +2393,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2739,44 +2741,49 @@ msgstr ""
 #~ msgid "Advanced Amininistrative Options for InvenTree"
 #~ msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:74
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:79
 msgid "Background Tasks"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:80
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:85
 msgid "Error Reports"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:86
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:91
 msgid "Currencies"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:104
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:109
 msgid "Custom Units"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:110
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:115
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:116
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:121
+msgid "Category Parameters"
+msgstr ""
+
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:127
 msgid "Templates"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:128
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:139
 #: src/tables/machine/MachineTypeTable.tsx:281
 msgid "Machines"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:138
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:149
 msgid "Quick Actions"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:143
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:154
 msgid "Add a new user"
 msgstr ""
 
-#: src/pages/Index/Settings/AdminCenter/Index.tsx:162
+#: src/pages/Index/Settings/AdminCenter/Index.tsx:173
 msgid "Advanced Options"
 msgstr ""
 
@@ -2793,7 +2800,7 @@ msgid "There are no machine registry errors."
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx:28
-#: src/tables/settings/UserTable.tsx:106
+#: src/tables/settings/UserTable.tsx:116
 msgid "Info"
 msgstr ""
 
@@ -2834,7 +2841,7 @@ msgid "Failed Tasks"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:38
-#: src/pages/Index/Settings/SystemSettings.tsx:141
+#: src/pages/Index/Settings/SystemSettings.tsx:140
 msgid "Labels"
 msgstr ""
 
@@ -2872,7 +2879,7 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:498
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -2885,7 +2892,7 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/UserManagementPanel.tsx:18
-#: src/tables/settings/UserTable.tsx:124
+#: src/tables/settings/UserTable.tsx:135
 msgid "Groups"
 msgstr ""
 
@@ -2907,7 +2914,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -2916,28 +2923,28 @@ msgstr ""
 #~ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:135
-msgid "Exchange Rates"
-msgstr ""
+#~ msgid "Exchange Rates"
+#~ msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:147
+#: src/pages/Index/Settings/SystemSettings.tsx:146
 #: src/pages/Index/Settings/UserSettings.tsx:99
 msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:568
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -2995,7 +3002,7 @@ msgstr ""
 #: src/pages/sales/SalesOrderDetail.tsx:78
 #: src/tables/machine/MachineListTable.tsx:323
 #: src/tables/purchasing/PurchaseOrderTable.tsx:55
-#: src/tables/sales/ReturnOrderTable.tsx:45
+#: src/tables/sales/ReturnOrderTable.tsx:41
 #: src/tables/sales/SalesOrderTable.tsx:52
 #: src/tables/stock/StockItemTable.tsx:252
 msgid "Status"
@@ -3010,15 +3017,15 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:116
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
-#: src/tables/ColumnRenderers.tsx:52
+#: src/pages/stock/LocationDetail.tsx:93
+#: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
 #: src/tables/machine/MachineTypeTable.tsx:213
@@ -3047,7 +3054,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3095,10 +3102,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr ""
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr ""
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3125,23 +3128,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:590
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:602
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:185
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3193,8 +3195,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3203,7 +3205,8 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
-#: src/tables/sales/ReturnOrderTable.tsx:64
+#: src/pages/stock/StockDetail.tsx:214
+#: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
 msgstr ""
@@ -3240,57 +3243,56 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
-#: src/tables/purchasing/ManufacturerPartTable.tsx:57
+#: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/CategoryDetail.tsx:203
-#: src/pages/part/PartDetail.tsx:467
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:537
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
-#: src/tables/purchasing/ManufacturerPartTable.tsx:101
+#: src/pages/company/ManufacturerPartDetail.tsx:187
+#: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:90
-#: src/tables/ColumnRenderers.tsx:78
+#: src/tables/ColumnRenderers.tsx:105
 msgid "Note"
 msgstr ""
 
@@ -3300,14 +3302,14 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:143
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:107
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:143
-#: src/tables/purchasing/SupplierPartTable.tsx:123
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:105
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:141
+#: src/tables/purchasing/SupplierPartTable.tsx:120
 msgid "Pack Quantity"
 msgstr ""
 
@@ -3337,137 +3339,138 @@ msgid "Supplier Part Actions"
 msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:254
-#: src/tables/purchasing/SupplierPartTable.tsx:193
+#: src/tables/purchasing/SupplierPartTable.tsx:190
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:122
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
+#: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:135
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:189
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:201
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:207
-#: src/tables/bom/BomTable.tsx:188
+#: src/pages/part/PartDetail.tsx:215
+#: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:216
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:227
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:237
-#: src/tables/bom/BomTable.tsx:212
+#: src/pages/part/PartDetail.tsx:245
+#: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
-#: src/tables/bom/BomTable.tsx:196
-#: src/tables/part/PartTable.tsx:92
+#: src/pages/part/PartDetail.tsx:252
+#: src/tables/bom/BomTable.tsx:193
+#: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:253
-#: src/tables/bom/UsedInTable.tsx:66
+#: src/pages/part/PartDetail.tsx:261
+#: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
-#: src/tables/part/PartTable.tsx:177
+#: src/tables/part/PartTable.tsx:176
 #: src/tables/part/PartVariantTable.tsx:15
 #: src/tables/plugin/PluginListTable.tsx:190
 #: src/tables/plugin/PluginListTable.tsx:634
@@ -3475,41 +3478,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:258
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:263
-#: src/tables/bom/BomTable.tsx:240
+#: src/pages/part/PartDetail.tsx:271
+#: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:268
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:273
-#: src/tables/bom/BomTable.tsx:235
+#: src/pages/part/PartDetail.tsx:281
+#: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:278
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:283
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:288
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:296
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:301
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3517,84 +3520,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:315
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:326
-#: src/tables/bom/BomTable.tsx:137
-#: src/tables/part/PartTable.tsx:161
-msgid "Price Range"
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
 msgstr ""
 
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr ""
 
-#: src/pages/part/PartDetail.tsx:361
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:334
+#: src/tables/bom/BomTable.tsx:134
+#: src/tables/part/PartTable.tsx:160
+msgid "Price Range"
+msgstr ""
+
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:396
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:461
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:485
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:524
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:573
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:584
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:641
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:672
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:680
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:691
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:701
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3649,7 +3652,7 @@ msgstr ""
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:181
 #: src/pages/sales/ReturnOrderDetail.tsx:147
 #: src/pages/sales/SalesOrderDetail.tsx:151
-#: src/tables/ColumnRenderers.tsx:137
+#: src/tables/ColumnRenderers.tsx:164
 msgid "Target Date"
 msgstr ""
 
@@ -3677,55 +3680,55 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
-#: src/tables/part/PartTable.tsx:117
+#: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
 #: src/tables/stock/StockItemTable.tsx:268
 msgid "Available"
@@ -3739,14 +3742,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr ""
@@ -3755,69 +3762,69 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:128
+#: src/tables/ColumnRenderers.tsx:155
 #: src/tables/plugin/PluginListTable.tsx:182
 #: src/tables/stock/StockItemTestResultTable.tsx:194
 msgid "Date"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:174
+#: src/tables/ColumnRenderers.tsx:201
 #: src/tables/settings/CurrencyTable.tsx:23
 msgid "Currency"
 msgstr ""
 
-#: src/tables/ColumnRenderers.tsx:188
+#: src/tables/ColumnRenderers.tsx:215
 msgid "Total Price"
 msgstr ""
 
@@ -3890,212 +3897,212 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:89
-#: src/tables/InvenTreeTable.tsx:354
-#: src/tables/InvenTreeTable.tsx:375
+#: src/tables/InvenTreeTable.tsx:101
+#: src/tables/InvenTreeTable.tsx:366
+#: src/tables/InvenTreeTable.tsx:387
 msgid "No records found"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:386
+#: src/tables/InvenTreeTable.tsx:398
 msgid "Server returned incorrect data type"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:394
+#: src/tables/InvenTreeTable.tsx:406
 msgid "Bad request"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:397
+#: src/tables/InvenTreeTable.tsx:409
 msgid "Unauthorized"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:400
+#: src/tables/InvenTreeTable.tsx:412
 msgid "Forbidden"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:403
+#: src/tables/InvenTreeTable.tsx:415
 msgid "Not found"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:445
-#: src/tables/InvenTreeTable.tsx:536
+#: src/tables/InvenTreeTable.tsx:460
+#: src/tables/InvenTreeTable.tsx:575
 msgid "Delete selected records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:449
+#: src/tables/InvenTreeTable.tsx:464
 msgid "Are you sure you want to delete the selected records?"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:451
+#: src/tables/InvenTreeTable.tsx:466
 msgid "This action cannot be undone!"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:479
+#: src/tables/InvenTreeTable.tsx:494
 msgid "Deleted records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:480
+#: src/tables/InvenTreeTable.tsx:495
 msgid "Records were deleted successfully"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:489
+#: src/tables/InvenTreeTable.tsx:504
 msgid "Failed to delete records"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:517
-#: src/tables/InvenTreeTable.tsx:518
+#: src/tables/InvenTreeTable.tsx:556
+#: src/tables/InvenTreeTable.tsx:557
 msgid "Barcode actions"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:526
-#: src/tables/InvenTreeTable.tsx:527
+#: src/tables/InvenTreeTable.tsx:565
+#: src/tables/InvenTreeTable.tsx:566
 msgid "Print actions"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:552
+#: src/tables/InvenTreeTable.tsx:591
 msgid "Refresh data"
 msgstr ""
 
-#: src/tables/InvenTreeTable.tsx:570
+#: src/tables/InvenTreeTable.tsx:609
 msgid "Table filters"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:76
+#: src/tables/bom/BomTable.tsx:73
 msgid "This BOM item is defined for a different parent"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:91
+#: src/tables/bom/BomTable.tsx:88
 msgid "Part Information"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:155
-#: src/tables/part/PartTable.tsx:134
+#: src/tables/bom/BomTable.tsx:152
+#: src/tables/part/PartTable.tsx:133
 msgid "No stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:163
+#: src/tables/bom/BomTable.tsx:160
 #: src/tables/build/BuildLineTable.tsx:101
-#: src/tables/part/PartTable.tsx:125
+#: src/tables/part/PartTable.tsx:124
 msgid "External stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:171
+#: src/tables/bom/BomTable.tsx:168
 #: src/tables/build/BuildLineTable.tsx:64
 msgid "Includes substitute stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:180
+#: src/tables/bom/BomTable.tsx:177
 #: src/tables/build/BuildLineTable.tsx:74
 msgid "Includes variant stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:205
-#: src/tables/part/PartTable.tsx:153
+#: src/tables/bom/BomTable.tsx:202
+#: src/tables/part/PartTable.tsx:152
 #: src/tables/stock/StockItemTable.tsx:190
 msgid "Stock Information"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:216
+#: src/tables/bom/BomTable.tsx:213
 #: src/tables/build/BuildLineTable.tsx:179
 msgid "Consumable item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:236
+#: src/tables/bom/BomTable.tsx:233
 msgid "Show trackable items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:241
+#: src/tables/bom/BomTable.tsx:238
 msgid "Show asssmbled items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:245
+#: src/tables/bom/BomTable.tsx:242
 msgid "Show items with available stock"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:249
+#: src/tables/bom/BomTable.tsx:246
 msgid "Show items on order"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:253
+#: src/tables/bom/BomTable.tsx:250
 msgid "Show validated items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:257
-#: src/tables/bom/UsedInTable.tsx:58
+#: src/tables/bom/BomTable.tsx:254
+#: src/tables/bom/UsedInTable.tsx:54
 msgid "Show inherited items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:261
-#: src/tables/bom/UsedInTable.tsx:62
+#: src/tables/bom/BomTable.tsx:258
+#: src/tables/bom/UsedInTable.tsx:58
 msgid "Show optional items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:265
+#: src/tables/bom/BomTable.tsx:262
 msgid "Show consumable items"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:269
+#: src/tables/bom/BomTable.tsx:266
 msgid "Has Pricing"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:270
+#: src/tables/bom/BomTable.tsx:267
 msgid "Show items with pricing"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:281
+#: src/tables/bom/BomTable.tsx:278
 msgid "View BOM"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:292
+#: src/tables/bom/BomTable.tsx:289
 msgid "Validate BOM line"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:300
+#: src/tables/bom/BomTable.tsx:297
 msgid "Edit Substitutes"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:314
+#: src/tables/bom/BomTable.tsx:311
 msgid "Edit Bom Item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:316
+#: src/tables/bom/BomTable.tsx:313
 msgid "Bom item updated"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:331
+#: src/tables/bom/BomTable.tsx:328
 msgid "Delete Bom Item"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:332
+#: src/tables/bom/BomTable.tsx:329
 msgid "Bom item deleted"
 msgstr ""
 
-#: src/tables/bom/BomTable.tsx:334
+#: src/tables/bom/BomTable.tsx:331
 msgid "Are you sure you want to remove this BOM item?"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/bom/UsedInTable.tsx:63
 msgid "Show active assemblies"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:71
-#: src/tables/part/PartTable.tsx:201
+#: src/tables/bom/UsedInTable.tsx:67
+#: src/tables/part/PartTable.tsx:200
 #: src/tables/part/PartVariantTable.tsx:30
 msgid "Trackable"
 msgstr ""
 
-#: src/tables/bom/UsedInTable.tsx:72
+#: src/tables/bom/UsedInTable.tsx:68
 msgid "Show trackable assemblies"
 msgstr ""
 
@@ -4150,7 +4157,7 @@ msgstr ""
 
 #: src/tables/build/BuildOrderTable.tsx:107
 #: src/tables/purchasing/PurchaseOrderTable.tsx:56
-#: src/tables/sales/ReturnOrderTable.tsx:46
+#: src/tables/sales/ReturnOrderTable.tsx:42
 #: src/tables/sales/SalesOrderTable.tsx:53
 msgid "Filter by order status"
 msgstr ""
@@ -4185,11 +4192,11 @@ msgstr ""
 msgid "Are you sure you want to delete this address?"
 msgstr ""
 
-#: src/tables/company/CompanyTable.tsx:62
+#: src/tables/company/CompanyTable.tsx:63
 msgid "New Company"
 msgstr ""
 
-#: src/tables/company/CompanyTable.tsx:82
+#: src/tables/company/CompanyTable.tsx:83
 msgid "Add Company"
 msgstr ""
 
@@ -4209,35 +4216,35 @@ msgstr ""
 msgid "Add contact"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:161
+#: src/tables/general/AttachmentTable.tsx:162
 msgid "File uploaded"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:162
+#: src/tables/general/AttachmentTable.tsx:163
 msgid "File {0} uploaded successfully"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:173
+#: src/tables/general/AttachmentTable.tsx:174
 msgid "Upload Error"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:174
+#: src/tables/general/AttachmentTable.tsx:175
 msgid "File could not be uploaded"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:187
+#: src/tables/general/AttachmentTable.tsx:188
 msgid "Add attachment"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:206
+#: src/tables/general/AttachmentTable.tsx:207
 msgid "Add external link"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:237
+#: src/tables/general/AttachmentTable.tsx:238
 msgid "No attachments found"
 msgstr ""
 
-#: src/tables/general/AttachmentTable.tsx:252
+#: src/tables/general/AttachmentTable.tsx:253
 msgid "Upload attachment"
 msgstr ""
 
@@ -4397,13 +4404,27 @@ msgstr ""
 msgid "Message"
 msgstr ""
 
-#: src/tables/part/ParametricPartTable.tsx:80
+#: src/tables/part/ParametricPartTable.tsx:75
 #: src/tables/part/PartParameterTable.tsx:83
 msgid "Internal Units"
 msgstr ""
 
+#: src/tables/part/ParametricPartTable.tsx:80
+msgid "Edit parameter"
+msgstr ""
+
+#: src/tables/part/ParametricPartTable.tsx:133
+msgid "Add Part Parameter"
+msgstr ""
+
+#: src/tables/part/ParametricPartTable.tsx:146
+#: src/tables/part/PartParameterTable.tsx:121
+#: src/tables/part/PartParameterTable.tsx:143
+msgid "Edit Part Parameter"
+msgstr ""
+
 #: src/tables/part/PartCategoryTable.tsx:64
-#: src/tables/part/PartTable.tsx:189
+#: src/tables/part/PartTable.tsx:188
 msgid "Include Subcategories"
 msgstr ""
 
@@ -4423,13 +4444,29 @@ msgstr ""
 msgid "Add Part Category"
 msgstr ""
 
-#: src/tables/part/PartParameterTable.tsx:106
-msgid "New Part Parameter"
+#: src/tables/part/PartCategoryTemplateTable.tsx:39
+#: src/tables/part/PartCategoryTemplateTable.tsx:132
+msgid "Add Category Parameter"
 msgstr ""
 
-#: src/tables/part/PartParameterTable.tsx:121
-#: src/tables/part/PartParameterTable.tsx:143
-msgid "Edit Part Parameter"
+#: src/tables/part/PartCategoryTemplateTable.tsx:47
+msgid "Edit Category Parameter"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:55
+msgid "Delete Category Parameter"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:77
+msgid "Parameter Template"
+msgstr ""
+
+#: src/tables/part/PartCategoryTemplateTable.tsx:93
+msgid "[{0}]"
+msgstr ""
+
+#: src/tables/part/PartParameterTable.tsx:106
+msgid "New Part Parameter"
 msgstr ""
 
 #: src/tables/part/PartParameterTable.tsx:129
@@ -4463,7 +4500,7 @@ msgid "Show templates with choices"
 msgstr ""
 
 #: src/tables/part/PartParameterTemplateTable.tsx:41
-#: src/tables/part/PartTable.tsx:207
+#: src/tables/part/PartTable.tsx:206
 msgid "Has Units"
 msgstr ""
 
@@ -4487,101 +4524,101 @@ msgstr ""
 msgid "Add parameter template"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:77
+#: src/tables/part/PartTable.tsx:76
 msgid "Minimum stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:86
+#: src/tables/part/PartTable.tsx:85
 msgid "On Order"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:99
+#: src/tables/part/PartTable.tsx:98
 msgid "Build Order Allocations"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:108
+#: src/tables/part/PartTable.tsx:107
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:178
+#: src/tables/part/PartTable.tsx:177
 msgid "Filter by part active status"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:183
+#: src/tables/part/PartTable.tsx:182
 #: src/tables/stock/StockItemTable.tsx:258
 msgid "Assembly"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:184
+#: src/tables/part/PartTable.tsx:183
 msgid "Filter by assembly attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:190
+#: src/tables/part/PartTable.tsx:189
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:195
+#: src/tables/part/PartTable.tsx:194
 msgid "Component"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:196
+#: src/tables/part/PartTable.tsx:195
 msgid "Filter by component attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:202
+#: src/tables/part/PartTable.tsx:201
 msgid "Filter by trackable attribute"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:208
+#: src/tables/part/PartTable.tsx:207
 msgid "Filter by parts which have units"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:213
+#: src/tables/part/PartTable.tsx:212
 msgid "Has IPN"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:214
+#: src/tables/part/PartTable.tsx:213
 msgid "Filter by parts which have an internal part number"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:219
+#: src/tables/part/PartTable.tsx:218
 msgid "Has Stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:220
+#: src/tables/part/PartTable.tsx:219
 msgid "Filter by parts which have stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:226
+#: src/tables/part/PartTable.tsx:225
 msgid "Filter by parts which have low stock"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:231
+#: src/tables/part/PartTable.tsx:230
 msgid "Purchaseable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:232
+#: src/tables/part/PartTable.tsx:231
 msgid "Filter by parts which are purchaseable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:237
+#: src/tables/part/PartTable.tsx:236
 msgid "Salable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:238
+#: src/tables/part/PartTable.tsx:237
 msgid "Filter by parts which are salable"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:244
+#: src/tables/part/PartTable.tsx:243
 msgid "Filter by parts which are virtual"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:248
+#: src/tables/part/PartTable.tsx:247
 msgid "Not Virtual"
 msgstr ""
 
-#: src/tables/part/PartTable.tsx:276
-#: src/tables/part/PartTable.tsx:292
+#: src/tables/part/PartTable.tsx:275
+#: src/tables/part/PartTable.tsx:291
 msgid "Add Part"
 msgstr ""
 
@@ -4877,9 +4914,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr ""
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -4909,83 +4950,83 @@ msgstr ""
 msgid "Are you sure you want to delete this parameter?"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:67
+#: src/tables/purchasing/ManufacturerPartTable.tsx:63
 msgid "Create Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:82
+#: src/tables/purchasing/ManufacturerPartTable.tsx:78
 msgid "Add Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:104
+#: src/tables/purchasing/ManufacturerPartTable.tsx:100
 msgid "Manufacturer part updated"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:115
+#: src/tables/purchasing/ManufacturerPartTable.tsx:111
 msgid "Delete Manufacturer Part"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:116
+#: src/tables/purchasing/ManufacturerPartTable.tsx:112
 msgid "Manufacturer part deleted"
 msgstr ""
 
-#: src/tables/purchasing/ManufacturerPartTable.tsx:118
+#: src/tables/purchasing/ManufacturerPartTable.tsx:114
 msgid "Are you sure you want to remove this manufacturer part?"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:86
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:84
 msgid "Part Description"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:113
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:111
 msgid "Total Quantity"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:129
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:127
 msgid "Received"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:148
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:146
 msgid "Supplier Code"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:155
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:153
 msgid "Supplier Link"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:162
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:160
 msgid "Manufacturer Code"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:170
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:168
 msgid "Unit Price"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:176
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:174
 msgid "Destination"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:193
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:188
 msgid "Add Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:208
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:203
 msgid "Edit Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:216
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:211
 msgid "Delete Line Item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:227
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:222
 msgid "Receive line item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:256
 msgid "Add line item"
 msgstr ""
 
-#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:266
+#: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:261
 msgid "Receive items"
 msgstr ""
 
@@ -4994,47 +5035,47 @@ msgstr ""
 msgid "Add Purchase Order"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:91
+#: src/tables/purchasing/SupplierPartTable.tsx:88
 msgid "MPN"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:114
+#: src/tables/purchasing/SupplierPartTable.tsx:111
 msgid "Base units"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:140
+#: src/tables/purchasing/SupplierPartTable.tsx:137
 msgid "Updated"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:159
+#: src/tables/purchasing/SupplierPartTable.tsx:156
 msgid "Add Supplier Part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:162
+#: src/tables/purchasing/SupplierPartTable.tsx:159
 msgid "Supplier part created"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:171
+#: src/tables/purchasing/SupplierPartTable.tsx:168
 msgid "Add supplier part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:196
+#: src/tables/purchasing/SupplierPartTable.tsx:193
 msgid "Supplier part updated"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:207
+#: src/tables/purchasing/SupplierPartTable.tsx:204
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:208
+#: src/tables/purchasing/SupplierPartTable.tsx:205
 msgid "Supplier part deleted"
 msgstr ""
 
-#: src/tables/purchasing/SupplierPartTable.tsx:210
+#: src/tables/purchasing/SupplierPartTable.tsx:207
 msgid "Are you sure you want to remove this supplier part?"
 msgstr ""
 
-#: src/tables/sales/ReturnOrderTable.tsx:99
+#: src/tables/sales/ReturnOrderTable.tsx:95
 msgid "Add Return Order"
 msgstr ""
 
@@ -5112,6 +5153,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5213,68 +5255,68 @@ msgstr ""
 msgid "Filter by enabled status"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:69
+#: src/tables/settings/UserTable.tsx:79
 msgid "User with id {id} not found"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:71
+#: src/tables/settings/UserTable.tsx:81
 msgid "An error occurred while fetching user details"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:89
+#: src/tables/settings/UserTable.tsx:99
 msgid "Is Active"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:90
+#: src/tables/settings/UserTable.tsx:100
 msgid "Designates whether this user should be treated as active. Unselect this instead of deleting accounts."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:94
+#: src/tables/settings/UserTable.tsx:104
 msgid "Is Staff"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:95
+#: src/tables/settings/UserTable.tsx:105
 msgid "Designates whether the user can log into the django admin site."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:99
+#: src/tables/settings/UserTable.tsx:109
 msgid "Is Superuser"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:100
+#: src/tables/settings/UserTable.tsx:110
 msgid "Designates that this user has all permissions without explicitly assigning them."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:110
+#: src/tables/settings/UserTable.tsx:120
 msgid "You cannot edit the rights for the currently logged-in user."
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:139
+#: src/tables/settings/UserTable.tsx:151
 msgid "No groups"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:207
+#: src/tables/settings/UserTable.tsx:231
 msgid "Delete user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:208
+#: src/tables/settings/UserTable.tsx:232
 msgid "User deleted"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:210
+#: src/tables/settings/UserTable.tsx:234
 msgid "Are you sure you want to delete this user?"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:220
-#: src/tables/settings/UserTable.tsx:236
+#: src/tables/settings/UserTable.tsx:240
+#: src/tables/settings/UserTable.tsx:258
 msgid "Add user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:228
+#: src/tables/settings/UserTable.tsx:248
 msgid "Added user"
 msgstr ""
 
-#: src/tables/settings/UserTable.tsx:245
+#: src/tables/settings/UserTable.tsx:270
 msgid "Edit user"
 msgstr ""
 
@@ -5500,67 +5542,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:306
-#: src/tables/stock/StockItemTestResultTable.tsx:361
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:316
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:325
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:294
+#: src/tables/stock/StockItemTestResultTable.tsx:322
+msgid "Failed to record test result"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:342
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:343
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:347
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:348
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:352
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:353
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""
 
diff --git a/src/frontend/src/locales/zh/messages.po b/src/frontend/src/locales/zh/messages.po
index baccf9bb0844..ab54d8ebb7ab 100644
--- a/src/frontend/src/locales/zh/messages.po
+++ b/src/frontend/src/locales/zh/messages.po
@@ -8,7 +8,7 @@ msgstr ""
 "Language: zh\n"
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-03-21 14:12\n"
+"PO-Revision-Date: 2024-04-02 02:00\n"
 "Last-Translator: \n"
 "Language-Team: Chinese Traditional\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
@@ -22,11 +22,11 @@ msgstr ""
 msgid "Title"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copied"
 msgstr ""
 
-#: src/components/details/Details.tsx:329
+#: src/components/details/Details.tsx:327
 msgid "Copy"
 msgstr ""
 
@@ -42,16 +42,16 @@ msgstr ""
 #: src/forms/StockForms.tsx:450
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:192
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:299
-#: src/pages/stock/StockDetail.tsx:378
+#: src/pages/stock/StockDetail.tsx:403
 msgid "Remove"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:70
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:164
 #: src/contexts/ThemeContext.tsx:64
 #: src/functions/forms.tsx:196
 #: src/hooks/UseForm.tsx:39
-#: src/tables/FilterSelectDrawer.tsx:214
+#: src/tables/FilterSelectDrawer.tsx:218
 #: src/tables/InvenTreeTable.tsx:471
 #: src/tables/plugin/PluginListTable.tsx:361
 msgid "Cancel"
@@ -70,7 +70,7 @@ msgid "Clear"
 msgstr ""
 
 #: src/components/details/DetailsImage.tsx:226
-#: src/components/forms/ApiForm.tsx:472
+#: src/components/forms/ApiForm.tsx:490
 #: src/contexts/ThemeContext.tsx:64
 #: src/pages/Index/Settings/AccountSettings/AccountDetailPanel.tsx:51
 msgid "Submit"
@@ -155,64 +155,64 @@ msgstr ""
 msgid "PDF Preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:113
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:114
 msgid "Error loading template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:125
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:126
 msgid "Error saving template"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:151
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:152
 msgid "Save & Reload preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:156
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:157
 msgid "Are you sure you want to Save & Reload the preview?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:158
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:159
 msgid "To render the preview the current template needs to be replaced on the server with your modifications which may break the label if it is under active use. Do you want to proceed?"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:162
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:163
 msgid "Save & Reload"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:191
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
 msgid "Preview updated"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:192
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:193
 msgid "The preview has been updated successfully."
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:255
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
 msgid "Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:256
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:257
 msgid "Use the currently stored template from the server"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:263
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
 msgid "Save & Reload preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:264
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:265
 msgid "Save the current template and reload the preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 #: src/tables/part/PartThumbTable.tsx:199
 msgid "Select"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:322
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:323
 msgid "to preview"
 msgstr ""
 
-#: src/components/editors/TemplateEditor/TemplateEditor.tsx:366
+#: src/components/editors/TemplateEditor/TemplateEditor.tsx:367
 msgid "Error rendering template"
 msgstr ""
 
@@ -221,21 +221,21 @@ msgstr ""
 msgid "Form Error"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:327
+#: src/components/forms/ApiForm.tsx:336
 #: src/components/widgets/MarkdownEditor.tsx:146
 msgid "Success"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:411
+#: src/components/forms/ApiForm.tsx:427
 msgid "Form Errors Exist"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:509
+#: src/components/forms/ApiForm.tsx:527
 #: src/tables/plugin/PluginListTable.tsx:441
 msgid "Update"
 msgstr ""
 
-#: src/components/forms/ApiForm.tsx:529
+#: src/components/forms/ApiForm.tsx:547
 #: src/components/items/ActionDropdown.tsx:199
 #: src/functions/forms.tsx:299
 #: src/hooks/UseForm.tsx:121
@@ -256,11 +256,11 @@ msgstr ""
 #~ msgid "Check your your input and try again."
 #~ msgstr "Check your your input and try again."
 
-#: src/components/forms/AuthenticationForm.tsx:50
+#: src/components/forms/AuthenticationForm.tsx:51
 msgid "Login successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:51
+#: src/components/forms/AuthenticationForm.tsx:52
 msgid "Welcome back!"
 msgstr ""
 
@@ -268,13 +268,13 @@ msgstr ""
 #~ msgid "Login successfull"
 #~ msgstr "Login successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:58
+#: src/components/forms/AuthenticationForm.tsx:59
 msgid "Login failed"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:59
-#: src/components/forms/AuthenticationForm.tsx:79
-#: src/components/forms/AuthenticationForm.tsx:216
+#: src/components/forms/AuthenticationForm.tsx:60
+#: src/components/forms/AuthenticationForm.tsx:80
+#: src/components/forms/AuthenticationForm.tsx:217
 #: src/functions/auth.tsx:116
 msgid "Check your input and try again."
 msgstr ""
@@ -284,46 +284,46 @@ msgstr ""
 #~ msgid "Mail delivery successfull"
 #~ msgstr "Mail delivery successfull"
 
-#: src/components/forms/AuthenticationForm.tsx:70
+#: src/components/forms/AuthenticationForm.tsx:71
 #: src/functions/auth.tsx:107
 msgid "Mail delivery successful"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:71
+#: src/components/forms/AuthenticationForm.tsx:72
 msgid "Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too."
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:78
-#: src/components/forms/AuthenticationForm.tsx:215
+#: src/components/forms/AuthenticationForm.tsx:79
+#: src/components/forms/AuthenticationForm.tsx:216
 msgid "Input error"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:98
+#: src/components/forms/AuthenticationForm.tsx:99
 msgid "Or continue with other methods"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:109
-#: src/components/forms/AuthenticationForm.tsx:233
+#: src/components/forms/AuthenticationForm.tsx:110
+#: src/components/forms/AuthenticationForm.tsx:234
 msgid "Username"
 msgstr "使用者帳號"
 
-#: src/components/forms/AuthenticationForm.tsx:110
-#: src/components/forms/AuthenticationForm.tsx:234
+#: src/components/forms/AuthenticationForm.tsx:111
+#: src/components/forms/AuthenticationForm.tsx:235
 msgid "Your username"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:115
-#: src/components/forms/AuthenticationForm.tsx:246
+#: src/components/forms/AuthenticationForm.tsx:116
+#: src/components/forms/AuthenticationForm.tsx:247
 #: src/pages/Auth/Set-Password.tsx:106
 msgid "Password"
 msgstr "密碼"
 
-#: src/components/forms/AuthenticationForm.tsx:116
-#: src/components/forms/AuthenticationForm.tsx:247
+#: src/components/forms/AuthenticationForm.tsx:117
+#: src/components/forms/AuthenticationForm.tsx:248
 msgid "Your password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:128
+#: src/components/forms/AuthenticationForm.tsx:129
 #: src/pages/Auth/Reset.tsx:26
 msgid "Reset password"
 msgstr ""
@@ -336,69 +336,69 @@ msgstr ""
 #~ msgid "I will use username and password"
 #~ msgstr "I will use username and password"
 
-#: src/components/forms/AuthenticationForm.tsx:137
-#: src/components/forms/AuthenticationForm.tsx:239
+#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:240
 #: src/pages/Auth/Reset.tsx:31
 #: src/pages/Index/Settings/AccountSettings/SecurityContent.tsx:49
 msgid "Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:138
+#: src/components/forms/AuthenticationForm.tsx:139
 #: src/pages/Auth/Reset.tsx:32
 #: src/pages/Auth/Set-Password.tsx:107
 msgid "We will send you a link to login - if you are registered"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:154
+#: src/components/forms/AuthenticationForm.tsx:155
 msgid "Send me an email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:156
+#: src/components/forms/AuthenticationForm.tsx:157
 msgid "Use username and password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:165
+#: src/components/forms/AuthenticationForm.tsx:166
 msgid "Log In"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:167
+#: src/components/forms/AuthenticationForm.tsx:168
 msgid "Send Email"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:196
+#: src/components/forms/AuthenticationForm.tsx:197
 msgid "Registration successful"
 msgstr "註冊成功"
 
-#: src/components/forms/AuthenticationForm.tsx:197
+#: src/components/forms/AuthenticationForm.tsx:198
 msgid "Please confirm your email address to complete the registration"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:240
+#: src/components/forms/AuthenticationForm.tsx:241
 msgid "This will be used for a confirmation"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:252
+#: src/components/forms/AuthenticationForm.tsx:253
 msgid "Password repeat"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:253
+#: src/components/forms/AuthenticationForm.tsx:254
 msgid "Repeat password"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:265
-#: src/components/forms/AuthenticationForm.tsx:310
+#: src/components/forms/AuthenticationForm.tsx:266
+#: src/components/forms/AuthenticationForm.tsx:311
 msgid "Register"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:271
+#: src/components/forms/AuthenticationForm.tsx:272
 msgid "Or use SSO"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:302
+#: src/components/forms/AuthenticationForm.tsx:303
 msgid "Don't have an account?"
 msgstr ""
 
-#: src/components/forms/AuthenticationForm.tsx:321
+#: src/components/forms/AuthenticationForm.tsx:322
 msgid "Go back to login"
 msgstr ""
 
@@ -409,9 +409,9 @@ msgstr ""
 
 #: src/components/forms/HostOptionsForm.tsx:42
 #: src/components/forms/HostOptionsForm.tsx:69
-#: src/pages/part/CategoryDetail.tsx:71
-#: src/pages/part/PartDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:78
+#: src/pages/part/CategoryDetail.tsx:72
+#: src/pages/part/PartDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:79
 #: src/tables/machine/MachineTypeTable.tsx:65
 #: src/tables/machine/MachineTypeTable.tsx:106
 #: src/tables/machine/MachineTypeTable.tsx:210
@@ -461,7 +461,7 @@ msgstr ""
 msgid "State: <0>worker</0> ({0}), <1>plugins</1>{1}"
 msgstr ""
 
-#: src/components/forms/fields/ApiFormField.tsx:282
+#: src/components/forms/fields/ApiFormField.tsx:284
 #: src/components/nav/SearchDrawer.tsx:411
 #: src/components/widgets/MarkdownEditor.tsx:108
 #: src/components/widgets/MarkdownEditor.tsx:154
@@ -470,7 +470,7 @@ msgstr ""
 #: src/tables/InvenTreeTable.tsx:427
 #: src/tables/InvenTreeTable.tsx:503
 #: src/tables/plugin/PluginListTable.tsx:398
-#: src/tables/stock/StockItemTestResultTable.tsx:283
+#: src/tables/stock/StockItemTestResultTable.tsx:321
 msgid "Error"
 msgstr ""
 
@@ -551,7 +551,7 @@ msgid "Delete item"
 msgstr ""
 
 #: src/components/items/ActionDropdown.tsx:218
-#: src/pages/stock/StockDetail.tsx:403
+#: src/pages/stock/StockDetail.tsx:428
 #: src/tables/RowActions.tsx:32
 msgid "Duplicate"
 msgstr ""
@@ -863,7 +863,7 @@ msgstr ""
 
 #: src/components/nav/MainMenu.tsx:50
 #: src/defaults/menuItems.tsx:58
-#: src/pages/Index/Settings/SystemSettings.tsx:289
+#: src/pages/Index/Settings/SystemSettings.tsx:293
 msgid "System Settings"
 msgstr ""
 
@@ -950,7 +950,7 @@ msgstr ""
 #: src/components/nav/PartCategoryTree.tsx:153
 #: src/components/render/ModelType.tsx:60
 #: src/pages/Index/Settings/SystemSettings.tsx:163
-#: src/pages/part/CategoryDetail.tsx:196
+#: src/pages/part/CategoryDetail.tsx:197
 msgid "Part Categories"
 msgstr ""
 
@@ -988,7 +988,7 @@ msgstr ""
 
 #: src/components/nav/StockLocationTree.tsx:93
 #: src/components/render/ModelType.tsx:76
-#: src/pages/stock/LocationDetail.tsx:167
+#: src/pages/stock/LocationDetail.tsx:168
 msgid "Stock Locations"
 msgstr ""
 
@@ -1007,7 +1007,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:49
 #: src/pages/build/BuildDetail.tsx:79
-#: src/pages/part/PartDetail.tsx:739
+#: src/pages/part/PartDetail.tsx:740
 #: src/tables/part/RelatedPartTable.tsx:45
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:70
 msgid "Part"
@@ -1017,10 +1017,10 @@ msgstr ""
 #: src/defaults/links.tsx:28
 #: src/defaults/menuItems.tsx:33
 #: src/pages/Index/Settings/SystemSettings.tsx:168
-#: src/pages/part/CategoryDetail.tsx:103
-#: src/pages/part/CategoryDetail.tsx:182
-#: src/pages/part/CategoryDetail.tsx:212
-#: src/pages/part/PartDetail.tsx:624
+#: src/pages/part/CategoryDetail.tsx:104
+#: src/pages/part/CategoryDetail.tsx:183
+#: src/pages/part/CategoryDetail.tsx:213
+#: src/pages/part/PartDetail.tsx:625
 msgid "Parts"
 msgstr ""
 
@@ -1043,7 +1043,7 @@ msgstr ""
 #: src/components/render/ModelType.tsx:43
 #: src/pages/company/SupplierPartDetail.tsx:183
 #: src/pages/company/SupplierPartDetail.tsx:278
-#: src/pages/stock/StockDetail.tsx:152
+#: src/pages/stock/StockDetail.tsx:157
 #: src/tables/purchasing/SupplierPartTable.tsx:63
 msgid "Supplier Part"
 msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Supplier Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:51
-#: src/pages/company/ManufacturerPartDetail.tsx:121
+#: src/pages/company/ManufacturerPartDetail.tsx:122
 msgid "Manufacturer Part"
 msgstr ""
 
@@ -1062,21 +1062,21 @@ msgid "Manufacturer Parts"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:59
-#: src/pages/part/CategoryDetail.tsx:234
+#: src/pages/part/CategoryDetail.tsx:235
 msgid "Part Category"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:67
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:67
-#: src/pages/stock/StockDetail.tsx:424
+#: src/pages/stock/StockDetail.tsx:449
 msgid "Stock Item"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:68
 #: src/pages/company/CompanyDetail.tsx:196
-#: src/pages/stock/LocationDetail.tsx:111
-#: src/pages/stock/LocationDetail.tsx:155
-#: src/pages/stock/LocationDetail.tsx:308
+#: src/pages/stock/LocationDetail.tsx:112
+#: src/pages/stock/LocationDetail.tsx:156
+#: src/pages/stock/LocationDetail.tsx:309
 msgid "Stock Items"
 msgstr ""
 
@@ -1139,10 +1139,10 @@ msgid "Purchase Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:120
-#: src/pages/Index/Settings/SystemSettings.tsx:241
+#: src/pages/Index/Settings/SystemSettings.tsx:242
 #: src/pages/company/CompanyDetail.tsx:189
 #: src/pages/company/SupplierPartDetail.tsx:208
-#: src/pages/part/PartDetail.tsx:557
+#: src/pages/part/PartDetail.tsx:558
 #: src/pages/purchasing/PurchasingIndex.tsx:20
 msgid "Purchase Orders"
 msgstr ""
@@ -1159,14 +1159,14 @@ msgstr ""
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:108
 #: src/pages/build/BuildDetail.tsx:127
 #: src/pages/sales/SalesOrderDetail.tsx:251
-#: src/pages/stock/StockDetail.tsx:189
+#: src/pages/stock/StockDetail.tsx:205
 msgid "Sales Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:133
-#: src/pages/Index/Settings/SystemSettings.tsx:255
+#: src/pages/Index/Settings/SystemSettings.tsx:257
 #: src/pages/company/CompanyDetail.tsx:205
-#: src/pages/part/PartDetail.tsx:563
+#: src/pages/part/PartDetail.tsx:564
 #: src/pages/sales/SalesIndex.tsx:21
 msgid "Sales Orders"
 msgstr ""
@@ -1186,7 +1186,7 @@ msgid "Return Order"
 msgstr ""
 
 #: src/components/render/ModelType.tsx:148
-#: src/pages/Index/Settings/SystemSettings.tsx:269
+#: src/pages/Index/Settings/SystemSettings.tsx:272
 #: src/pages/company/CompanyDetail.tsx:212
 #: src/pages/sales/SalesIndex.tsx:27
 msgid "Return Orders"
@@ -1240,20 +1240,20 @@ msgstr ""
 #: src/defaults/links.tsx:29
 #: src/defaults/menuItems.tsx:38
 #: src/pages/Index/Settings/SystemSettings.tsx:199
-#: src/pages/part/PartDetail.tsx:480
-#: src/pages/stock/LocationDetail.tsx:288
-#: src/pages/stock/StockDetail.tsx:314
+#: src/pages/part/PartDetail.tsx:481
+#: src/pages/stock/LocationDetail.tsx:289
+#: src/pages/stock/StockDetail.tsx:339
 #: src/tables/stock/StockItemTable.tsx:57
 msgid "Stock"
 msgstr ""
 
 #: src/components/render/Stock.tsx:26
-#: src/pages/stock/StockDetail.tsx:136
+#: src/pages/stock/StockDetail.tsx:140
 msgid "Serial Number"
 msgstr ""
 
 #: src/components/render/Stock.tsx:28
-#: src/pages/stock/StockDetail.tsx:131
+#: src/pages/stock/StockDetail.tsx:135
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:92
 #: src/tables/purchasing/PurchaseOrderLineItemTable.tsx:120
 msgid "Quantity"
@@ -1989,7 +1989,7 @@ msgstr ""
 #: src/defaults/links.tsx:31
 #: src/defaults/menuItems.tsx:48
 #: src/pages/company/ManufacturerDetail.tsx:9
-#: src/pages/company/ManufacturerPartDetail.tsx:216
+#: src/pages/company/ManufacturerPartDetail.tsx:217
 #: src/pages/company/SupplierDetail.tsx:9
 #: src/pages/company/SupplierPartDetail.tsx:262
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:308
@@ -2270,7 +2270,7 @@ msgstr ""
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:58
-#: src/pages/stock/StockDetail.tsx:160
+#: src/pages/stock/StockDetail.tsx:165
 msgid "Location"
 msgstr ""
 
@@ -2328,10 +2328,6 @@ msgstr ""
 msgid "Move to default location"
 msgstr ""
 
-#: src/forms/StockForms.tsx:416
-msgid "Move"
-msgstr ""
-
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2340,11 +2336,15 @@ msgstr ""
 #: src/forms/StockForms.tsx:573
 #: src/forms/StockForms.tsx:615
 #: src/forms/StockForms.tsx:651
-#: src/pages/part/PartDetail.tsx:202
+#: src/pages/part/PartDetail.tsx:203
 #: src/tables/stock/StockItemTable.tsx:283
 msgid "In Stock"
 msgstr ""
 
+#: src/forms/StockForms.tsx:416
+msgid "Move"
+msgstr ""
+
 #: src/forms/StockForms.tsx:416
 #: src/forms/StockForms.tsx:450
 #: src/forms/StockForms.tsx:479
@@ -2358,15 +2358,15 @@ msgid "Actions"
 msgstr ""
 
 #: src/forms/StockForms.tsx:479
-#: src/pages/stock/StockDetail.tsx:370
+#: src/pages/stock/StockDetail.tsx:395
 #: src/tables/settings/TemplateTable.tsx:266
-#: src/tables/stock/StockItemTestResultTable.tsx:312
+#: src/tables/stock/StockItemTestResultTable.tsx:350
 msgid "Add"
 msgstr ""
 
 #: src/forms/StockForms.tsx:507
 #: src/pages/Index/Scan.tsx:262
-#: src/pages/stock/StockDetail.tsx:360
+#: src/pages/stock/StockDetail.tsx:385
 msgid "Count"
 msgstr ""
 
@@ -2379,12 +2379,12 @@ msgid "Remove Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:758
-#: src/pages/part/PartDetail.tsx:697
+#: src/pages/part/PartDetail.tsx:698
 msgid "Transfer Stock"
 msgstr ""
 
 #: src/forms/StockForms.tsx:767
-#: src/pages/part/PartDetail.tsx:686
+#: src/pages/part/PartDetail.tsx:687
 msgid "Count Stock"
 msgstr ""
 
@@ -2505,7 +2505,7 @@ msgstr ""
 msgid "Are you sure you want to delete this item?"
 msgstr ""
 
-#: src/pages/Auth/Logged-In.tsx:22
+#: src/pages/Auth/Logged-In.tsx:23
 msgid "Checking if you are already logged in"
 msgstr ""
 
@@ -2998,7 +2998,7 @@ msgid "Custom Units"
 msgstr ""
 
 #: src/pages/Index/Settings/AdminCenter/Index.tsx:115
-#: src/pages/part/CategoryDetail.tsx:202
+#: src/pages/part/CategoryDetail.tsx:203
 msgid "Part Parameters"
 msgstr ""
 
@@ -3119,7 +3119,7 @@ msgstr ""
 #~ msgstr "Return order"
 
 #: src/pages/Index/Settings/AdminCenter/TemplateManagementPanel.tsx:135
-#: src/pages/part/PartDetail.tsx:505
+#: src/pages/part/PartDetail.tsx:506
 msgid "Bill of Materials"
 msgstr ""
 
@@ -3154,7 +3154,7 @@ msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:106
 #: src/pages/company/SupplierPartDetail.tsx:218
-#: src/pages/part/PartDetail.tsx:526
+#: src/pages/part/PartDetail.tsx:527
 msgid "Pricing"
 msgstr ""
 
@@ -3172,19 +3172,19 @@ msgid "Reporting"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:223
-#: src/pages/part/PartDetail.tsx:575
+#: src/pages/part/PartDetail.tsx:576
 msgid "Stocktake"
 msgstr ""
 
 #: src/pages/Index/Settings/SystemSettings.tsx:228
 #: src/pages/build/BuildDetail.tsx:359
 #: src/pages/build/BuildIndex.tsx:14
-#: src/pages/part/PartDetail.tsx:512
+#: src/pages/part/PartDetail.tsx:513
 #: src/pages/sales/SalesOrderDetail.tsx:211
 msgid "Build Orders"
 msgstr ""
 
-#: src/pages/Index/Settings/SystemSettings.tsx:292
+#: src/pages/Index/Settings/SystemSettings.tsx:296
 msgid "Switch to User Setting"
 msgstr ""
 
@@ -3261,14 +3261,14 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:96
 #: src/pages/company/CompanyDetail.tsx:84
-#: src/pages/company/ManufacturerPartDetail.tsx:72
+#: src/pages/company/ManufacturerPartDetail.tsx:73
 #: src/pages/company/SupplierPartDetail.tsx:76
-#: src/pages/part/CategoryDetail.tsx:85
-#: src/pages/part/PartDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:86
+#: src/pages/part/PartDetail.tsx:124
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:102
 #: src/pages/sales/ReturnOrderDetail.tsx:68
 #: src/pages/sales/SalesOrderDetail.tsx:72
-#: src/pages/stock/LocationDetail.tsx:92
+#: src/pages/stock/LocationDetail.tsx:93
 #: src/tables/ColumnRenderers.tsx:54
 #: src/tables/machine/MachineTypeTable.tsx:69
 #: src/tables/machine/MachineTypeTable.tsx:109
@@ -3298,7 +3298,7 @@ msgid "Issued By"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:145
-#: src/pages/part/PartDetail.tsx:315
+#: src/pages/part/PartDetail.tsx:316
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:188
 #: src/pages/sales/ReturnOrderDetail.tsx:154
 #: src/pages/sales/SalesOrderDetail.tsx:158
@@ -3346,10 +3346,6 @@ msgstr ""
 #~ msgid "Build Order updated"
 #~ msgstr "Build Order updated"
 
-#: src/pages/build/BuildDetail.tsx:211
-#~ msgid "Build Order"
-#~ msgstr "Build Order"
-
 #: src/pages/build/BuildDetail.tsx:217
 msgid "Incomplete Outputs"
 msgstr ""
@@ -3376,22 +3372,22 @@ msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:258
 #: src/pages/company/CompanyDetail.tsx:244
-#: src/pages/company/ManufacturerPartDetail.tsx:168
-#: src/pages/part/PartDetail.tsx:597
+#: src/pages/company/ManufacturerPartDetail.tsx:169
+#: src/pages/part/PartDetail.tsx:598
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:244
 #: src/pages/sales/ReturnOrderDetail.tsx:197
 #: src/pages/sales/SalesOrderDetail.tsx:221
-#: src/pages/stock/StockDetail.tsx:287
+#: src/pages/stock/StockDetail.tsx:312
 msgid "Attachments"
 msgstr ""
 
 #: src/pages/build/BuildDetail.tsx:270
 #: src/pages/company/CompanyDetail.tsx:256
-#: src/pages/part/PartDetail.tsx:609
+#: src/pages/part/PartDetail.tsx:610
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:256
 #: src/pages/sales/ReturnOrderDetail.tsx:209
 #: src/pages/sales/SalesOrderDetail.tsx:233
-#: src/pages/stock/StockDetail.tsx:299
+#: src/pages/stock/StockDetail.tsx:324
 msgid "Notes"
 msgstr ""
 
@@ -3443,8 +3439,8 @@ msgstr ""
 
 #: src/pages/company/CompanyDetail.tsx:125
 #: src/pages/company/ManufacturerDetail.tsx:8
-#: src/pages/company/ManufacturerPartDetail.tsx:90
-#: src/pages/company/ManufacturerPartDetail.tsx:220
+#: src/pages/company/ManufacturerPartDetail.tsx:91
+#: src/pages/company/ManufacturerPartDetail.tsx:221
 #: src/pages/company/SupplierPartDetail.tsx:115
 msgid "Manufacturer"
 msgstr ""
@@ -3453,6 +3449,7 @@ msgstr ""
 #: src/pages/company/CustomerDetail.tsx:8
 #: src/pages/sales/ReturnOrderDetail.tsx:62
 #: src/pages/sales/SalesOrderDetail.tsx:66
+#: src/pages/stock/StockDetail.tsx:214
 #: src/tables/sales/ReturnOrderTable.tsx:60
 #: src/tables/sales/SalesOrderTable.tsx:95
 msgid "Customer"
@@ -3490,51 +3487,51 @@ msgstr ""
 msgid "Company Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:65
+#: src/pages/company/ManufacturerPartDetail.tsx:66
 #: src/pages/company/SupplierPartDetail.tsx:69
 msgid "Internal Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:80
+#: src/pages/company/ManufacturerPartDetail.tsx:81
 #: src/pages/company/SupplierPartDetail.tsx:83
 msgid "External Link"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:98
+#: src/pages/company/ManufacturerPartDetail.tsx:99
 #: src/pages/company/SupplierPartDetail.tsx:124
 #: src/tables/purchasing/ManufacturerPartTable.tsx:53
 msgid "Manufacturer Part Number"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:127
+#: src/pages/company/ManufacturerPartDetail.tsx:128
 msgid "Manufacturer Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:136
+#: src/pages/company/ManufacturerPartDetail.tsx:137
 msgid "Manufacturer Part Details"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:142
-#: src/pages/part/PartDetail.tsx:474
+#: src/pages/company/ManufacturerPartDetail.tsx:143
+#: src/pages/part/PartDetail.tsx:475
 msgid "Parameters"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:154
-#: src/pages/part/PartDetail.tsx:544
+#: src/pages/company/ManufacturerPartDetail.tsx:155
+#: src/pages/part/PartDetail.tsx:545
 #: src/pages/purchasing/PurchasingIndex.tsx:26
 msgid "Suppliers"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:186
+#: src/pages/company/ManufacturerPartDetail.tsx:187
 #: src/tables/purchasing/ManufacturerPartTable.tsx:97
 msgid "Edit Manufacturer Part"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:195
+#: src/pages/company/ManufacturerPartDetail.tsx:196
 msgid "Manufacturer Part Actions"
 msgstr ""
 
-#: src/pages/company/ManufacturerPartDetail.tsx:232
+#: src/pages/company/ManufacturerPartDetail.tsx:233
 msgid "ManufacturerPart"
 msgstr ""
 
@@ -3549,7 +3546,7 @@ msgstr ""
 
 #: src/pages/company/SupplierPartDetail.tsx:136
 #: src/pages/company/SupplierPartDetail.tsx:187
-#: src/pages/stock/StockDetail.tsx:203
+#: src/pages/stock/StockDetail.tsx:228
 msgid "Packaging"
 msgstr ""
 
@@ -3590,130 +3587,130 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:77
-#: src/pages/stock/LocationDetail.tsx:84
+#: src/pages/part/CategoryDetail.tsx:78
+#: src/pages/stock/LocationDetail.tsx:85
 #: src/tables/settings/ErrorTable.tsx:34
 msgid "Path"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:93
+#: src/pages/part/CategoryDetail.tsx:94
 msgid "Parent Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:109
+#: src/pages/part/CategoryDetail.tsx:110
 msgid "Subcategories"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:116
-#: src/pages/stock/LocationDetail.tsx:123
+#: src/pages/part/CategoryDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:124
 #: src/tables/part/PartCategoryTable.tsx:69
 msgid "Structural"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:122
+#: src/pages/part/CategoryDetail.tsx:123
 msgid "Parent default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:129
+#: src/pages/part/CategoryDetail.tsx:130
 msgid "Default location"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:140
+#: src/pages/part/CategoryDetail.tsx:141
 msgid "Top level part category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:150
-#: src/pages/part/CategoryDetail.tsx:164
+#: src/pages/part/CategoryDetail.tsx:151
+#: src/pages/part/CategoryDetail.tsx:165
 #: src/tables/part/PartCategoryTable.tsx:96
 msgid "Edit Part Category"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:159
+#: src/pages/part/CategoryDetail.tsx:160
 msgid "Category Actions"
 msgstr ""
 
-#: src/pages/part/CategoryDetail.tsx:176
+#: src/pages/part/CategoryDetail.tsx:177
 msgid "Category Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:129
+#: src/pages/part/PartDetail.tsx:130
 msgid "Variant of"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:136
+#: src/pages/part/PartDetail.tsx:137
 #: src/tables/notifications/NotificationsTable.tsx:31
 #: src/tables/part/PartCategoryTemplateTable.tsx:68
 msgid "Category"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:142
+#: src/pages/part/PartDetail.tsx:143
 msgid "Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:149
+#: src/pages/part/PartDetail.tsx:150
 msgid "Category Default Location"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:156
+#: src/pages/part/PartDetail.tsx:157
 msgid "IPN"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:163
+#: src/pages/part/PartDetail.tsx:164
 msgid "Revision"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:170
+#: src/pages/part/PartDetail.tsx:171
 #: src/tables/purchasing/ManufacturerPartParameterTable.tsx:39
 msgid "Units"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:177
+#: src/pages/part/PartDetail.tsx:178
 #: src/tables/settings/PendingTasksTable.tsx:40
 msgid "Keywords"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:184
+#: src/pages/part/PartDetail.tsx:185
 #: src/pages/purchasing/PurchaseOrderDetail.tsx:155
 #: src/pages/sales/ReturnOrderDetail.tsx:121
 #: src/pages/sales/SalesOrderDetail.tsx:125
 msgid "Link"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:196
+#: src/pages/part/PartDetail.tsx:197
 #: src/tables/build/BuildLineTable.tsx:115
 msgid "Available Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:208
+#: src/pages/part/PartDetail.tsx:209
 msgid "Minimum Stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:214
+#: src/pages/part/PartDetail.tsx:215
 #: src/tables/bom/BomTable.tsx:185
 #: src/tables/build/BuildLineTable.tsx:92
 msgid "On order"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:223
+#: src/pages/part/PartDetail.tsx:224
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:234
+#: src/pages/part/PartDetail.tsx:235
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:244
+#: src/pages/part/PartDetail.tsx:245
 #: src/tables/bom/BomTable.tsx:209
 msgid "Can Build"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:251
+#: src/pages/part/PartDetail.tsx:252
 #: src/tables/bom/BomTable.tsx:193
 #: src/tables/part/PartTable.tsx:91
 msgid "Building"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:260
+#: src/pages/part/PartDetail.tsx:261
 #: src/tables/bom/UsedInTable.tsx:62
 #: src/tables/build/BuildOrderTable.tsx:102
 #: src/tables/machine/MachineListTable.tsx:320
@@ -3725,41 +3722,41 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:265
+#: src/pages/part/PartDetail.tsx:266
 msgid "Template Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:270
+#: src/pages/part/PartDetail.tsx:271
 #: src/tables/bom/BomTable.tsx:237
 msgid "Assembled Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:275
+#: src/pages/part/PartDetail.tsx:276
 msgid "Component Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:280
+#: src/pages/part/PartDetail.tsx:281
 #: src/tables/bom/BomTable.tsx:232
 msgid "Trackable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:285
+#: src/pages/part/PartDetail.tsx:286
 msgid "Purchaseable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:290
+#: src/pages/part/PartDetail.tsx:291
 msgid "Saleable Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:295
+#: src/pages/part/PartDetail.tsx:296
 msgid "Virtual Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:303
+#: src/pages/part/PartDetail.tsx:304
 msgid "Creation Date"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:308
+#: src/pages/part/PartDetail.tsx:309
 msgid "Created By"
 msgstr ""
 
@@ -3767,84 +3764,84 @@ msgstr ""
 #~ msgid "Edit part"
 #~ msgstr "Edit part"
 
-#: src/pages/part/PartDetail.tsx:322
-msgid "Default Supplier"
-msgstr ""
-
 #: src/pages/part/PartDetail.tsx:322
 #~ msgid "Duplicate part"
 #~ msgstr "Duplicate part"
 
+#: src/pages/part/PartDetail.tsx:323
+msgid "Default Supplier"
+msgstr ""
+
 #: src/pages/part/PartDetail.tsx:327
 #~ msgid "Delete part"
 #~ msgstr "Delete part"
 
-#: src/pages/part/PartDetail.tsx:333
+#: src/pages/part/PartDetail.tsx:334
 #: src/tables/bom/BomTable.tsx:134
 #: src/tables/part/PartTable.tsx:160
 msgid "Price Range"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:368
-#: src/pages/stock/StockDetail.tsx:121
+#: src/pages/part/PartDetail.tsx:369
+#: src/pages/stock/StockDetail.tsx:125
 msgid "Last Stocktake"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:403
+#: src/pages/part/PartDetail.tsx:404
 msgid "Stocktake By"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:468
+#: src/pages/part/PartDetail.tsx:469
 msgid "Part Details"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:492
+#: src/pages/part/PartDetail.tsx:493
 msgid "Variants"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:499
-#: src/pages/stock/StockDetail.tsx:248
+#: src/pages/part/PartDetail.tsx:500
+#: src/pages/stock/StockDetail.tsx:273
 msgid "Allocations"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:519
+#: src/pages/part/PartDetail.tsx:520
 msgid "Used In"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:531
+#: src/pages/part/PartDetail.tsx:532
 #: src/pages/purchasing/PurchasingIndex.tsx:37
 msgid "Manufacturers"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:570
+#: src/pages/part/PartDetail.tsx:571
 msgid "Scheduling"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:580
+#: src/pages/part/PartDetail.tsx:581
 msgid "Test Templates"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:591
+#: src/pages/part/PartDetail.tsx:592
 msgid "Related Parts"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:648
+#: src/pages/part/PartDetail.tsx:649
 msgid "Edit Part"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:679
+#: src/pages/part/PartDetail.tsx:680
 msgid "Stock Actions"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:687
+#: src/pages/part/PartDetail.tsx:688
 msgid "Count part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:698
+#: src/pages/part/PartDetail.tsx:699
 msgid "Transfer part stock"
 msgstr ""
 
-#: src/pages/part/PartDetail.tsx:708
+#: src/pages/part/PartDetail.tsx:709
 msgid "Part Actions"
 msgstr ""
 
@@ -3931,53 +3928,53 @@ msgstr ""
 msgid "Pending Shipments"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:100
+#: src/pages/stock/LocationDetail.tsx:101
 msgid "Parent Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:117
+#: src/pages/stock/LocationDetail.tsx:118
 msgid "Sublocations"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:129
+#: src/pages/stock/LocationDetail.tsx:130
 msgid "External"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:138
+#: src/pages/stock/LocationDetail.tsx:139
 msgid "Top level stock location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:149
+#: src/pages/stock/LocationDetail.tsx:150
 msgid "Location Details"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:173
+#: src/pages/stock/LocationDetail.tsx:174
 msgid "Default Parts"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:192
-#: src/pages/stock/LocationDetail.tsx:277
+#: src/pages/stock/LocationDetail.tsx:193
+#: src/pages/stock/LocationDetail.tsx:278
 #: src/tables/stock/StockLocationTable.tsx:106
 msgid "Edit Stock Location"
 msgstr ""
 
-#: src/pages/stock/LocationDetail.tsx:272
+#: src/pages/stock/LocationDetail.tsx:273
 msgid "Location Actions"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:96
+#: src/pages/stock/StockDetail.tsx:98
 msgid "Base Part"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:103
+#: src/pages/stock/StockDetail.tsx:105
 msgid "Stock Status"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:115
+#: src/pages/stock/StockDetail.tsx:119
 msgid "Last Updated"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:142
+#: src/pages/stock/StockDetail.tsx:146
 #: src/tables/build/BuildLineTable.tsx:38
 #: src/tables/part/PartTable.tsx:116
 #: src/tables/stock/StockItemTable.tsx:154
@@ -3993,14 +3990,18 @@ msgstr ""
 #~ msgid "Unlink custom barcode from stock item"
 #~ msgstr "Unlink custom barcode from stock item"
 
-#: src/pages/stock/StockDetail.tsx:167
+#: src/pages/stock/StockDetail.tsx:172
 msgid "Installed In"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:182
+#: src/pages/stock/StockDetail.tsx:188
 msgid "Consumed By"
 msgstr ""
 
+#: src/pages/stock/StockDetail.tsx:197
+msgid "Build Order"
+msgstr ""
+
 #: src/pages/stock/StockDetail.tsx:205
 #~ msgid "Edit stock item"
 #~ msgstr "Edit stock item"
@@ -4009,54 +4010,54 @@ msgstr ""
 #~ msgid "Delete stock item"
 #~ msgstr "Delete stock item"
 
-#: src/pages/stock/StockDetail.tsx:237
+#: src/pages/stock/StockDetail.tsx:262
 msgid "Stock Details"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:243
+#: src/pages/stock/StockDetail.tsx:268
 msgid "Stock Tracking"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:255
+#: src/pages/stock/StockDetail.tsx:280
 msgid "Test Data"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:269
+#: src/pages/stock/StockDetail.tsx:294
 msgid "Installed Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:276
+#: src/pages/stock/StockDetail.tsx:301
 msgid "Child Items"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:356
+#: src/pages/stock/StockDetail.tsx:381
 msgid "Stock Operations"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:361
+#: src/pages/stock/StockDetail.tsx:386
 msgid "Count stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:371
+#: src/pages/stock/StockDetail.tsx:396
 #: src/tables/stock/StockItemTable.tsx:401
 msgid "Add stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:379
+#: src/pages/stock/StockDetail.tsx:404
 #: src/tables/stock/StockItemTable.tsx:410
 msgid "Remove stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:386
+#: src/pages/stock/StockDetail.tsx:411
 msgid "Transfer"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:387
+#: src/pages/stock/StockDetail.tsx:412
 #: src/tables/stock/StockItemTable.tsx:430
 msgid "Transfer stock"
 msgstr ""
 
-#: src/pages/stock/StockDetail.tsx:404
+#: src/pages/stock/StockDetail.tsx:429
 msgid "Duplicate stock item"
 msgstr ""
 
@@ -4144,15 +4145,15 @@ msgstr ""
 msgid "Select filter value"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:190
+#: src/tables/FilterSelectDrawer.tsx:196
 msgid "Table Filters"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:224
+#: src/tables/FilterSelectDrawer.tsx:228
 msgid "Add Filter"
 msgstr ""
 
-#: src/tables/FilterSelectDrawer.tsx:233
+#: src/tables/FilterSelectDrawer.tsx:237
 msgid "Clear Filters"
 msgstr ""
 
@@ -5161,9 +5162,13 @@ msgid "Install Plugin"
 msgstr ""
 
 #: src/tables/plugin/PluginListTable.tsx:615
-msgid "Plugin detail"
+msgid "Plugin Detail"
 msgstr ""
 
+#: src/tables/plugin/PluginListTable.tsx:615
+#~ msgid "Plugin detail"
+#~ msgstr "Plugin detail"
+
 #: src/tables/plugin/PluginListTable.tsx:644
 msgid "Sample"
 msgstr ""
@@ -5396,6 +5401,7 @@ msgid "Task ID"
 msgstr ""
 
 #: src/tables/settings/FailedTasksTable.tsx:34
+#: src/tables/stock/StockItemTestResultTable.tsx:214
 msgid "Started"
 msgstr ""
 
@@ -5784,71 +5790,79 @@ msgstr ""
 msgid "Attachment"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:239
-#: src/tables/stock/StockItemTestResultTable.tsx:313
-#: src/tables/stock/StockItemTestResultTable.tsx:368
+#: src/tables/stock/StockItemTestResultTable.tsx:209
+msgid "Test station"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:229
+msgid "Finished"
+msgstr ""
+
+#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:351
+#: src/tables/stock/StockItemTestResultTable.tsx:406
 msgid "Add Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:241
+#: src/tables/stock/StockItemTestResultTable.tsx:279
 msgid "Test result added"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:252
-#: src/tables/stock/StockItemTestResultTable.tsx:323
+#: src/tables/stock/StockItemTestResultTable.tsx:290
+#: src/tables/stock/StockItemTestResultTable.tsx:361
 msgid "Edit Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:254
+#: src/tables/stock/StockItemTestResultTable.tsx:292
 msgid "Test result updated"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:260
-#: src/tables/stock/StockItemTestResultTable.tsx:332
+#: src/tables/stock/StockItemTestResultTable.tsx:298
+#: src/tables/stock/StockItemTestResultTable.tsx:370
 msgid "Delete Test Result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:262
+#: src/tables/stock/StockItemTestResultTable.tsx:300
 msgid "Test result deleted"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:276
+#: src/tables/stock/StockItemTestResultTable.tsx:314
 msgid "Test Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:277
+#: src/tables/stock/StockItemTestResultTable.tsx:315
 msgid "Test result has been recorded"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:284
+#: src/tables/stock/StockItemTestResultTable.tsx:322
 msgid "Failed to record test result"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:301
+#: src/tables/stock/StockItemTestResultTable.tsx:339
 msgid "Pass Test"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:349
+#: src/tables/stock/StockItemTestResultTable.tsx:387
 msgid "Required"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:350
+#: src/tables/stock/StockItemTestResultTable.tsx:388
 msgid "Show results for required tests"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:354
+#: src/tables/stock/StockItemTestResultTable.tsx:392
 msgid "Include Installed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:355
+#: src/tables/stock/StockItemTestResultTable.tsx:393
 msgid "Show results for installed stock items"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:359
+#: src/tables/stock/StockItemTestResultTable.tsx:397
 msgid "Passed"
 msgstr ""
 
-#: src/tables/stock/StockItemTestResultTable.tsx:360
+#: src/tables/stock/StockItemTestResultTable.tsx:398
 msgid "Show only passed tests"
 msgstr ""